blob: ce2f6adb9df1a8e67f50fa7043bf4476d755f3b3 [file] [log] [blame]
margaretha398f4722019-01-09 19:07:20 +01001package de.ids_mannheim.korap.rewrite;
Michael Hanldaf86602016-05-12 14:31:52 +02002
margarethaf68daa62017-09-21 02:11:24 +02003import static org.junit.Assert.assertEquals;
4import static org.junit.Assert.assertFalse;
5import static org.junit.Assert.assertNotNull;
6import static org.junit.Assert.assertTrue;
7
margaretha4fa4b062019-01-28 19:43:30 +01008import javax.ws.rs.core.MediaType;
9
margarethaf68daa62017-09-21 02:11:24 +020010import org.junit.Test;
margaretha5c67dd52018-12-18 17:27:05 +010011import org.springframework.beans.factory.annotation.Autowired;
margarethaf68daa62017-09-21 02:11:24 +020012
Michael Hanl1e18cb42015-08-06 20:57:35 +020013import com.fasterxml.jackson.databind.JsonNode;
margaretha4fa4b062019-01-28 19:43:30 +010014import com.sun.jersey.api.client.ClientResponse;
15import com.sun.jersey.api.client.ClientResponse.Status;
margarethaf68daa62017-09-21 02:11:24 +020016
margaretha4fa4b062019-01-28 19:43:30 +010017import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
18import de.ids_mannheim.korap.config.Attributes;
Michael Hanl1e18cb42015-08-06 20:57:35 +020019import de.ids_mannheim.korap.config.KustvaktConfiguration;
margaretha5c67dd52018-12-18 17:27:05 +010020import de.ids_mannheim.korap.config.SpringJerseyTest;
Michael Hanldaf86602016-05-12 14:31:52 +020021import de.ids_mannheim.korap.exceptions.KustvaktException;
Michael Hanlbadd79c2015-06-19 07:41:03 +020022import de.ids_mannheim.korap.query.serialize.QuerySerializer;
margaretha5c67dd52018-12-18 17:27:05 +010023import de.ids_mannheim.korap.user.KorAPUser;
Michael Hanl1e18cb42015-08-06 20:57:35 +020024import de.ids_mannheim.korap.utils.JsonUtils;
Michael Hanldaf86602016-05-12 14:31:52 +020025
Michael Hanl704211e2015-06-19 07:26:04 +020026/**
margaretha4fa4b062019-01-28 19:43:30 +010027 * @author hanl, margaretha
Michael Hanl704211e2015-06-19 07:26:04 +020028 * @date 18/06/2015
29 */
margaretha4fa4b062019-01-28 19:43:30 +010030//MH todo: check position and information of rewrites!
margaretha5c67dd52018-12-18 17:27:05 +010031public class FoundryRewriteTest extends SpringJerseyTest {
Michael Hanlbadd79c2015-06-19 07:41:03 +020032
margaretha4fa4b062019-01-28 19:43:30 +010033// private static String simple_add_query = "[pos=ADJA]";
34// private static String simple_rewrite_query = "[base=Haus]";
35// private static String complex_rewrite_query = "<c=INFC>";
36// private static String complex_rewrite_query2 = "[orth=laufe/i & base!=Lauf]";
37// private static String complex_rewrite_query3 = "[(base=laufen | base=gehen) & tt/pos=VVFIN]";
Michael Hanlbadd79c2015-06-19 07:41:03 +020038
margaretha5c67dd52018-12-18 17:27:05 +010039 @Autowired
40 public KustvaktConfiguration config;
41 @Autowired
42 public RewriteHandler handler;
margaretha4fa4b062019-01-28 19:43:30 +010043 @Autowired
44 private LayerMapper m;
45
46 @Test
47 public void testSearchRewriteFoundryWithUserSetting () throws KustvaktException {
48 // create user setting
49 String json = "{\"pos-foundry\":\"opennlp\"}";
50 String username = "foundryRewriteTest";
51 String pathUsername = "~" + username;
52 ClientResponse response = resource().path(API_VERSION)
53 .path(pathUsername).path("setting")
54 .header(Attributes.AUTHORIZATION, HttpAuthorizationHandler
55 .createBasicAuthorizationHeaderValue(username, "pass"))
56 .type(MediaType.APPLICATION_JSON).entity(json)
57 .put(ClientResponse.class);
58
59 assertEquals(Status.CREATED.getStatusCode(), response.getStatus());
60
61 // search
62 response = resource().path(API_VERSION).path("search")
63 .queryParam("q", "[pos=ADJA]").queryParam("ql", "poliqarp")
64 .header(Attributes.AUTHORIZATION, HttpAuthorizationHandler
65 .createBasicAuthorizationHeaderValue(username, "pass"))
66 .accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
67
68 assertEquals(ClientResponse.Status.OK.getStatusCode(),
69 response.getStatus());
70 String ent = response.getEntity(String.class);
71 JsonNode node = JsonUtils.readTree(ent);
72 assertEquals("opennlp", node.at("/query/wrap/foundry").asText());
73 assertEquals("foundry",
74 node.at("/query/wrap/rewrites/0/scope").asText());
75
76 }
77
78 @Test
79 public void testRewritePosFoundryWithUserSetting ()
80 throws KustvaktException {
81 // EM: see
82 // full/src/main/resources/db/insert/V3.6__insert_default_settings.sql
83
84 String username = "bubbles";
85 QuerySerializer s = new QuerySerializer();
86 s.setQuery("[pos=ADJA]", "poliqarp");
87 String result =
88 handler.processQuery(s.toJSON(), new KorAPUser(username));
89 JsonNode node = JsonUtils.readTree(result);
90 assertEquals("corenlp", node.at("/query/wrap/foundry").asText());
91 assertEquals("foundry",
92 node.at("/query/wrap/rewrites/0/scope").asText());
93
94 }
95
96 @Test
97 public void testRewriteLemmaFoundryWithUserSetting ()
98 throws KustvaktException {
99 String username = "bubbles";
100 QuerySerializer s = new QuerySerializer();
101 s.setQuery("[base=Haus]", "poliqarp");
102 String result =
103 handler.processQuery(s.toJSON(), new KorAPUser(username));
104 JsonNode node = JsonUtils.readTree(result);
105 // EM: only for testing, in fact, opennlp lemma does not
106 // exist!
107 assertEquals("opennlp", node.at("/query/wrap/foundry").asText());
108 assertEquals("foundry",
109 node.at("/query/wrap/rewrites/0/scope").asText());
110 }
111
margaretha5c67dd52018-12-18 17:27:05 +0100112
Michael Hanlbadd79c2015-06-19 07:41:03 +0200113 @Test
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200114 public void testDefaultLayerMapperThrowsNoException () {
Michael Hanldaf86602016-05-12 14:31:52 +0200115 assertEquals(config.getDefault_lemma(), m.findFoundry("lemma"));
116 assertEquals(config.getDefault_pos(), m.findFoundry("pos"));
margaretha798e8bd2019-02-06 15:48:58 +0100117 assertEquals(config.getDefault_orthography(), m.findFoundry("surface"));
Michael Hanldaf86602016-05-12 14:31:52 +0200118 assertEquals(config.getDefault_dep(), m.findFoundry("d"));
119 assertEquals(config.getDefault_const(), m.findFoundry("c"));
Michael Hanlbadd79c2015-06-19 07:41:03 +0200120 }
121
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200122 @Test
Michael Hanlf8fcc7a2016-06-03 17:41:07 +0200123 public void testDefaultFoundryInjectLemmaThrowsNoError ()
124 throws KustvaktException {
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200125
Michael Hanlbadd79c2015-06-19 07:41:03 +0200126 QuerySerializer s = new QuerySerializer();
Michael Hanldaf86602016-05-12 14:31:52 +0200127 s.setQuery("[base=Haus]", "poliqarp");
margaretha4fa4b062019-01-28 19:43:30 +0100128 String result = handler.processQuery(s.toJSON(), new KorAPUser("test"));
Michael Hanldaf86602016-05-12 14:31:52 +0200129 JsonNode node = JsonUtils.readTree(result);
Michael Hanldaf86602016-05-12 14:31:52 +0200130 assertNotNull(node);
131 assertFalse(node.at("/query/wrap/foundry").isMissingNode());
margaretha5c67dd52018-12-18 17:27:05 +0100132 assertEquals(config.getDefault_lemma(), node.at("/query/wrap/foundry")
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200133 .asText());
Michael Hanldaf86602016-05-12 14:31:52 +0200134 assertEquals("lemma", node.at("/query/wrap/layer").asText());
135 assertFalse(node.at("/query/wrap/rewrites").isMissingNode());
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200136 assertEquals("koral:rewrite", node.at("/query/wrap/rewrites/0/@type")
137 .asText());
Michael Hanldaf86602016-05-12 14:31:52 +0200138 }
139
Michael Hanldaf86602016-05-12 14:31:52 +0200140
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200141 @Test
Michael Hanlf8fcc7a2016-06-03 17:41:07 +0200142 public void testDefaultFoundryInjectPOSNoErrors () throws KustvaktException {
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200143
Michael Hanldaf86602016-05-12 14:31:52 +0200144 QuerySerializer s = new QuerySerializer();
Michael Hanl1e18cb42015-08-06 20:57:35 +0200145 s.setQuery("[pos=ADJA]", "poliqarp");
margaretha4fa4b062019-01-28 19:43:30 +0100146 String result = handler.processQuery(s.toJSON(), new KorAPUser("test"));
Michael Hanl1e18cb42015-08-06 20:57:35 +0200147 JsonNode node = JsonUtils.readTree(result);
Michael Hanl0f6ffd72015-08-27 19:23:15 +0200148
Michael Hanldaf86602016-05-12 14:31:52 +0200149 assertNotNull(node);
150 assertFalse(node.at("/query/wrap/foundry").isMissingNode());
margaretha5c67dd52018-12-18 17:27:05 +0100151 assertEquals(config.getDefault_pos(), node.at("/query/wrap/foundry")
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200152 .asText());
Michael Hanldaf86602016-05-12 14:31:52 +0200153 assertEquals("pos", node.at("/query/wrap/layer").asText());
154 assertFalse(node.at("/query/wrap/rewrites").isMissingNode());
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200155 assertEquals("koral:rewrite", node.at("/query/wrap/rewrites/0/@type")
156 .asText());
Michael Hanldaf86602016-05-12 14:31:52 +0200157
158 }
margaretha4fa4b062019-01-28 19:43:30 +0100159
Michael Hanl1e18cb42015-08-06 20:57:35 +0200160 @Test
Michael Hanlf8fcc7a2016-06-03 17:41:07 +0200161 public void testFoundryInjectJoinedQueryNoErrors ()
162 throws KustvaktException {
Michael Hanldaf86602016-05-12 14:31:52 +0200163
Michael Hanl1e18cb42015-08-06 20:57:35 +0200164 QuerySerializer s = new QuerySerializer();
Michael Hanl1e18cb42015-08-06 20:57:35 +0200165 s.setQuery("[orth=laufe/i & base!=Lauf]", "poliqarp");
margaretha4fa4b062019-01-28 19:43:30 +0100166 String result = handler.processQuery(s.toJSON(), new KorAPUser("test"));
Michael Hanl1e18cb42015-08-06 20:57:35 +0200167 JsonNode node = JsonUtils.readTree(result);
Michael Hanl0f6ffd72015-08-27 19:23:15 +0200168
Michael Hanldaf86602016-05-12 14:31:52 +0200169 assertNotNull(node);
170 assertEquals("koral:termGroup", node.at("/query/wrap/@type").asText());
171 assertFalse(node.at("/query/wrap/operands/0/foundry").isMissingNode());
172 assertFalse(node.at("/query/wrap/operands/0/rewrites").isMissingNode());
173 assertFalse(node.at("/query/wrap/operands/1/foundry").isMissingNode());
174 assertFalse(node.at("/query/wrap/operands/1/rewrites").isMissingNode());
Michael Hanl1e18cb42015-08-06 20:57:35 +0200175 }
176
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200177
Michael Hanl1e18cb42015-08-06 20:57:35 +0200178 @Test
Michael Hanlf8fcc7a2016-06-03 17:41:07 +0200179 public void testFoundryInjectGroupedQueryNoErrors ()
180 throws KustvaktException {
Michael Hanl1e18cb42015-08-06 20:57:35 +0200181 QuerySerializer s = new QuerySerializer();
Michael Hanlc0ed00f2016-06-23 14:33:10 +0200182 s.setQuery("[(base=laufen | tt/pos=VVFIN)]", "poliqarp");
margaretha4fa4b062019-01-28 19:43:30 +0100183 String result = handler.processQuery(s.toJSON(), new KorAPUser("test"));
Michael Hanl1e18cb42015-08-06 20:57:35 +0200184 JsonNode node = JsonUtils.readTree(result);
margaretha4fa4b062019-01-28 19:43:30 +0100185
Michael Hanlc0ed00f2016-06-23 14:33:10 +0200186 assertNotNull(node);
187 assertEquals("koral:termGroup", node.at("/query/wrap/@type").asText());
188 assertFalse(node.at("/query/wrap/operands/0/foundry")
189 .isMissingNode());
190 assertFalse(node.at("/query/wrap/operands/0/rewrites")
191 .isMissingNode());
192 assertFalse(node.at("/query/wrap/operands/1/foundry").isMissingNode());
193 assertTrue(node.at("/query/wrap/operands/1/rewrites").isMissingNode());
194 }
Michael Hanl1e18cb42015-08-06 20:57:35 +0200195
Michael Hanlc0ed00f2016-06-23 14:33:10 +0200196 @Test
margaretha5c67dd52018-12-18 17:27:05 +0100197 public void testFoundryBaseRewrite() throws KustvaktException {
Michael Hanlc0ed00f2016-06-23 14:33:10 +0200198 QuerySerializer s = new QuerySerializer();
Michael Hanlc0ed00f2016-06-23 14:33:10 +0200199 s.setQuery("[orth=laufen]", "poliqarp");
margaretha4fa4b062019-01-28 19:43:30 +0100200 String result = handler.processQuery(s.toJSON(), new KorAPUser("test"));
Michael Hanlc0ed00f2016-06-23 14:33:10 +0200201 JsonNode node = JsonUtils.readTree(result);
margaretha4fa4b062019-01-28 19:43:30 +0100202
margaretha5c67dd52018-12-18 17:27:05 +0100203 assertEquals("koral:term", node.at("/query/wrap/@type").asText());
204 assertFalse(node.at("/query/wrap/foundry")
Michael Hanldaf86602016-05-12 14:31:52 +0200205 .isMissingNode());
margaretha5c67dd52018-12-18 17:27:05 +0100206 assertFalse(node.at("/query/wrap/rewrites")
Michael Hanldaf86602016-05-12 14:31:52 +0200207 .isMissingNode());
Michael Hanl1e18cb42015-08-06 20:57:35 +0200208 }
209
Michael Hanl704211e2015-06-19 07:26:04 +0200210}