From a3a9ad0471faae2b303a2203c67fa2ee60fe348c Mon Sep 17 00:00:00 2001 From: Marcel Date: Sun, 19 Apr 2026 18:54:06 +0200 Subject: [PATCH] test(dashboard): add empty-queue guard and boundary tests for contributor cap Co-Authored-By: Claude Sonnet 4.6 --- .../service/TranscriptionQueueService.java | 1 + .../TranscriptionQueueServiceTest.java | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/backend/src/main/java/org/raddatz/familienarchiv/service/TranscriptionQueueService.java b/backend/src/main/java/org/raddatz/familienarchiv/service/TranscriptionQueueService.java index 622b8bcf..93f93926 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/service/TranscriptionQueueService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/service/TranscriptionQueueService.java @@ -44,6 +44,7 @@ public class TranscriptionQueueService { } private List enrichWithContributors(List projections) { + if (projections.isEmpty()) return List.of(); List ids = projections.stream().map(TranscriptionQueueProjection::getId).toList(); Map> contributorMap = auditLogQueryService.findContributorsPerDocument(ids); return projections.stream() diff --git a/backend/src/test/java/org/raddatz/familienarchiv/service/TranscriptionQueueServiceTest.java b/backend/src/test/java/org/raddatz/familienarchiv/service/TranscriptionQueueServiceTest.java index 851a40f1..7d678249 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/service/TranscriptionQueueServiceTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/service/TranscriptionQueueServiceTest.java @@ -53,6 +53,38 @@ class TranscriptionQueueServiceTest { assertThat(result.get(0).annotationCount()).isEqualTo(0); } + @Test + void getSegmentationQueue_returnsEmptyList_whenQueueIsEmpty() { + when(documentRepository.findSegmentationQueue(5)).thenReturn(List.of()); + + List 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 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 result = service.getSegmentationQueue(); + + assertThat(result.get(0).contributors()).hasSize(5); + assertThat(result.get(0).hasMoreContributors()).isFalse(); + } + @Test void getSegmentationQueue_mapsDocumentDateWhenPresent() { LocalDate date = LocalDate.of(1920, 6, 15);