Skip to content

Commit 285293a

Browse files
authored
Browse and Browse Items support for filter_match_type (#146)
* Browse and Browse Items support for filter_match_type * Update docs * Update facet * Address comments * typo
1 parent 8f88113 commit 285293a

File tree

7 files changed

+99
-0
lines changed

7 files changed

+99
-0
lines changed

constructorio-client/src/main/java/io/constructor/client/BrowseItemsRequest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public class BrowseItemsRequest {
1919
private Map<String, String> formatOptions;
2020
private List<String> hiddenFields;
2121
private List<String> hiddenFacets;
22+
private Map<String, String> filterMatchTypes;
2223

2324
/**
2425
* Creates a browse request
@@ -39,6 +40,7 @@ public BrowseItemsRequest(List<String> ids) throws IllegalArgumentException {
3940
this.formatOptions = new HashMap<String, String>();
4041
this.hiddenFields = new ArrayList<String>();
4142
this.hiddenFacets = new ArrayList<String>();
43+
this.filterMatchTypes = new HashMap<String, String>();
4244
}
4345

4446
/**
@@ -194,4 +196,20 @@ public void setHiddenFacets(List<String> hiddenFacets) {
194196
public List<String> getHiddenFacets() {
195197
return hiddenFacets;
196198
}
199+
200+
/**
201+
* @param filterMatchTypes the filterMatchTypes to set. Please refer to
202+
* https://docs-beta.constructor.io/reference/v1-browse-get-browse-items-results for details
203+
* Possible values 'all', 'any' or 'none'
204+
*/
205+
public void setFilterMatchTypes(Map<String, String> filterMatchTypes) {
206+
this.filterMatchTypes = filterMatchTypes;
207+
}
208+
209+
/**
210+
* @return the filterMatchTypes
211+
*/
212+
public Map<String, String> getFilterMatchTypes() {
213+
return filterMatchTypes;
214+
}
197215
}

constructorio-client/src/main/java/io/constructor/client/BrowseRequest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class BrowseRequest {
2525
private String qsParam;
2626
private String now;
2727
private int offset;
28+
private Map<String, String> filterMatchTypes;
2829

2930
/**
3031
* Creates a browse request
@@ -55,6 +56,7 @@ public BrowseRequest(String filterName, String filterValue) throws IllegalArgume
5556
this.qsParam = null;
5657
this.now = null;
5758
this.offset = 0;
59+
this.filterMatchTypes = new HashMap<String, String>();
5860
}
5961

6062
/**
@@ -301,4 +303,20 @@ public void setOffset(int offset) {
301303
public int getOffset() {
302304
return offset;
303305
}
306+
307+
/**
308+
* @param filterMatchTypes the filterMatchTypes to set. Please refer to
309+
* https://docs-beta.constructor.io/reference/v1-browse-get-browse-results for details
310+
* Possible values 'all', 'any' or 'none'
311+
*/
312+
public void setFilterMatchTypes(Map<String, String> filterMatchTypes) {
313+
this.filterMatchTypes = filterMatchTypes;
314+
}
315+
316+
/**
317+
* @return the filterMatchTypes
318+
*/
319+
public Map<String, String> getFilterMatchTypes() {
320+
return filterMatchTypes;
321+
}
304322
}

constructorio-client/src/main/java/io/constructor/client/ConstructorIO.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1219,6 +1219,16 @@ protected Request createBrowseRequest(BrowseRequest req, UserInfo userInfo)
12191219
.build();
12201220
}
12211221

1222+
for (String filterMatchTypesKey : req.getFilterMatchTypes().keySet()) {
1223+
String filterMatchTypesValue = req.getFilterMatchTypes().get(filterMatchTypesKey);
1224+
url =
1225+
url.newBuilder()
1226+
.addQueryParameter(
1227+
"filter_match_types[" + filterMatchTypesKey + "]",
1228+
filterMatchTypesValue)
1229+
.build();
1230+
}
1231+
12221232
Request request =
12231233
this.makeUserRequestBuilder(userInfo, authorizedRequest).url(url).get().build();
12241234

@@ -1389,6 +1399,16 @@ protected Request createBrowseItemsRequest(BrowseItemsRequest req, UserInfo user
13891399
.build();
13901400
}
13911401

1402+
for (String filterMatchTypesKey : req.getFilterMatchTypes().keySet()) {
1403+
String filterMatchTypesValue = req.getFilterMatchTypes().get(filterMatchTypesKey);
1404+
url =
1405+
url.newBuilder()
1406+
.addQueryParameter(
1407+
"filter_match_types[" + filterMatchTypesKey + "]",
1408+
filterMatchTypesValue)
1409+
.build();
1410+
}
1411+
13921412
Request request = this.makeUserRequestBuilder(userInfo).url(url).get().build();
13931413

13941414
return request;

