diff --git a/constructorio-client/src/main/java/io/constructor/client/models/BrowseResponseInner.java b/constructorio-client/src/main/java/io/constructor/client/models/BrowseResponseInner.java index e9d75005..5f433536 100644 --- a/constructorio-client/src/main/java/io/constructor/client/models/BrowseResponseInner.java +++ b/constructorio-client/src/main/java/io/constructor/client/models/BrowseResponseInner.java @@ -12,6 +12,9 @@ public class BrowseResponseInner extends BaseResultsResponse { @SerializedName("refined_content") private List refinedContent; + @SerializedName("features") + private List features; + /** * @return the item collection data */ @@ -26,6 +29,13 @@ public List getRefinedContent() { return refinedContent; } + /** + * @return features list + */ + public List getFeatures() { + return features; + } + public void setCollection(ItemCollection collection) { this.collection = collection; } @@ -33,4 +43,8 @@ public void setCollection(ItemCollection collection) { public void setRefinedContent(List refinedContent) { this.refinedContent = refinedContent; } + + public void setFeatures(List features) { + this.features = features; + } } diff --git a/constructorio-client/src/main/java/io/constructor/client/models/Feature.java b/constructorio-client/src/main/java/io/constructor/client/models/Feature.java new file mode 100644 index 00000000..4512b1c8 --- /dev/null +++ b/constructorio-client/src/main/java/io/constructor/client/models/Feature.java @@ -0,0 +1,62 @@ +package io.constructor.client.models; + +import com.google.gson.annotations.SerializedName; + +public class Feature { + + @SerializedName("display_name") + private String displayName; + + @SerializedName("feature_name") + private String featureName; + + @SerializedName("enabled") + private Boolean enabled; + + @SerializedName("variant") + private Variant variant; + + /** + * @return the display name + */ + public String getDisplayName() { + return displayName; + } + + /** + * @return the feature name + */ + public String getFeatureName() { + return featureName; + } + + /** + * @return enabled + */ + public Boolean getEnabled() { + return enabled; + } + + /** + * @return the variant + */ + public Variant getVariant() { + return variant; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + public void setFeatureName(String featureName) { + this.featureName = featureName; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + + public void setVariant(Variant variant) { + this.variant = variant; + } +} diff --git a/constructorio-client/src/main/java/io/constructor/client/models/SearchResponseInner.java b/constructorio-client/src/main/java/io/constructor/client/models/SearchResponseInner.java index 0fa66c99..b2664bb2 100644 --- a/constructorio-client/src/main/java/io/constructor/client/models/SearchResponseInner.java +++ b/constructorio-client/src/main/java/io/constructor/client/models/SearchResponseInner.java @@ -12,6 +12,9 @@ public class SearchResponseInner extends BaseResultsResponse { @SerializedName("refined_content") private List refinedContent; + @SerializedName("features") + private List features; + /** * @return redirect data */ @@ -26,6 +29,13 @@ public List getRefinedContent() { return refinedContent; } + /** + * @return features list + */ + public List getFeatures() { + return features; + } + public void setRedirect(Redirect redirect) { this.redirect = redirect; } @@ -33,4 +43,8 @@ public void setRedirect(Redirect redirect) { public void setRefinedContent(List refinedContent) { this.refinedContent = refinedContent; } + + public void setFeatures(List features) { + this.features = features; + } } diff --git a/constructorio-client/src/main/java/io/constructor/client/models/Variant.java b/constructorio-client/src/main/java/io/constructor/client/models/Variant.java new file mode 100644 index 00000000..4a279bbb --- /dev/null +++ b/constructorio-client/src/main/java/io/constructor/client/models/Variant.java @@ -0,0 +1,34 @@ +package io.constructor.client.models; + +import com.google.gson.annotations.SerializedName; + +public class Variant { + + @SerializedName("name") + private String name; + + @SerializedName("display_name") + private String displayName; + + /** + * @return the name + */ + public String getName() { + return name; + } + + /** + * @return the display name + */ + public String getDisplayName() { + return displayName; + } + + public void setName(String name) { + this.name = name; + } + + public void setDisplayName(String displayName) { + this.displayName = displayName; + } +} diff --git a/constructorio-client/src/test/java/io/constructor/client/BrowseResponseTest.java b/constructorio-client/src/test/java/io/constructor/client/BrowseResponseTest.java index 3774e812..3357bb48 100644 --- a/constructorio-client/src/test/java/io/constructor/client/BrowseResponseTest.java +++ b/constructorio-client/src/test/java/io/constructor/client/BrowseResponseTest.java @@ -300,4 +300,36 @@ public void createBrowseResponseShouldReturnAResultWithIsSlotted() throws Except response.getResponse().getResults().get(1).getIsSlotted(), false); } + + @Test + public void createBrowseResponseShouldReturnAResultWithFeatures() throws Exception { + String string = Utils.getTestResource("response.browse.color.blue.json"); + BrowseResponse response = ConstructorIO.createBrowseResponse(string); + assertEquals( + "browse result [features] exists", response.getResponse().getFeatures().size(), 5); + assertEquals( + "browse result feature [feature name] exists", + response.getResponse().getFeatures().get(0).getFeatureName(), + "auto_generated_refined_query_rules"); + assertEquals( + "browse result feature [display name] exists", + response.getResponse().getFeatures().get(0).getDisplayName(), + "Affinity Engine"); + assertEquals( + "browse result feature [enabled] exists", + response.getResponse().getFeatures().get(0).getEnabled(), + true); + assertEquals( + "browse result feature variant [display name] exists", + response.getResponse().getFeatures().get(0).getVariant().getDisplayName(), + "Default weights"); + assertEquals( + "browse result feature variant [name] exists", + response.getResponse().getFeatures().get(0).getVariant().getName(), + "default_rules"); + assertEquals( + "browse result feature variant returns null if empty", + response.getResponse().getFeatures().get(1).getVariant(), + null); + } } diff --git a/constructorio-client/src/test/java/io/constructor/client/SearchResponseTest.java b/constructorio-client/src/test/java/io/constructor/client/SearchResponseTest.java index b757c633..57a9e161 100644 --- a/constructorio-client/src/test/java/io/constructor/client/SearchResponseTest.java +++ b/constructorio-client/src/test/java/io/constructor/client/SearchResponseTest.java @@ -276,4 +276,36 @@ public void createSearchResponseShouldReturnAResultWithIsSlotted() throws Except response.getResponse().getResults().get(1).getIsSlotted(), false); } + + @Test + public void createSearchResponseShouldReturnAResultWithFeatures() throws Exception { + String string = Utils.getTestResource("response.search.item.json"); + SearchResponse response = ConstructorIO.createSearchResponse(string); + assertEquals( + "search result [features] exists", response.getResponse().getFeatures().size(), 5); + assertEquals( + "search result feature [feature name] exists", + response.getResponse().getFeatures().get(0).getFeatureName(), + "auto_generated_refined_query_rules"); + assertEquals( + "search result feature [display name] exists", + response.getResponse().getFeatures().get(0).getDisplayName(), + "Affinity Engine"); + assertEquals( + "search result feature [enabled] exists", + response.getResponse().getFeatures().get(0).getEnabled(), + true); + assertEquals( + "search result feature variant [name] exists", + response.getResponse().getFeatures().get(0).getVariant().getName(), + "default_rules"); + assertEquals( + "search result feature variant [display name] exists", + response.getResponse().getFeatures().get(0).getVariant().getDisplayName(), + "Default weights"); + assertEquals( + "search result feature variant returns null if empty", + response.getResponse().getFeatures().get(2).getVariant(), + null); + } }