From 2817410f94d092abfd4f66713a68135d84dd0089 Mon Sep 17 00:00:00 2001 From: Marcel Date: Wed, 15 Apr 2026 19:06:47 +0200 Subject: [PATCH] test(search): assert matchData key and snippet in controller search response Co-Authored-By: Claude Sonnet 4.6 --- .../controller/DocumentControllerTest.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/backend/src/test/java/org/raddatz/familienarchiv/controller/DocumentControllerTest.java b/backend/src/test/java/org/raddatz/familienarchiv/controller/DocumentControllerTest.java index dfce90af..816c0b9e 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/controller/DocumentControllerTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/controller/DocumentControllerTest.java @@ -25,6 +25,7 @@ import org.springframework.test.web.servlet.MockMvc; import java.time.LocalDateTime; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.UUID; @@ -113,6 +114,28 @@ class DocumentControllerTest { .andExpect(jsonPath("$.documents").isArray()); } + @Test + @WithMockUser + void search_responseBodyContainsMatchDataKey() throws Exception { + UUID docId = UUID.randomUUID(); + Document doc = Document.builder() + .id(docId) + .title("Brief an Anna") + .originalFilename("brief.pdf") + .status(DocumentStatus.UPLOADED) + .build(); + var matchData = new org.raddatz.familienarchiv.dto.SearchMatchData( + "Er schrieb einen langen Brief", List.of(), false, List.of(), List.of()); + when(documentService.searchDocuments(any(), any(), any(), any(), any(), any(), any(), any(), any(), any())) + .thenReturn(DocumentSearchResult.withMatchData(List.of(doc), Map.of(docId, matchData))); + + mockMvc.perform(get("/api/documents/search").param("q", "Brief")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.matchData").isMap()) + .andExpect(jsonPath("$.matchData." + docId + ".transcriptionSnippet") + .value("Er schrieb einen langen Brief")); + } + // ─── POST /api/documents ───────────────────────────────────────────────── @Test