test(dashboard): add empty-queue guard and boundary tests for contributor cap
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -44,6 +44,7 @@ public class TranscriptionQueueService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private List<TranscriptionQueueItemDTO> enrichWithContributors(List<TranscriptionQueueProjection> projections) {
|
private List<TranscriptionQueueItemDTO> enrichWithContributors(List<TranscriptionQueueProjection> projections) {
|
||||||
|
if (projections.isEmpty()) return List.of();
|
||||||
List<UUID> ids = projections.stream().map(TranscriptionQueueProjection::getId).toList();
|
List<UUID> ids = projections.stream().map(TranscriptionQueueProjection::getId).toList();
|
||||||
Map<UUID, List<ActivityActorDTO>> contributorMap = auditLogQueryService.findContributorsPerDocument(ids);
|
Map<UUID, List<ActivityActorDTO>> contributorMap = auditLogQueryService.findContributorsPerDocument(ids);
|
||||||
return projections.stream()
|
return projections.stream()
|
||||||
|
|||||||
@@ -53,6 +53,38 @@ class TranscriptionQueueServiceTest {
|
|||||||
assertThat(result.get(0).annotationCount()).isEqualTo(0);
|
assertThat(result.get(0).annotationCount()).isEqualTo(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getSegmentationQueue_returnsEmptyList_whenQueueIsEmpty() {
|
||||||
|
when(documentRepository.findSegmentationQueue(5)).thenReturn(List.of());
|
||||||
|
|
||||||
|
List<TranscriptionQueueItemDTO> result = service.getSegmentationQueue();
|
||||||
|
|
||||||
|
assertThat(result).isEmpty();
|
||||||
|
verifyNoInteractions(auditLogQueryService);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getSegmentationQueue_returnsAllFive_andHasMoreFalse_whenExactlyFiveContributors() {
|
||||||
|
UUID docId = UUID.randomUUID();
|
||||||
|
TranscriptionQueueProjection proj = mockQueueProjection(docId, "Brief", null, 0, 0, 0);
|
||||||
|
when(documentRepository.findSegmentationQueue(5)).thenReturn(List.of(proj));
|
||||||
|
|
||||||
|
List<ActivityActorDTO> fiveActors = List.of(
|
||||||
|
new ActivityActorDTO("A1", "#111", "Alice One"),
|
||||||
|
new ActivityActorDTO("A2", "#222", "Alice Two"),
|
||||||
|
new ActivityActorDTO("A3", "#333", "Alice Three"),
|
||||||
|
new ActivityActorDTO("A4", "#444", "Alice Four"),
|
||||||
|
new ActivityActorDTO("A5", "#555", "Alice Five")
|
||||||
|
);
|
||||||
|
when(auditLogQueryService.findContributorsPerDocument(List.of(docId)))
|
||||||
|
.thenReturn(Map.of(docId, fiveActors));
|
||||||
|
|
||||||
|
List<TranscriptionQueueItemDTO> result = service.getSegmentationQueue();
|
||||||
|
|
||||||
|
assertThat(result.get(0).contributors()).hasSize(5);
|
||||||
|
assertThat(result.get(0).hasMoreContributors()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void getSegmentationQueue_mapsDocumentDateWhenPresent() {
|
void getSegmentationQueue_mapsDocumentDateWhenPresent() {
|
||||||
LocalDate date = LocalDate.of(1920, 6, 15);
|
LocalDate date = LocalDate.of(1920, 6, 15);
|
||||||
|
|||||||
Reference in New Issue
Block a user