Skip to content

Commit 9b14d00

Browse files
committed
test(curation): test curation sets
1 parent 5451b3c commit 9b14d00

File tree

3 files changed

+258
-0
lines changed

3 files changed

+258
-0
lines changed
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
package org.typesense.api;
2+
3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
import org.junit.jupiter.api.AfterEach;
6+
import org.junit.jupiter.api.BeforeEach;
7+
import org.junit.jupiter.api.Test;
8+
import org.typesense.model.CurationItemCreateSchema;
9+
import org.typesense.model.CurationSetCreateSchema;
10+
import org.typesense.model.CurationSetSchema;
11+
import org.typesense.model.CurationSetDeleteSchema;
12+
import org.typesense.model.CurationRule;
13+
import org.typesense.model.CurationInclude;
14+
import org.typesense.model.CurationExclude;
15+
16+
import static org.junit.jupiter.api.Assertions.*;
17+
18+
class CurationSetTest {
19+
20+
private Client client;
21+
private Helper helper;
22+
private String curationSetName;
23+
24+
@BeforeEach
25+
void setUp() throws Exception {
26+
helper = new Helper();
27+
client = helper.getClient();
28+
29+
if (!Helper.isV30OrAbove(client)) {
30+
org.junit.jupiter.api.Assumptions.assumeTrue(false, "Skipping test - requires Typesense v30 or above");
31+
}
32+
33+
helper.teardown();
34+
helper.createTestCollection();
35+
curationSetName = "test-curation-set-" + System.currentTimeMillis();
36+
}
37+
38+
@AfterEach
39+
void tearDown() throws Exception {
40+
try {
41+
client.curationSet(curationSetName).delete();
42+
} catch (Exception e) {
43+
}
44+
helper.teardown();
45+
}
46+
47+
@Test
48+
void testRetrieve() throws Exception {
49+
CurationSetCreateSchema curationSetData = helper.createTestCurationSetData();
50+
client.curationSets().upsert(curationSetName, curationSetData);
51+
52+
CurationSetCreateSchema result = client.curationSet(curationSetName).retrieve();
53+
54+
assertNotNull(result);
55+
assertEquals(1, result.getItems().size());
56+
assertEquals("dummy", result.getItems().get(0).getId());
57+
assertEquals("apple", result.getItems().get(0).getRule().getQuery());
58+
assertNotNull(result.getItems().get(0).getIncludes());
59+
assertEquals(2, result.getItems().get(0).getIncludes().size());
60+
assertEquals("422", result.getItems().get(0).getIncludes().get(0).getId());
61+
assertEquals("54", result.getItems().get(0).getIncludes().get(1).getId());
62+
assertNotNull(result.getItems().get(0).getExcludes());
63+
assertEquals(1, result.getItems().get(0).getExcludes().size());
64+
assertEquals("287", result.getItems().get(0).getExcludes().get(0).getId());
65+
}
66+
67+
@Test
68+
void testUpdate() throws Exception {
69+
CurationSetCreateSchema originalData = helper.createTestCurationSetData();
70+
client.curationSets().upsert(curationSetName, originalData);
71+
72+
CurationRule updatedRule = new CurationRule();
73+
updatedRule.setQuery("updated query");
74+
updatedRule.setMatch(CurationRule.MatchEnum.EXACT);
75+
76+
CurationInclude include1 = new CurationInclude();
77+
include1.setId("422");
78+
include1.setPosition(1);
79+
CurationInclude include2 = new CurationInclude();
80+
include2.setId("54");
81+
include2.setPosition(2);
82+
CurationInclude include3 = new CurationInclude();
83+
include3.setId("999");
84+
include3.setPosition(3);
85+
86+
CurationExclude exclude1 = new CurationExclude();
87+
exclude1.setId("287");
88+
89+
CurationItemCreateSchema updatedItem = new CurationItemCreateSchema();
90+
updatedItem.setId("dummy");
91+
updatedItem.setRule(updatedRule);
92+
updatedItem.setIncludes(Arrays.asList(include1, include2, include3));
93+
updatedItem.setExcludes(Arrays.asList(exclude1));
94+
updatedItem.setRemoveMatchedTokens(true);
95+
updatedItem.setFilterBy("category:=Electronics");
96+
updatedItem.setStopProcessing(true);
97+
98+
CurationSetCreateSchema updatedData = new CurationSetCreateSchema();
99+
updatedData.setItems(Arrays.asList(updatedItem));
100+
updatedData.setDescription("Updated test curation set");
101+
102+
CurationSetSchema result = client.curationSet(curationSetName).upsert(updatedData);
103+
104+
assertEquals(curationSetName, result.getName());
105+
assertEquals(1, result.getItems().size());
106+
assertEquals("dummy", result.getItems().get(0).getId());
107+
assertEquals("updated query", result.getItems().get(0).getRule().getQuery());
108+
assertNotNull(result.getItems().get(0).getIncludes());
109+
assertEquals(3, result.getItems().get(0).getIncludes().size());
110+
assertEquals("422", result.getItems().get(0).getIncludes().get(0).getId());
111+
assertEquals("54", result.getItems().get(0).getIncludes().get(1).getId());
112+
assertEquals("999", result.getItems().get(0).getIncludes().get(2).getId());
113+
assertNotNull(result.getItems().get(0).getExcludes());
114+
assertEquals(1, result.getItems().get(0).getExcludes().size());
115+
assertEquals("287", result.getItems().get(0).getExcludes().get(0).getId());
116+
}
117+
118+
@Test
119+
void testDelete() throws Exception {
120+
CurationSetCreateSchema curationSetData = helper.createTestCurationSetData();
121+
client.curationSets().upsert(curationSetName, curationSetData);
122+
123+
CurationSetDeleteSchema result = client.curationSet(curationSetName).delete();
124+
125+
assertEquals(curationSetName, result.getName());
126+
127+
assertThrows(Exception.class, () -> {
128+
client.curationSet(curationSetName).retrieve();
129+
});
130+
}
131+
}
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package org.typesense.api;
2+
3+
import java.util.Arrays;
4+
import org.junit.jupiter.api.AfterEach;
5+
import org.junit.jupiter.api.BeforeEach;
6+
import org.junit.jupiter.api.Test;
7+
import org.typesense.model.CurationItemCreateSchema;
8+
import org.typesense.model.CurationSetCreateSchema;
9+
import org.typesense.model.CurationSetSchema;
10+
11+
import static org.junit.jupiter.api.Assertions.*;
12+
13+
class CurationSetsTest {
14+
15+
private Client client;
16+
private Helper helper;
17+
private String curationSetName;
18+
19+
@BeforeEach
20+
void setUp() throws Exception {
21+
helper = new Helper();
22+
client = helper.getClient();
23+
24+
if (!Helper.isV30OrAbove(client)) {
25+
org.junit.jupiter.api.Assumptions.assumeTrue(false, "Skipping test - requires Typesense v30 or above");
26+
}
27+
28+
helper.teardown();
29+
helper.createTestCollection();
30+
curationSetName = "test-curation-set-" + System.currentTimeMillis();
31+
}
32+
33+
@AfterEach
34+
void tearDown() throws Exception {
35+
try {
36+
client.curationSet(curationSetName).delete();
37+
} catch (Exception e) {
38+
}
39+
helper.teardown();
40+
}
41+
42+
@Test
43+
void testUpsert() throws Exception {
44+
CurationSetCreateSchema curationSetData = helper.createTestCurationSetData();
45+
46+
CurationSetSchema result = client.curationSets().upsert(curationSetName, curationSetData);
47+
48+
assertEquals(curationSetName, result.getName());
49+
assertEquals(1, result.getItems().size());
50+
assertEquals("dummy", result.getItems().get(0).getId());
51+
assertEquals("apple", result.getItems().get(0).getRule().getQuery());
52+
assertNotNull(result.getItems().get(0).getIncludes());
53+
assertEquals(2, result.getItems().get(0).getIncludes().size());
54+
assertEquals("422", result.getItems().get(0).getIncludes().get(0).getId());
55+
assertEquals("54", result.getItems().get(0).getIncludes().get(1).getId());
56+
assertNotNull(result.getItems().get(0).getExcludes());
57+
assertEquals(1, result.getItems().get(0).getExcludes().size());
58+
assertEquals("287", result.getItems().get(0).getExcludes().get(0).getId());
59+
}
60+
61+
@Test
62+
void testRetrieve() throws Exception {
63+
CurationSetCreateSchema curationSetData = helper.createTestCurationSetData();
64+
client.curationSets().upsert(curationSetName, curationSetData);
65+
66+
CurationSetSchema[] result = client.curationSets().retrieve();
67+
68+
assertNotNull(result);
69+
assertTrue(result.length >= 1);
70+
71+
CurationSetSchema foundCurationSet = null;
72+
for (CurationSetSchema cs : result) {
73+
if (curationSetName.equals(cs.getName())) {
74+
foundCurationSet = cs;
75+
break;
76+
}
77+
}
78+
79+
assertNotNull(foundCurationSet);
80+
assertEquals(curationSetName, foundCurationSet.getName());
81+
assertEquals(1, foundCurationSet.getItems().size());
82+
assertEquals("dummy", foundCurationSet.getItems().get(0).getId());
83+
assertEquals("apple", foundCurationSet.getItems().get(0).getRule().getQuery());
84+
assertNotNull(foundCurationSet.getItems().get(0).getIncludes());
85+
assertEquals(2, foundCurationSet.getItems().get(0).getIncludes().size());
86+
assertEquals("422", foundCurationSet.getItems().get(0).getIncludes().get(0).getId());
87+
assertEquals("54", foundCurationSet.getItems().get(0).getIncludes().get(1).getId());
88+
assertNotNull(foundCurationSet.getItems().get(0).getExcludes());
89+
assertEquals(1, foundCurationSet.getItems().get(0).getExcludes().size());
90+
assertEquals("287", foundCurationSet.getItems().get(0).getExcludes().get(0).getId());
91+
}
92+
}

