From 56f7282a9d3aefd06246478a56d634d890bd2c25 Mon Sep 17 00:00:00 2001 From: Marcel Date: Mon, 6 Apr 2026 16:45:01 +0200 Subject: [PATCH] test(search): add empty-receivers edge case for RECEIVER sort Co-Authored-By: Claude Sonnet 4.6 --- .../service/DocumentServiceTest.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/backend/src/test/java/org/raddatz/familienarchiv/service/DocumentServiceTest.java b/backend/src/test/java/org/raddatz/familienarchiv/service/DocumentServiceTest.java index 2cd18fca..67db2519 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/service/DocumentServiceTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/service/DocumentServiceTest.java @@ -1294,6 +1294,26 @@ class DocumentServiceTest { assertThat(result).extracting(Document::getTitle).containsExactly("Has Sender", "No Sender"); } + // ─── searchDocuments — RECEIVER sort, empty receivers ─────────────────────── + + @Test + void searchDocuments_receiverSort_emptyReceiversSortsToEnd() { + Person alice = Person.builder().id(UUID.randomUUID()).firstName("Alice").lastName("Maier").build(); + Document withReceiver = Document.builder().id(UUID.randomUUID()).title("Has Receiver") + .receivers(new HashSet<>(Set.of(alice))).build(); + Document noReceivers = Document.builder().id(UUID.randomUUID()).title("No Receivers") + .receivers(new HashSet<>()).build(); + + when(documentRepository.findAll(any(org.springframework.data.jpa.domain.Specification.class))) + .thenReturn(List.of(noReceivers, withReceiver)); + + List result = documentService.searchDocuments( + null, null, null, null, null, null, null, null, DocumentSort.RECEIVER, "asc"); + + assertThat(result).extracting(Document::getTitle) + .containsExactly("Has Receiver", "No Receivers"); + } + @Test void searchDocuments_senderSort_nullLastNameSortsToEnd() { // Without fix: null lastName produces sort key "null Smith" which compares