From e863c07f55ec69413340ffc988727ab577a3327e Mon Sep 17 00:00:00 2001 From: Chris Gee Date: Fri, 2 May 2025 13:50:32 -0700 Subject: [PATCH] Add options --- .../client/models/FilterFacetOption.java | 16 ++++++++ .../io/constructor/client/FiltersTest.java | 14 +++++++ .../test/resources/facet.hierarchical.json | 39 +++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 constructorio-client/src/test/resources/facet.hierarchical.json diff --git a/constructorio-client/src/main/java/io/constructor/client/models/FilterFacetOption.java b/constructorio-client/src/main/java/io/constructor/client/models/FilterFacetOption.java index 44f5e71f..09b0650f 100644 --- a/constructorio-client/src/main/java/io/constructor/client/models/FilterFacetOption.java +++ b/constructorio-client/src/main/java/io/constructor/client/models/FilterFacetOption.java @@ -1,6 +1,8 @@ package io.constructor.client.models; import com.google.gson.annotations.SerializedName; + +import java.util.List; import java.util.Map; /** Constructor.io Filter Facet Option ... uses Gson/Reflection to load data in */ @@ -24,6 +26,9 @@ public class FilterFacetOption { @SerializedName("range") private Object[] range; // Array to hold two values of either Number or "inf", "-inf" + @SerializedName("options") + private List options; + /** * @return the counts */ @@ -66,6 +71,13 @@ public Object[] getRange() { return range; } + /** + * @return the options + */ + public List getOptions() { + return options; + } + public void setCount(Integer count) { this.count = count; } @@ -89,4 +101,8 @@ public void setValue(String value) { public void setRange(Object[] range) { this.range = range; } + + public void setOptions(List options) { + this.options = options; + } } diff --git a/constructorio-client/src/test/java/io/constructor/client/FiltersTest.java b/constructorio-client/src/test/java/io/constructor/client/FiltersTest.java index ec8aa4f3..3ed76531 100644 --- a/constructorio-client/src/test/java/io/constructor/client/FiltersTest.java +++ b/constructorio-client/src/test/java/io/constructor/client/FiltersTest.java @@ -57,6 +57,20 @@ public void rangeFacet() throws Exception { assertEquals(facet.getStatus().size(), 0); } + @Test + public void hierarchicalFacet() throws Exception { + String string = Utils.getTestResource("facet.hierarchical.json"); + FilterFacet facet = new Gson().fromJson(string, FilterFacet.class); + assertEquals(facet.getDisplayName(), "Size"); + assertEquals(facet.getName(), "Size"); + assertEquals(facet.getType(), "hierarchical"); + assertEquals(facet.getOptions().get(0).getValue(), "Mens"); + assertEquals(facet.getOptions().get(0).getOptions().get(0), "Mens/Small"); + assertNull(facet.getMax()); + assertNull(facet.getMin()); + assertNull(facet.getStatus()); + } + @Test public void rangeFacetSelected() throws Exception { String string = Utils.getTestResource("facet.range.selected.json"); diff --git a/constructorio-client/src/test/resources/facet.hierarchical.json b/constructorio-client/src/test/resources/facet.hierarchical.json new file mode 100644 index 00000000..78f403ff --- /dev/null +++ b/constructorio-client/src/test/resources/facet.hierarchical.json @@ -0,0 +1,39 @@ +{ + "display_name": "Size", + "name": "Size", + "options": [ + { + "count": 5, + "data": {}, + "display_name": "Mens", + "status": "", + "value": "Mens", + "options": [ + { + "count": 5, + "data": {}, + "display_name": "Small", + "status": "", + "value": "Mens/Small" + } + ] + }, + { + "count": 4, + "data": {}, + "display_name": "Womens", + "status": "", + "value": "Womens", + "options": [ + { + "count": 4, + "data": {}, + "display_name": "Medium", + "status": "", + "value": "Womens/Medium" + } + ] + } + ], + "type": "hierarchical" +} \ No newline at end of file