src/test/java/org/typesense/api/Helper.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@
2424
import org.typesense.model.SynonymSetCreateSchema;
2525
import org.typesense.model.SynonymSetSchema;
2626
import org.typesense.model.SynonymSetsRetrieveSchema;
27+
import org.typesense.model.CurationItemCreateSchema;
28+
import org.typesense.model.CurationSetCreateSchema;
29+
import org.typesense.model.CurationRule;
30+
import org.typesense.model.CurationInclude;
31+
import org.typesense.model.CurationExclude;
2732
import org.typesense.resources.Node;
2833
import org.typesense.model.AnalyticsRuleCreate;
2934
import org.typesense.model.AnalyticsRuleCreateParams;
@@ -211,6 +216,36 @@ public SynonymSetCreateSchema createTestSynonymSetData() {
211216
return synonymSetData;
212217
}
213218

219+
public CurationSetCreateSchema createTestCurationSetData() {
220+
CurationRule rule = new CurationRule();
221+
rule.setQuery("apple");
222+
rule.setMatch(CurationRule.MatchEnum.EXACT);
223+
224+
CurationInclude include1 = new CurationInclude();
225+
include1.setId("422");
226+
include1.setPosition(1);
227+
CurationInclude include2 = new CurationInclude();
228+
include2.setId("54");
229+
include2.setPosition(2);
230+
231+
CurationExclude exclude1 = new CurationExclude();
232+
exclude1.setId("287");
233+
234+
CurationItemCreateSchema curationItem = new CurationItemCreateSchema();
235+
curationItem.setId("dummy");
236+
curationItem.setRule(rule);
237+
curationItem.setIncludes(Arrays.asList(include1, include2));
238+
curationItem.setExcludes(Arrays.asList(exclude1));
239+
curationItem.setRemoveMatchedTokens(true);
240+
curationItem.setFilterBy("category:=Electronics");
241+
curationItem.setStopProcessing(true);
242+
243+
CurationSetCreateSchema curationSetData = new CurationSetCreateSchema();
244+
curationSetData.setItems(Arrays.asList(curationItem));
245+
curationSetData.setDescription("Test curation set");
246+
return curationSetData;
247+
}
248+
214249
public void teardown() throws Exception {
215250
CollectionResponse[] collectionResponses = client.collections().retrieve();
216251
for (CollectionResponse c : collectionResponses) {

0 commit comments

Comments
 (0)