package com.superbiz.agent.service; import com.fasterxml.jackson.databind.ObjectMapper; import com.superbiz.agent.dto.ComparableRetrievalResult; import org.junit.jupiter.api.Test; import org.springframework.ai.document.Document; import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; class RetrievalResultNormalizerTest { private final RetrievalResultNormalizer normalizer = new RetrievalResultNormalizer(new ObjectMapper()); @Test void fromCurrentParsesMetadataAndLabelsDistanceScore() { VectorSearchService.SearchResult result = new VectorSearchService.SearchResult(); result.setId("vec-1"); result.setMetadata("{\"docId\":\"doc-1\",\"_source\":\"docs/api.md\",\"title\":\"API\",\"breadcrumb\":\"A > B\",\"category\":\"api\"}"); result.setContent("abcdef"); result.setScore(0.25f); ComparableRetrievalResult comparable = normalizer.fromCurrent(result, 1, 3); assertEquals("current", comparable.getPath()); assertEquals("docs/api.md", comparable.getSource()); assertEquals("doc-1", comparable.getDocId()); assertEquals("API", comparable.getTitle()); assertEquals("A > B", comparable.getBreadcrumb()); assertEquals("api", comparable.getCategory()); assertEquals("abc...", comparable.getContentPreview()); assertEquals("l2_distance", comparable.getScoreLabel()); assertEquals(0.25, comparable.getScoreValue(), 0.0001); } @Test void fromSidecarNormalizesDocumentMetadataAndLabelsSimilarityScore() { Document document = Document.builder() .id("doc-vector") .text("sidecar content") .metadata(Map.of( "docId", "doc-2", "_source", "docs/sidecar.md", "title", "Sidecar", "breadcrumb", "Root > Sidecar", "category", "rag" )) .score(0.91) .build(); ComparableRetrievalResult comparable = normalizer.fromSidecar(document, 2, 100); assertEquals("sidecar", comparable.getPath()); assertEquals(2, comparable.getRank()); assertEquals("docs/sidecar.md", comparable.getSource()); assertEquals("similarity", comparable.getScoreLabel()); assertEquals(0.91, comparable.getScoreValue(), 0.0001); } }