Skip to content

Commit 7c488f3

Browse files
committed
[CDX-380] Add support for variationId param in RecommendationsRequest
1 parent 12edfb9 commit 7c488f3

4 files changed

Lines changed: 39 additions & 0 deletions

File tree

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1811,6 +1811,13 @@ public String recommendationsAsJSON(RecommendationsRequest req, UserInfo userInf
18111811
}
18121812
}
18131813

1814+
if (StringUtils.isNotBlank(req.getVariationId())) {
1815+
url =
1816+
url.newBuilder()
1817+
.addQueryParameter("variation_id", req.getVariationId())
1818+
.build();
1819+
}
1820+
18141821
if (StringUtils.isNotBlank(req.getTerm())) {
18151822
url = url.newBuilder().addQueryParameter("term", req.getTerm()).build();
18161823
}

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public class RecommendationsRequest {
1212
private String term;
1313
private int numResults;
1414
private List<String> itemIds;
15+
private String variationId;
1516
private Map<String, List<String>> facets;
1617
private String section;
1718
private String preFilterExpression;
@@ -32,6 +33,7 @@ public RecommendationsRequest(String podId) throws IllegalArgumentException {
3233
this.podId = podId;
3334
this.numResults = 10;
3435
this.itemIds = null;
36+
this.variationId = null;
3537
this.term = null;
3638
this.section = "Products";
3739
this.variationsMap = null;
@@ -97,6 +99,21 @@ public List<String> getItemIds() {
9799
return itemIds;
98100
}
99101

102+
/**
103+
* @param variationId the variation id to set. Can be used with exactly one item_id specified in
104+
* the request. Applicable for alternative_items, complementary_items, and bundles pod types.
105+
*/
106+
public void setVariationId(String variationId) {
107+
this.variationId = variationId;
108+
}
109+
110+
/**
111+
* @return the variation id
112+
*/
113+
public String getVariationId() {
114+
return variationId;
115+
}
116+
100117
/**
101118
* @param section the section to set
102119
*/

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,18 @@ public void getRecommendationsShouldReturnAResultWithSingleItemId() throws Excep
2929
assertTrue("recommendation result id exists", response.getResultId() != null);
3030
}
3131

32+
@Test
33+
public void getRecommendationsShouldReturnAResultWithItemIdAndVariationId() throws Exception {
34+
ConstructorIO constructor = new ConstructorIO("", apiKey, true, null);
35+
UserInfo userInfo = new UserInfo(3, "c62a-2a09-faie");
36+
RecommendationsRequest request = new RecommendationsRequest("item_page_1");
37+
request.setItemIds(Arrays.asList("power_drill"));
38+
request.setVariationId("power_drill_variation");
39+
RecommendationsResponse response = constructor.recommendations(request, userInfo);
40+
assertTrue("recommendation results exist", response.getResponse().getResults().size() >= 0);
41+
assertTrue("recommendation result id exists", response.getResultId() != null);
42+
}
43+
3244
@Test
3345
public void getRecommendationsShouldReturnAResultWithMultipleItemIds() throws Exception {
3446
ConstructorIO constructor = new ConstructorIO("", apiKey, true, null);

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public void newShouldReturnDefaultProperties() throws Exception {
3535
assertEquals(request.getPodId(), podId);
3636
assertEquals(request.getNumResults(), 10);
3737
assertNull(request.getItemIds());
38+
assertNull(request.getVariationId());
3839
assertNull(request.getTerm());
3940
assertEquals(request.getSection(), "Products");
4041
assertEquals(request.getFacets().size(), 0);
@@ -54,6 +55,7 @@ public void settersShouldSet() throws Exception {
5455
request.setPodId("zero_results_1");
5556
request.setNumResults(3);
5657
request.setItemIds(Arrays.asList("1", "2", "3"));
58+
request.setVariationId("variation-1");
5759
request.setSection("Search Suggestions");
5860
request.setFacets(facets);
5961
request.setTerm(term);
@@ -62,6 +64,7 @@ public void settersShouldSet() throws Exception {
6264

6365
assertEquals(request.getPodId(), "zero_results_1");
6466
assertEquals(request.getNumResults(), 3);
67+
assertEquals(request.getVariationId(), "variation-1");
6568
assertEquals(request.getSection(), "Search Suggestions");
6669
assertEquals(request.getFacets(), facets);
6770
assertEquals(request.getTerm(), term);

0 commit comments

Comments
 (0)