Add a test for show-tokens param in match info web-service.
Change-Id: I08f474fa81f8a509c9593c4a71e7fb54f5376c9e
diff --git a/Changes b/Changes
index d41938b..4a39e12 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,7 @@
# version 1.4
- Reenable and update search POST tests [AI-assisted]
+- Add a test for show-tokens param in match info web-service.
# version 1.3
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/MatchInfoControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/MatchInfoControllerTest.java
index 41b27f7..2bf3762 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/MatchInfoControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/MatchInfoControllerTest.java
@@ -19,6 +19,40 @@
public class MatchInfoControllerTest extends SpringJerseyTest {
+ @Test
+ public void testGetMatchInfoShowTokens () throws KustvaktException {
+ Response response = target().path(API_VERSION).path("corpus")
+ .path("GOE").path("AGA").path("01784").path("p4145-4146")
+ .queryParam("foundry", "opennlp")
+ .queryParam("show-tokens", "true")
+ .request().get();
+ assertEquals(Status.OK.getStatusCode(), response.getStatus());
+ String entity = response.readEntity(String.class);
+ JsonNode node = JsonUtils.readTree(entity);
+ assertNotNull(node);
+
+ // Check expected JSON structure
+ assertTrue(node.at("/hasSnippet").asBoolean());
+ assertTrue(node.at("/hasTokens").asBoolean());
+
+ // Check snippet contains expected content
+ String snippet = node.at("/snippet").asText();
+ assertNotNull(snippet);
+ assertTrue(snippet.contains("<span class=\"context-left\"></span><span class=\"match\">"));
+ assertTrue(snippet.contains("<span title=\"opennlp/p:PPER\">es</span>"));
+ assertTrue(snippet.contains("<mark><span title=\"opennlp/p:NN\">Wasser</span></mark>"));
+
+ // Check tokens match array
+ JsonNode tokensMatch = node.at("/tokens/match");
+ assertNotNull(tokensMatch);
+ assertTrue(tokensMatch.isArray());
+ assertEquals(29, tokensMatch.size());
+ assertEquals("es", tokensMatch.get(0).asText());
+ assertEquals("war", tokensMatch.get(1).asText());
+ assertEquals("Wasser", tokensMatch.get(20).asText());
+ assertEquals("erreichten", tokensMatch.get(28).asText());
+ }
+
@Test
public void testGetMatchInfoPublicCorpus () throws KustvaktException {
Response response = target().path(API_VERSION).path("corpus")
@@ -137,4 +171,4 @@
+ "match-GOE/AGD/00000-p75-76 is not allowed.",
node.at("/errors/0/1").asText());
}
-}
+}
\ No newline at end of file