constructorio-client/src/test/java/io/constructor/client/BrowseItemsRequestTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public void settersShouldSet() throws Exception {
4949
formatOptions.put("groups_start", "top");
5050
List<String> hiddenFields = Arrays.asList("hiddenField1", "hiddenField2");
5151
List<String> hiddenFacets = Arrays.asList("hiddenFacet1", "hiddenFacet2");
52+
Map<String, String> filterMatchTypes = new HashMap<String, String>();
53+
filterMatchTypes.put("Color", "all");
5254

5355
request.setIds(newIds);
5456
request.setSection("Browse Suggestions");
@@ -61,6 +63,7 @@ public void settersShouldSet() throws Exception {
6163
request.setFormatOptions(formatOptions);
6264
request.setHiddenFields(hiddenFields);
6365
request.setHiddenFacets(hiddenFacets);
66+
request.setFilterMatchTypes(filterMatchTypes);
6467

6568
assertEquals(request.getIds(), newIds);
6669
assertEquals(request.getSection(), "Browse Suggestions");
@@ -73,5 +76,6 @@ public void settersShouldSet() throws Exception {
7376
assertEquals(request.getFormatOptions(), formatOptions);
7477
assertEquals(request.getHiddenFields(), hiddenFields);
7578
assertEquals(request.getHiddenFacets(), hiddenFacets);
79+
assertEquals(request.getFilterMatchTypes(), filterMatchTypes);
7680
}
7781
}

constructorio-client/src/test/java/io/constructor/client/BrowseRequestTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ public void settersShouldSet() throws Exception {
6868
"{\"num_results_per_page\":\"10\",\"filters\":{\"keywords\":[\"battery-powered\"]}}";
6969
String now = "1659049486";
7070
int offset = 2;
71+
Map<String, String> filterMatchTypes = new HashMap<String, String>();
72+
filterMatchTypes.put("Color", "all");
7173

7274
request.setFilterName("VacationType");
7375
request.setFilterValue("Air Travel");
@@ -85,6 +87,7 @@ public void settersShouldSet() throws Exception {
8587
request.setQsParam(qsParam);
8688
request.setNow(now);
8789
request.setOffset(offset);
90+
request.setFilterMatchTypes(filterMatchTypes);
8891

8992
assertEquals(request.getFilterName(), "VacationType");
9093
assertEquals(request.getFilterValue(), "Air Travel");
@@ -102,5 +105,6 @@ public void settersShouldSet() throws Exception {
102105
assertEquals(request.getQsParam(), qsParam);
103106
assertEquals(request.getNow(), now);
104107
assertEquals(request.getOffset(), offset);
108+
assertEquals(request.getFilterMatchTypes(), filterMatchTypes);
105109
}
106110
}

constructorio-client/src/test/java/io/constructor/client/ConstructorIOBrowseItemsTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,4 +303,22 @@ public boolean test(FilterFacet f) {
303303
assertNotNull("browse facet [Brand] exists", brandFacet);
304304
assertTrue("browse facet [Brand] is hidden", brandFacet.getHidden());
305305
}
306+
307+
@Test
308+
public void BrowseItemsShouldReturnAResultWithFilterMatchTypes() throws Exception {
309+
ConstructorIO constructor = new ConstructorIO("", apiKey, true, null);
310+
UserInfo userInfo = new UserInfo(3, "c62a-2a09-faie");
311+
List<String> ids = Arrays.asList("10001", "10002");
312+
BrowseItemsRequest request = new BrowseItemsRequest(ids);
313+
request.getFacets().put("Brand", Arrays.asList("XYZ"));
314+
request.getFilterMatchTypes().put("Brand", "all");
315+
BrowseResponse response = constructor.browseItems(request, userInfo);
316+
317+
assertTrue("browse result id exists", response.getResultId() != null);
318+
assertTrue("request exists", response.getRequest() != null);
319+
assertTrue(
320+
"filter match types exists",
321+
response.getRequest().get("filter_match_types") != null);
322+
assertTrue("browse results exist", response.getResponse().getResults().size() >= 0);
323+
}
306324
}

constructorio-client/src/test/java/io/constructor/client/ConstructorIOBrowseTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -624,4 +624,21 @@ public void BrowseShouldReturnItemLevelGroupsObject() throws Exception {
624624
"All");
625625
assertEquals("first pathListItem id matches", groupPathList.get(0).getId(), "All");
626626
}
627+
628+
@Test
629+
public void BrowseShouldReturnAResultWithFilterMatchTypes() throws Exception {
630+
ConstructorIO constructor = new ConstructorIO("", apiKey, true, null);
631+
UserInfo userInfo = new UserInfo(3, "c62a-2a09-faie");
632+
BrowseRequest request = new BrowseRequest("Color", "yellow");
633+
request.getFacets().put("Brand", Arrays.asList("XYZ"));
634+
request.getFilterMatchTypes().put("Brand", "all");
635+
BrowseResponse response = constructor.browse(request, userInfo);
636+
637+
assertTrue("browse result id exists", response.getResultId() != null);
638+
assertTrue("request exists", response.getRequest() != null);
639+
assertTrue(
640+
"filter match types exists",
641+
response.getRequest().get("filter_match_types") != null);
642+
assertTrue("browse results exist", response.getResponse().getResults().size() >= 0);
643+
}
627644
}

0 commit comments

Comments
 (0)