Skip to content

Commit cf19576

Browse files
TarekAlQaddyTarek Ahmed
andauthored
[CDX-255] Expose features object in request models (#168)
* Add Feature and Variant models, expose features for Search and Browse * Remove print * Remove print * Lint * Add tests for null variants --------- Co-authored-by: Tarek Ahmed <tarek.ahmed@tarek.ahmed-F5P62C970K>
1 parent 60d1628 commit cf19576

File tree

6 files changed

+188
-0
lines changed

6 files changed

+188
-0
lines changed

constructorio-client/src/main/java/io/constructor/client/models/BrowseResponseInner.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ public class BrowseResponseInner extends BaseResultsResponse {
1212
@SerializedName("refined_content")
1313
private List<RefinedContent> refinedContent;
1414

15+
@SerializedName("features")
16+
private List<Feature> features;
17+
1518
/**
1619
* @return the item collection data
1720
*/
@@ -26,11 +29,22 @@ public List<RefinedContent> getRefinedContent() {
2629
return refinedContent;
2730
}
2831

32+
/**
33+
* @return features list
34+
*/
35+
public List<Feature> getFeatures() {
36+
return features;
37+
}
38+
2939
public void setCollection(ItemCollection collection) {
3040
this.collection = collection;
3141
}
3242

3343
public void setRefinedContent(List<RefinedContent> refinedContent) {
3444
this.refinedContent = refinedContent;
3545
}
46+
47+
public void setFeatures(List<Feature> features) {
48+
this.features = features;
49+
}
3650
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package io.constructor.client.models;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
5+
public class Feature {
6+
7+
@SerializedName("display_name")
8+
private String displayName;
9+
10+
@SerializedName("feature_name")
11+
private String featureName;
12+
13+
@SerializedName("enabled")
14+
private Boolean enabled;
15+
16+
@SerializedName("variant")
17+
private Variant variant;
18+
19+
/**
20+
* @return the display name
21+
*/
22+
public String getDisplayName() {
23+
return displayName;
24+
}
25+
26+
/**
27+
* @return the feature name
28+
*/
29+
public String getFeatureName() {
30+
return featureName;
31+
}
32+
33+
/**
34+
* @return enabled
35+
*/
36+
public Boolean getEnabled() {
37+
return enabled;
38+
}
39+
40+
/**
41+
* @return the variant
42+
*/
43+
public Variant getVariant() {
44+
return variant;
45+
}
46+
47+
public void setDisplayName(String displayName) {
48+
this.displayName = displayName;
49+
}
50+
51+
public void setFeatureName(String featureName) {
52+
this.featureName = featureName;
53+
}
54+
55+
public void setEnabled(Boolean enabled) {
56+
this.enabled = enabled;
57+
}
58+
59+
public void setVariant(Variant variant) {
60+
this.variant = variant;
61+
}
62+
}

constructorio-client/src/main/java/io/constructor/client/models/SearchResponseInner.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ public class SearchResponseInner extends BaseResultsResponse {
1212
@SerializedName("refined_content")
1313
private List<RefinedContent> refinedContent;
1414

15+
@SerializedName("features")
16+
private List<Feature> features;
17+
1518
/**
1619
* @return redirect data
1720
*/
@@ -26,11 +29,22 @@ public List<RefinedContent> getRefinedContent() {
2629
return refinedContent;
2730
}
2831

32+
/**
33+
* @return features list
34+
*/
35+
public List<Feature> getFeatures() {
36+
return features;
37+
}
38+
2939
public void setRedirect(Redirect redirect) {
3040
this.redirect = redirect;
3141
}
3242

3343
public void setRefinedContent(List<RefinedContent> refinedContent) {
3444
this.refinedContent = refinedContent;
3545
}
46+
47+
public void setFeatures(List<Feature> features) {
48+
this.features = features;
49+
}
3650
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package io.constructor.client.models;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
5+
public class Variant {
6+
7+
@SerializedName("name")
8+
private String name;
9+
10+
@SerializedName("display_name")
11+
private String displayName;
12+
13+
/**
14+
* @return the name
15+
*/
16+
public String getName() {
17+
return name;
18+
}
19+
20+
/**
21+
* @return the display name
22+
*/
23+
public String getDisplayName() {
24+
return displayName;
25+
}
26+
27+
public void setName(String name) {
28+
this.name = name;
29+
}
30+
31+
public void setDisplayName(String displayName) {
32+
this.displayName = displayName;
33+
}
34+
}

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

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,4 +300,36 @@ public void createBrowseResponseShouldReturnAResultWithIsSlotted() throws Except
300300
response.getResponse().getResults().get(1).getIsSlotted(),
301301
false);
302302
}
303+
304+
@Test
305+
public void createBrowseResponseShouldReturnAResultWithFeatures() throws Exception {
306+
String string = Utils.getTestResource("response.browse.color.blue.json");
307+
BrowseResponse response = ConstructorIO.createBrowseResponse(string);
308+
assertEquals(
309+
"browse result [features] exists", response.getResponse().getFeatures().size(), 5);
310+
assertEquals(
311+
"browse result feature [feature name] exists",
312+
response.getResponse().getFeatures().get(0).getFeatureName(),
313+
"auto_generated_refined_query_rules");
314+
assertEquals(
315+
"browse result feature [display name] exists",
316+
response.getResponse().getFeatures().get(0).getDisplayName(),
317+
"Affinity Engine");
318+
assertEquals(
319+
"browse result feature [enabled] exists",
320+
response.getResponse().getFeatures().get(0).getEnabled(),
321+
true);
322+
assertEquals(
323+
"browse result feature variant [display name] exists",
324+
response.getResponse().getFeatures().get(0).getVariant().getDisplayName(),
325+
"Default weights");
326+
assertEquals(
327+
"browse result feature variant [name] exists",
328+
response.getResponse().getFeatures().get(0).getVariant().getName(),
329+
"default_rules");
330+
assertEquals(
331+
"browse result feature variant returns null if empty",
332+
response.getResponse().getFeatures().get(1).getVariant(),
333+
null);
334+
}
303335
}

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

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,4 +276,36 @@ public void createSearchResponseShouldReturnAResultWithIsSlotted() throws Except
276276
response.getResponse().getResults().get(1).getIsSlotted(),
277277
false);
278278
}
279+
280+
@Test
281+
public void createSearchResponseShouldReturnAResultWithFeatures() throws Exception {
282+
String string = Utils.getTestResource("response.search.item.json");
283+
SearchResponse response = ConstructorIO.createSearchResponse(string);
284+
assertEquals(
285+
"search result [features] exists", response.getResponse().getFeatures().size(), 5);
286+
assertEquals(
287+
"search result feature [feature name] exists",
288+
response.getResponse().getFeatures().get(0).getFeatureName(),
289+
"auto_generated_refined_query_rules");
290+
assertEquals(
291+
"search result feature [display name] exists",
292+
response.getResponse().getFeatures().get(0).getDisplayName(),
293+
"Affinity Engine");
294+
assertEquals(
295+
"search result feature [enabled] exists",
296+
response.getResponse().getFeatures().get(0).getEnabled(),
297+
true);
298+
assertEquals(
299+
"search result feature variant [name] exists",
300+
response.getResponse().getFeatures().get(0).getVariant().getName(),
301+
"default_rules");
302+
assertEquals(
303+
"search result feature variant [display name] exists",
304+
response.getResponse().getFeatures().get(0).getVariant().getDisplayName(),
305+
"Default weights");
306+
assertEquals(
307+
"search result feature variant returns null if empty",
308+
response.getResponse().getFeatures().get(2).getVariant(),
309+
null);
310+
}
279311
}

0 commit comments

Comments
 (0)