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());
|
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")
|
@PutMapping("/admin/memberships/{id}/approve")
|
||||||
@PreAuthorize("hasRole('ADMIN')")
|
@PreAuthorize("hasRole('ADMIN')")
|
||||||
public ResponseEntity<Void> approveMembership(@PathVariable UUID id) {
|
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