Merge branch 'mimocode/misty-squid'
This commit is contained in:
commit
0092301ef4
@ -143,6 +143,37 @@ public class MembershipService {
|
||||
.toList();
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public List<PendingMembershipResponse> getAllMemberships() {
|
||||
List<Membership> allMemberships = membershipRepository.findAllWithDetails();
|
||||
|
||||
List<UUID> userIds = allMemberships.stream()
|
||||
.map(m -> m.getMeteringPoint().getUserId())
|
||||
.distinct()
|
||||
.toList();
|
||||
|
||||
Map<UUID, User> usersById = userRepository.findAllById(userIds).stream()
|
||||
.collect(Collectors.toMap(User::getId, user -> user));
|
||||
|
||||
return allMemberships.stream()
|
||||
.map(m -> {
|
||||
User user = usersById.get(m.getMeteringPoint().getUserId());
|
||||
return new PendingMembershipResponse(
|
||||
m.getId(),
|
||||
user != null ? user.getEmail() : "unknown",
|
||||
user != null ? user.getFirstName() : "unknown",
|
||||
user != null ? user.getLastName() : "unknown",
|
||||
m.getMeteringPoint().getAtNumber(),
|
||||
m.getEnergyCommunity().getName(),
|
||||
m.getPriorityLevel(),
|
||||
m.getStatus().name(),
|
||||
m.getValidFrom(),
|
||||
m.getValidTo()
|
||||
);
|
||||
})
|
||||
.toList();
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public List<PendingMembershipResponse> getPendingMemberships() {
|
||||
List<Membership> pendingMemberships = membershipRepository.findPendingWithDetails();
|
||||
|
||||
@ -259,6 +259,48 @@ class MembershipServiceTest {
|
||||
assertNull(result.get(0).validTo());
|
||||
}
|
||||
|
||||
@Test
|
||||
void getAllMemberships_returnsAllMemberships() {
|
||||
when(membershipRepository.findAllWithDetails()).thenReturn(List.of(testMembership));
|
||||
when(userRepository.findAllById(List.of(testUserId))).thenReturn(List.of(testUser));
|
||||
|
||||
List<PendingMembershipResponse> result = membershipService.getAllMemberships();
|
||||
|
||||
assertEquals(1, result.size());
|
||||
assertEquals(testMembershipId, result.get(0).id());
|
||||
assertEquals("test@example.com", result.get(0).userEmail());
|
||||
assertEquals("Test", result.get(0).firstName());
|
||||
assertEquals("PENDING", result.get(0).status());
|
||||
}
|
||||
|
||||
@Test
|
||||
void getAllMemberships_returnsEmptyListWhenNoMemberships() {
|
||||
when(membershipRepository.findAllWithDetails()).thenReturn(List.of());
|
||||
|
||||
List<PendingMembershipResponse> result = membershipService.getAllMemberships();
|
||||
|
||||
assertTrue(result.isEmpty());
|
||||
verify(userRepository).findAllById(List.of());
|
||||
}
|
||||
|
||||
@Test
|
||||
void getAllMemberships_handlesMissingUser() {
|
||||
Membership membershipWithUnknownUser = new Membership();
|
||||
membershipWithUnknownUser.setId(UUID.randomUUID());
|
||||
membershipWithUnknownUser.setMeteringPoint(testMeteringPoint);
|
||||
membershipWithUnknownUser.setEnergyCommunity(testCommunity);
|
||||
membershipWithUnknownUser.setPriorityLevel(1);
|
||||
membershipWithUnknownUser.setStatus(MembershipStatus.ACTIVE);
|
||||
|
||||
when(membershipRepository.findAllWithDetails()).thenReturn(List.of(membershipWithUnknownUser));
|
||||
when(userRepository.findAllById(List.of(testUserId))).thenReturn(List.of());
|
||||
|
||||
List<PendingMembershipResponse> result = membershipService.getAllMemberships();
|
||||
|
||||
assertEquals(1, result.size());
|
||||
assertEquals("unknown", result.get(0).userEmail());
|
||||
}
|
||||
|
||||
@Test
|
||||
void getPendingMemberships_setsValidDatesFromEntity() {
|
||||
testMembership.setStatus(MembershipStatus.ACTIVE);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user