feat(community): add GET /admin/memberships endpoint with tests
This commit is contained in:
parent
0092301ef4
commit
3fbf717bd5
@ -54,6 +54,14 @@ public class MembershipController {
|
||||
return ResponseEntity.ok(membershipService.getPendingMemberships());
|
||||
}
|
||||
|
||||
@GetMapping("/admin/memberships")
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@io.swagger.v3.oas.annotations.Operation(summary = "Alle Mitgliedschaften abrufen")
|
||||
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "Liste aller Mitgliedschaften")
|
||||
public ResponseEntity<List<PendingMembershipResponse>> getAllMemberships() {
|
||||
return ResponseEntity.ok(membershipService.getAllMemberships());
|
||||
}
|
||||
|
||||
@PutMapping("/admin/memberships/{id}/approve")
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
public ResponseEntity<Void> approveMembership(@PathVariable UUID id) {
|
||||
|
||||
@ -0,0 +1,107 @@
|
||||
package at.mueller.eeg.backend.community.api;
|
||||
|
||||
import at.mueller.eeg.backend.community.api.dto.PendingMembershipResponse;
|
||||
import at.mueller.eeg.backend.community.service.MembershipService;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class MembershipControllerTest {
|
||||
|
||||
@Mock
|
||||
private MembershipService membershipService;
|
||||
|
||||
@InjectMocks
|
||||
private MembershipController membershipController;
|
||||
|
||||
@Test
|
||||
void getPendingMemberships() {
|
||||
PendingMembershipResponse response = new PendingMembershipResponse(
|
||||
UUID.randomUUID(), "user@example.com", "Max", "Mustermann",
|
||||
"AT000000123456", "Test-Community", 1, "PENDING",
|
||||
null, null
|
||||
);
|
||||
when(membershipService.getPendingMemberships()).thenReturn(List.of(response));
|
||||
|
||||
ResponseEntity<List<PendingMembershipResponse>> result = membershipController.getPendingMemberships();
|
||||
|
||||
assertEquals(200, result.getStatusCode().value());
|
||||
assertEquals(1, result.getBody().size());
|
||||
assertEquals("PENDING", result.getBody().get(0).status());
|
||||
verify(membershipService).getPendingMemberships();
|
||||
}
|
||||
|
||||
@Test
|
||||
void getPendingMemberships_empty() {
|
||||
when(membershipService.getPendingMemberships()).thenReturn(List.of());
|
||||
|
||||
ResponseEntity<List<PendingMembershipResponse>> result = membershipController.getPendingMemberships();
|
||||
|
||||
assertEquals(200, result.getStatusCode().value());
|
||||
assertTrue(result.getBody().isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
void getAllMemberships() {
|
||||
PendingMembershipResponse pending = new PendingMembershipResponse(
|
||||
UUID.randomUUID(), "pending@example.com", "Anna", "Test",
|
||||
"AT000000111111", "Community A", 1, "PENDING",
|
||||
null, null
|
||||
);
|
||||
PendingMembershipResponse active = new PendingMembershipResponse(
|
||||
UUID.randomUUID(), "active@example.com", "Bob", "Test",
|
||||
"AT000000222222", "Community B", 2, "ACTIVE",
|
||||
LocalDate.of(2025, 1, 15), null
|
||||
);
|
||||
when(membershipService.getAllMemberships()).thenReturn(List.of(pending, active));
|
||||
|
||||
ResponseEntity<List<PendingMembershipResponse>> result = membershipController.getAllMemberships();
|
||||
|
||||
assertEquals(200, result.getStatusCode().value());
|
||||
assertEquals(2, result.getBody().size());
|
||||
assertEquals("PENDING", result.getBody().get(0).status());
|
||||
assertEquals("ACTIVE", result.getBody().get(1).status());
|
||||
verify(membershipService).getAllMemberships();
|
||||
}
|
||||
|
||||
@Test
|
||||
void getAllMemberships_empty() {
|
||||
when(membershipService.getAllMemberships()).thenReturn(List.of());
|
||||
|
||||
ResponseEntity<List<PendingMembershipResponse>> result = membershipController.getAllMemberships();
|
||||
|
||||
assertEquals(200, result.getStatusCode().value());
|
||||
assertTrue(result.getBody().isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
void getAllMemberships_mixedStatuses() {
|
||||
List<PendingMembershipResponse> mixed = List.of(
|
||||
new PendingMembershipResponse(UUID.randomUUID(), "a@x.com", "A", "B",
|
||||
"AT001", "C1", 1, "PENDING", null, null),
|
||||
new PendingMembershipResponse(UUID.randomUUID(), "b@x.com", "C", "D",
|
||||
"AT002", "C2", 1, "ACTIVE", LocalDate.of(2025, 6, 1), null),
|
||||
new PendingMembershipResponse(UUID.randomUUID(), "c@x.com", "E", "F",
|
||||
"AT003", "C3", 2, "INACTIVE", null, LocalDate.of(2025, 3, 1))
|
||||
);
|
||||
when(membershipService.getAllMemberships()).thenReturn(mixed);
|
||||
|
||||
ResponseEntity<List<PendingMembershipResponse>> result = membershipController.getAllMemberships();
|
||||
|
||||
assertEquals(3, result.getBody().size());
|
||||
assertEquals("PENDING", result.getBody().get(0).status());
|
||||
assertEquals("ACTIVE", result.getBody().get(1).status());
|
||||
assertEquals("INACTIVE", result.getBody().get(2).status());
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user