blob: 7a19e1fe0f33a736b1ad656e133abc661e028697 [file] [log] [blame]
margaretha398f4722019-01-09 19:07:20 +01001package de.ids_mannheim.korap.rewrite;
Michael Hanldaf86602016-05-12 14:31:52 +02002
Marc Kupietzd43a98d2023-09-22 17:11:46 +02003import static org.junit.jupiter.api.Assertions.assertEquals;
4import static org.junit.jupiter.api.Assertions.assertNotNull;
margarethaf68daa62017-09-21 02:11:24 +02005
Marc Kupietzd43a98d2023-09-22 17:11:46 +02006import org.junit.jupiter.api.Test;
margaretha5c67dd52018-12-18 17:27:05 +01007import org.springframework.beans.factory.annotation.Autowired;
Michael Hanl66ca71c2015-09-14 23:11:30 +02008import com.fasterxml.jackson.databind.JsonNode;
margaretha5c67dd52018-12-18 17:27:05 +01009import de.ids_mannheim.korap.config.KustvaktConfiguration;
10import de.ids_mannheim.korap.config.SpringJerseyTest;
Michael Hanlcb2d3f92016-06-02 17:34:06 +020011import de.ids_mannheim.korap.config.TestVariables;
Michael Hanldaf86602016-05-12 14:31:52 +020012import de.ids_mannheim.korap.exceptions.KustvaktException;
Michael Hanl66ca71c2015-09-14 23:11:30 +020013import de.ids_mannheim.korap.query.serialize.QuerySerializer;
Michael Hanlf0785322015-11-13 16:14:45 +010014import de.ids_mannheim.korap.user.User;
Michael Hanl66ca71c2015-09-14 23:11:30 +020015import de.ids_mannheim.korap.utils.JsonUtils;
Michael Hanldaf86602016-05-12 14:31:52 +020016
Michael Hanlfbd6fbb2015-09-14 16:10:12 +020017/**
18 * @author hanl
19 * @date 03/09/2015
20 */
margaretha5c67dd52018-12-18 17:27:05 +010021public class CollectionRewriteTest extends SpringJerseyTest {
Michael Hanl66ca71c2015-09-14 23:11:30 +020022
margaretha5c67dd52018-12-18 17:27:05 +010023 @Autowired
24 public KustvaktConfiguration config;
Marc Kupietzd43a98d2023-09-22 17:11:46 +020025
Michael Hanlf0785322015-11-13 16:14:45 +010026 @Test
margaretha35e1ca22023-11-16 22:00:01 +010027 public void testCollectionNodeRemoveCorpusIdNoErrors ()
28 throws KustvaktException {
margaretha5c67dd52018-12-18 17:27:05 +010029 RewriteHandler handler = new RewriteHandler(config);
Michael Hanl59bff812015-10-27 23:10:32 +010030 handler.add(CollectionConstraint.class);
Michael Hanl66ca71c2015-09-14 23:11:30 +020031 QuerySerializer s = new QuerySerializer();
Michael Hanlcb2d3f92016-06-02 17:34:06 +020032 s.setQuery(TestVariables.SIMPLE_ADD_QUERY, "poliqarp");
Michael Hanle56bb892016-05-25 17:34:41 +020033 s.setCollection("textClass=politik & corpusSigle=WPD");
Michael Hanl66ca71c2015-09-14 23:11:30 +020034 String result = s.toJSON();
margaretha35e1ca22023-11-16 22:00:01 +010035 JsonNode node = JsonUtils.readTree(handler.processQuery(result,
36 User.UserFactory.getUser("test_user")));
Michael Hanldaf86602016-05-12 14:31:52 +020037 assertNotNull(node);
38 assertEquals(1, node.at("/collection/operands").size());
Michael Hanl66ca71c2015-09-14 23:11:30 +020039 }
40
Michael Hanle56bb892016-05-25 17:34:41 +020041 @Test
margaretha35e1ca22023-11-16 22:00:01 +010042 public void testCollectionNodeDeletionNotification () {}
Michael Hanle56bb892016-05-25 17:34:41 +020043
Michael Hanlf0785322015-11-13 16:14:45 +010044 @Test
margaretha35e1ca22023-11-16 22:00:01 +010045 public void testCollectionNodeRemoveAllCorpusIdNoErrors ()
46 throws KustvaktException {
margaretha5c67dd52018-12-18 17:27:05 +010047 RewriteHandler handler = new RewriteHandler(config);
Michael Hanl59bff812015-10-27 23:10:32 +010048 handler.add(CollectionConstraint.class);
Michael Hanl66ca71c2015-09-14 23:11:30 +020049 QuerySerializer s = new QuerySerializer();
Michael Hanlcb2d3f92016-06-02 17:34:06 +020050 s.setQuery(TestVariables.SIMPLE_ADD_QUERY, "poliqarp");
Michael Hanle56bb892016-05-25 17:34:41 +020051 s.setCollection("corpusSigle=BRZ13 & corpusSigle=WPD");
Michael Hanl66ca71c2015-09-14 23:11:30 +020052 String result = s.toJSON();
margaretha35e1ca22023-11-16 22:00:01 +010053 JsonNode node = JsonUtils.readTree(handler.processQuery(result,
54 User.UserFactory.getUser("test_user")));
Michael Hanlcb2d3f92016-06-02 17:34:06 +020055 assertNotNull(node);
56 assertEquals(0, node.at("/collection/operands").size());
margaretha35e1ca22023-11-16 22:00:01 +010057 assertEquals(node.at("/collection/rewrites/0/@type").asText(),
58 "koral:rewrite");
Michael Hanl66ca71c2015-09-14 23:11:30 +020059 }
60
Michael Hanlf0785322015-11-13 16:14:45 +010061 @Test
margaretha35e1ca22023-11-16 22:00:01 +010062 public void testCollectionNodeRemoveGroupedCorpusIdNoErrors ()
63 throws KustvaktException {
margaretha5c67dd52018-12-18 17:27:05 +010064 RewriteHandler handler = new RewriteHandler(config);
Michael Hanl59bff812015-10-27 23:10:32 +010065 handler.add(CollectionConstraint.class);
Michael Hanl66ca71c2015-09-14 23:11:30 +020066 QuerySerializer s = new QuerySerializer();
Michael Hanlcb2d3f92016-06-02 17:34:06 +020067 s.setQuery(TestVariables.SIMPLE_ADD_QUERY, "poliqarp");
margaretha35e1ca22023-11-16 22:00:01 +010068 s.setCollection(
69 "(corpusSigle=BRZ13 & textClass=Wissenschaft) & corpusSigle=WPD");
Michael Hanl66ca71c2015-09-14 23:11:30 +020070 String result = s.toJSON();
margaretha35e1ca22023-11-16 22:00:01 +010071 JsonNode node = JsonUtils.readTree(handler.processQuery(result,
72 User.UserFactory.getUser("test_user")));
Michael Hanldaf86602016-05-12 14:31:52 +020073 assertNotNull(node);
margaretha35e1ca22023-11-16 22:00:01 +010074 assertEquals(node.at("/collection/operands/0/@type").asText(),
75 "koral:docGroup");
76 assertEquals(node.at("/collection/operands/0/operands/0/key").asText(),
77 "textClass");
78 assertEquals(node.at("/collection/rewrites/0/@type").asText(),
79 "koral:rewrite");
Michael Hanl66ca71c2015-09-14 23:11:30 +020080 }
81
Marc Kupietzd43a98d2023-09-22 17:11:46 +020082 // fixme: will probably fail when one doc groups are being refactored
Michael Hanlf0785322015-11-13 16:14:45 +010083 @Test
margaretha35e1ca22023-11-16 22:00:01 +010084 public void testCollectionCleanEmptyDocGroupNoErrors ()
85 throws KustvaktException {
margaretha5c67dd52018-12-18 17:27:05 +010086 RewriteHandler handler = new RewriteHandler(config);
Michael Hanl59bff812015-10-27 23:10:32 +010087 handler.add(CollectionConstraint.class);
Michael Hanl33829ec2016-05-28 17:03:38 +020088 handler.add(CollectionCleanRewrite.class);
Michael Hanl66ca71c2015-09-14 23:11:30 +020089 QuerySerializer s = new QuerySerializer();
Michael Hanlcb2d3f92016-06-02 17:34:06 +020090 s.setQuery(TestVariables.SIMPLE_ADD_QUERY, "poliqarp");
margaretha35e1ca22023-11-16 22:00:01 +010091 s.setCollection(
92 "(corpusSigle=BRZ13 & corpusSigle=WPD) & textClass=Wissenschaft & textClass=Sport");
Michael Hanl66ca71c2015-09-14 23:11:30 +020093 String result = s.toJSON();
margaretha35e1ca22023-11-16 22:00:01 +010094 JsonNode node = JsonUtils.readTree(handler.processQuery(result,
95 User.UserFactory.getUser("test_user")));
Michael Hanldaf86602016-05-12 14:31:52 +020096 assertNotNull(node);
Marc Kupietzd43a98d2023-09-22 17:11:46 +020097 assertEquals(node.at("/collection/@type").asText(), "koral:docGroup");
Michael Hanl8abaf9e2016-05-23 16:46:35 +020098 assertEquals(2, node.at("/collection/operands").size());
margaretha35e1ca22023-11-16 22:00:01 +010099 assertEquals(node.at("/collection/operands/0/key").asText(),
100 "textClass");
101 assertEquals(node.at("/collection/operands/1/key").asText(),
102 "textClass");
103 assertEquals(node.at("/collection/rewrites/0/@type").asText(),
104 "koral:rewrite");
Michael Hanl66ca71c2015-09-14 23:11:30 +0200105 }
106
Michael Hanlf0785322015-11-13 16:14:45 +0100107 @Test
margaretha35e1ca22023-11-16 22:00:01 +0100108 public void testCollectionCleanMoveOneDocFromGroupUpNoErrors ()
109 throws KustvaktException {
margaretha5c67dd52018-12-18 17:27:05 +0100110 RewriteHandler handler = new RewriteHandler(config);
Michael Hanl59bff812015-10-27 23:10:32 +0100111 handler.add(CollectionConstraint.class);
Michael Hanl33829ec2016-05-28 17:03:38 +0200112 handler.add(CollectionCleanRewrite.class);
Michael Hanl66ca71c2015-09-14 23:11:30 +0200113 QuerySerializer s = new QuerySerializer();
Michael Hanlcb2d3f92016-06-02 17:34:06 +0200114 s.setQuery(TestVariables.SIMPLE_ADD_QUERY, "poliqarp");
Michael Hanl86d598e2016-05-26 15:13:00 +0200115 s.setCollection("(corpusSigle=BRZ13 & textClass=wissenschaft)");
Michael Hanl66ca71c2015-09-14 23:11:30 +0200116 String result = s.toJSON();
margaretha35e1ca22023-11-16 22:00:01 +0100117 JsonNode node = JsonUtils.readTree(handler.processQuery(result,
118 User.UserFactory.getUser("test_user")));
Michael Hanldaf86602016-05-12 14:31:52 +0200119 assertNotNull(node);
Marc Kupietzd43a98d2023-09-22 17:11:46 +0200120 assertEquals(node.at("/collection/@type").asText(), "koral:doc");
121 assertEquals(node.at("/collection/key").asText(), "textClass");
122 assertEquals(node.at("/collection/value").asText(), "wissenschaft");
margaretha35e1ca22023-11-16 22:00:01 +0100123 assertEquals(node.at("/collection/rewrites/0/@type").asText(),
124 "koral:rewrite");
Michael Hanl66ca71c2015-09-14 23:11:30 +0200125 }
126
Michael Hanlf0785322015-11-13 16:14:45 +0100127 @Test
margaretha35e1ca22023-11-16 22:00:01 +0100128 public void testCollectionCleanEmptyGroupAndMoveOneFromGroupUpNoErrors ()
129 throws KustvaktException {
margaretha5c67dd52018-12-18 17:27:05 +0100130 RewriteHandler handler = new RewriteHandler(config);
Michael Hanl59bff812015-10-27 23:10:32 +0100131 handler.add(CollectionConstraint.class);
Michael Hanl33829ec2016-05-28 17:03:38 +0200132 handler.add(CollectionCleanRewrite.class);
Michael Hanl66ca71c2015-09-14 23:11:30 +0200133 QuerySerializer s = new QuerySerializer();
Michael Hanlcb2d3f92016-06-02 17:34:06 +0200134 s.setQuery(TestVariables.SIMPLE_ADD_QUERY, "poliqarp");
margaretha35e1ca22023-11-16 22:00:01 +0100135 s.setCollection(
136 "(corpusSigle=BRZ13 & corpusSigle=WPD) & textClass=Wissenschaft");
Michael Hanl66ca71c2015-09-14 23:11:30 +0200137 String result = s.toJSON();
margaretha35e1ca22023-11-16 22:00:01 +0100138 JsonNode node = JsonUtils.readTree(handler.processQuery(result,
139 User.UserFactory.getUser("test_user")));
Michael Hanldaf86602016-05-12 14:31:52 +0200140 assertNotNull(node);
Marc Kupietzd43a98d2023-09-22 17:11:46 +0200141 assertEquals(node.at("/collection/@type").asText(), "koral:doc");
142 assertEquals(node.at("/collection/key").asText(), "textClass");
margaretha35e1ca22023-11-16 22:00:01 +0100143 assertEquals(node.at("/collection/rewrites/0/@type").asText(),
144 "koral:rewrite");
Michael Hanl66ca71c2015-09-14 23:11:30 +0200145 }
146
Michael Hanlf0785322015-11-13 16:14:45 +0100147 @Test
margaretha35e1ca22023-11-16 22:00:01 +0100148 public void testCollectionRemoveAndMoveOneFromGroupUpNoErrors ()
149 throws KustvaktException {
margaretha5c67dd52018-12-18 17:27:05 +0100150 RewriteHandler handler = new RewriteHandler(config);
Michael Hanl59bff812015-10-27 23:10:32 +0100151 handler.add(CollectionConstraint.class);
Michael Hanl33829ec2016-05-28 17:03:38 +0200152 handler.add(CollectionCleanRewrite.class);
Michael Hanl66ca71c2015-09-14 23:11:30 +0200153 QuerySerializer s = new QuerySerializer();
Michael Hanlcb2d3f92016-06-02 17:34:06 +0200154 s.setQuery(TestVariables.SIMPLE_ADD_QUERY, "poliqarp");
margaretha35e1ca22023-11-16 22:00:01 +0100155 s.setCollection(
156 "(docID=random & textClass=Wissenschaft) & corpusSigle=WPD");
Michael Hanldaf86602016-05-12 14:31:52 +0200157 String org = s.toJSON();
margaretha35e1ca22023-11-16 22:00:01 +0100158 JsonNode node = JsonUtils.readTree(handler.processQuery(org,
159 User.UserFactory.getUser("test_user")));
Michael Hanldaf86602016-05-12 14:31:52 +0200160 assertNotNull(node);
Marc Kupietzd43a98d2023-09-22 17:11:46 +0200161 assertEquals(node.at("/collection/@type").asText(), "koral:docGroup");
Michael Hanldaf86602016-05-12 14:31:52 +0200162 assertEquals(2, node.at("/collection/operands").size());
margaretha35e1ca22023-11-16 22:00:01 +0100163 assertEquals(node.at("/collection/operands/0/@type").asText(),
164 "koral:doc");
165 assertEquals(node.at("/collection/operands/1/@type").asText(),
166 "koral:doc");
167 assertEquals(node.at("/collection/rewrites/0/@type").asText(),
168 "koral:rewrite");
Michael Hanl66ca71c2015-09-14 23:11:30 +0200169 }
170
Michael Hanl00b64e02016-05-24 20:24:27 +0200171 @Test
margaretha35e1ca22023-11-16 22:00:01 +0100172 public void testPublicCollectionRewriteEmptyAdd ()
173 throws KustvaktException {
margaretha5c67dd52018-12-18 17:27:05 +0100174 RewriteHandler handler = new RewriteHandler(config);
margarethae7badb32017-06-22 15:16:00 +0200175 handler.add(CollectionRewrite.class);
Michael Hanl00b64e02016-05-24 20:24:27 +0200176 QuerySerializer s = new QuerySerializer();
Michael Hanlcb2d3f92016-06-02 17:34:06 +0200177 s.setQuery(TestVariables.SIMPLE_ADD_QUERY, "poliqarp");
Michael Hanl00b64e02016-05-24 20:24:27 +0200178 String org = s.toJSON();
margaretha35e1ca22023-11-16 22:00:01 +0100179 JsonNode node = JsonUtils.readTree(handler.processQuery(org,
180 User.UserFactory.getUser("test_user")));
Michael Hanl00b64e02016-05-24 20:24:27 +0200181 assertNotNull(node);
Marc Kupietzd43a98d2023-09-22 17:11:46 +0200182 assertEquals(node.at("/collection/key").asText(), "availability");
Marc Kupietze4528ee2024-07-04 16:28:37 +0200183 assertEquals(node.at("/collection/value").asText(), "CC.*");
margaretha35e1ca22023-11-16 22:00:01 +0100184 assertEquals(node.at("/collection/rewrites/0/@type").asText(),
185 "koral:rewrite");
186 assertEquals(node.at("/collection/rewrites/0/scope").asText(),
187 "availability(FREE)");
Marc Kupietzd43a98d2023-09-22 17:11:46 +0200188 // todo:
Michael Hanl00b64e02016-05-24 20:24:27 +0200189 }
190
Michael Hanl00b64e02016-05-24 20:24:27 +0200191 @Test
margaretha35e1ca22023-11-16 22:00:01 +0100192 public void testPublicCollectionRewriteNonEmptyAdd ()
193 throws KustvaktException {
margaretha5c67dd52018-12-18 17:27:05 +0100194 RewriteHandler handler = new RewriteHandler(config);
margarethae7badb32017-06-22 15:16:00 +0200195 handler.add(CollectionRewrite.class);
Michael Hanl33829ec2016-05-28 17:03:38 +0200196 QuerySerializer s = new QuerySerializer();
Michael Hanlcb2d3f92016-06-02 17:34:06 +0200197 s.setQuery(TestVariables.SIMPLE_ADD_QUERY, "poliqarp");
Michael Hanl33829ec2016-05-28 17:03:38 +0200198 s.setCollection("(docSigle=WPD_AAA & textClass=wissenschaft)");
199 String org = s.toJSON();
margaretha35e1ca22023-11-16 22:00:01 +0100200 JsonNode node = JsonUtils.readTree(handler.processQuery(org,
201 User.UserFactory.getUser("test_user")));
Michael Hanl33829ec2016-05-28 17:03:38 +0200202 assertNotNull(node);
203 assertEquals(2, node.at("/collection/operands").size());
margaretha35e1ca22023-11-16 22:00:01 +0100204 assertEquals(node.at("/collection/operands/0/key").asText(),
205 "availability");
206 assertEquals(node.at("/collection/operands/0/value").asText(),
Marc Kupietze4528ee2024-07-04 16:28:37 +0200207 "CC.*");
margaretha35e1ca22023-11-16 22:00:01 +0100208 assertEquals(node.at("/collection/operands/1/operands/0/key").asText(),
209 "docSigle");
210 assertEquals(node.at("/collection/operands/1/operands/1/key").asText(),
211 "textClass");
212 assertEquals(node.at("/collection/rewrites/0/@type").asText(),
213 "koral:rewrite");
214 assertEquals(node.at("/collection/rewrites/0/scope").asText(),
215 "availability(FREE)");
Michael Hanl86d598e2016-05-26 15:13:00 +0200216 }
Michael Hanle56bb892016-05-25 17:34:41 +0200217
Michael Hanl86d598e2016-05-26 15:13:00 +0200218 @Test
margaretha35e1ca22023-11-16 22:00:01 +0100219 public void testRemoveCorpusFromDifferentGroups ()
220 throws KustvaktException {
margaretha5c67dd52018-12-18 17:27:05 +0100221 RewriteHandler handler = new RewriteHandler(config);
Michael Hanl86d598e2016-05-26 15:13:00 +0200222 handler.add(CollectionConstraint.class);
223 QuerySerializer s = new QuerySerializer();
Michael Hanlcb2d3f92016-06-02 17:34:06 +0200224 s.setQuery(TestVariables.SIMPLE_ADD_QUERY, "poliqarp");
margaretha35e1ca22023-11-16 22:00:01 +0100225 s.setCollection(
226 "(corpusSigle=BRZ14 & textClass=wissenschaft) | (corpusSigle=AZPR | textClass=freizeit)");
Michael Hanl86d598e2016-05-26 15:13:00 +0200227 String org = s.toJSON();
margaretha35e1ca22023-11-16 22:00:01 +0100228 JsonNode node = JsonUtils.readTree(handler.processQuery(org,
229 User.UserFactory.getUser("test_user")));
Michael Hanl86d598e2016-05-26 15:13:00 +0200230 assertNotNull(node);
Marc Kupietzd43a98d2023-09-22 17:11:46 +0200231 assertEquals(node.at("/collection/@type").asText(), "koral:docGroup");
Michael Hanl86d598e2016-05-26 15:13:00 +0200232 assertEquals(2, node.at("/collection/operands").size());
margaretha35e1ca22023-11-16 22:00:01 +0100233 assertEquals(node.at("/collection/operands/0/@type").asText(),
234 "koral:docGroup");
235 assertEquals(node.at("/collection/operands/1/@type").asText(),
236 "koral:docGroup");
Michael Hanl86d598e2016-05-26 15:13:00 +0200237 assertEquals(1, node.at("/collection/operands/0/operands").size());
238 assertEquals(1, node.at("/collection/operands/1/operands").size());
margaretha35e1ca22023-11-16 22:00:01 +0100239 assertEquals(node.at("/collection/rewrites/0/@type").asText(),
240 "koral:rewrite");
Michael Hanl86d598e2016-05-26 15:13:00 +0200241 }
242
243 @Test
margaretha35e1ca22023-11-16 22:00:01 +0100244 public void testRemoveOneCorpusAndMoveDocFromTwoGroups ()
245 throws KustvaktException {
margaretha5c67dd52018-12-18 17:27:05 +0100246 RewriteHandler handler = new RewriteHandler(config);
Michael Hanl86d598e2016-05-26 15:13:00 +0200247 handler.add(CollectionConstraint.class);
248 // todo: use this collection query also to test clean up filter! after reduction of corpusSigle (wiss | freizeit)!
Michael Hanl33829ec2016-05-28 17:03:38 +0200249 handler.add(CollectionCleanRewrite.class);
Michael Hanl86d598e2016-05-26 15:13:00 +0200250 QuerySerializer s = new QuerySerializer();
Michael Hanlcb2d3f92016-06-02 17:34:06 +0200251 s.setQuery(TestVariables.SIMPLE_ADD_QUERY, "poliqarp");
margaretha35e1ca22023-11-16 22:00:01 +0100252 s.setCollection(
253 "(corpusSigle=BRZ14 & textClass=wissenschaft) | (corpusSigle=AZPR | textClass=freizeit)");
Michael Hanl86d598e2016-05-26 15:13:00 +0200254 String org = s.toJSON();
margaretha35e1ca22023-11-16 22:00:01 +0100255 JsonNode node = JsonUtils.readTree(handler.processQuery(org,
256 User.UserFactory.getUser("test_user")));
Michael Hanl86d598e2016-05-26 15:13:00 +0200257 assertNotNull(node);
Marc Kupietzd43a98d2023-09-22 17:11:46 +0200258 assertEquals(node.at("/collection/@type").asText(), "koral:docGroup");
Michael Hanl86d598e2016-05-26 15:13:00 +0200259 assertEquals(2, node.at("/collection/operands").size());
margaretha35e1ca22023-11-16 22:00:01 +0100260 assertEquals(node.at("/collection/operands/0/@type").asText(),
261 "koral:doc");
262 assertEquals(node.at("/collection/operands/0/@type").asText(),
263 "koral:doc");
264 assertEquals(node.at("/collection/operands/0/key").asText(),
265 "textClass");
266 assertEquals(node.at("/collection/operands/0/value").asText(),
267 "wissenschaft");
268 assertEquals(node.at("/collection/operands/1/@type").asText(),
269 "koral:doc");
270 assertEquals(node.at("/collection/operands/1/key").asText(),
271 "textClass");
272 assertEquals(node.at("/collection/operands/1/value").asText(),
273 "freizeit");
274 assertEquals(node.at("/collection/rewrites/0/@type").asText(),
275 "koral:rewrite");
Michael Hanl00b64e02016-05-24 20:24:27 +0200276 }
Michael Hanlfbd6fbb2015-09-14 16:10:12 +0200277}