feat(search): extended search, sort options, live tag filter, result count #183

Merged
marcel merged 26 commits from feat/issue-180-extended-search-sort into main 2026-04-06 19:18:12 +02:00
Showing only changes of commit 56f7282a9d - Show all commits

View File

@@ -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<Document> 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