diff --git a/constructorio-client/src/main/java/io/constructor/client/models/FacetConfiguration.java b/constructorio-client/src/main/java/io/constructor/client/models/FacetConfiguration.java index 68a303f5..eb9b21be 100644 --- a/constructorio-client/src/main/java/io/constructor/client/models/FacetConfiguration.java +++ b/constructorio-client/src/main/java/io/constructor/client/models/FacetConfiguration.java @@ -46,7 +46,7 @@ public enum MatchType { private MatchType matchType; @SerializedName("position") - private int position; + private Integer position; @SerializedName("hidden") private Boolean hidden; @@ -58,7 +58,7 @@ public enum MatchType { private Boolean countable; @SerializedName("options_limit") - private int optionsLimit; + private Integer optionsLimit; @SerializedName("data") private Map data; @@ -143,7 +143,7 @@ public MatchType getMatchType() { /** * @return the position */ - public int getPosition() { + public Integer getPosition() { return position; } @@ -171,7 +171,7 @@ public Boolean getCountable() { /** * @return the optionsLimit */ - public int getOptionsLimit() { + public Integer getOptionsLimit() { return optionsLimit; } @@ -226,7 +226,7 @@ public void setMatchType(MatchType matchType) { this.matchType = matchType; } - public void setPosition(int position) { + public void setPosition(Integer position) { this.position = position; } @@ -242,7 +242,7 @@ public void setCountable(Boolean countable) { this.countable = countable; } - public void setOptionsLimit(int optionsLimit) { + public void setOptionsLimit(Integer optionsLimit) { this.optionsLimit = optionsLimit; } diff --git a/constructorio-client/src/main/java/io/constructor/client/models/FacetOptionConfiguration.java b/constructorio-client/src/main/java/io/constructor/client/models/FacetOptionConfiguration.java index a92c1cf8..c2e693dd 100644 --- a/constructorio-client/src/main/java/io/constructor/client/models/FacetOptionConfiguration.java +++ b/constructorio-client/src/main/java/io/constructor/client/models/FacetOptionConfiguration.java @@ -19,7 +19,7 @@ public class FacetOptionConfiguration { private String displayName; @SerializedName("position") - private int position; + private Integer position; @SerializedName("data") private Map data; @@ -58,7 +58,7 @@ public String getDisplayName() { /** * @return the position */ - public int getPosition() { + public Integer getPosition() { return position; } @@ -92,7 +92,7 @@ public void setDisplayName(String displayName) { this.displayName = displayName; } - public void setPosition(int position) { + public void setPosition(Integer position) { this.position = position; } diff --git a/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetConfigurationTest.java b/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetConfigurationTest.java index 477a6b59..42b94e17 100644 --- a/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetConfigurationTest.java +++ b/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetConfigurationTest.java @@ -186,4 +186,11 @@ public void testDeleteNonExistentFacetShouldThrowException() throws Exception { ConstructorIO constructor = new ConstructorIO(token, apiKey, true, null); constructor.deleteFacetConfiguration("nonExistentFacet", "Products"); } + + @Test + public void testFacetConfigurationDefaultValues() { + FacetConfiguration config = new FacetConfiguration(); + assertNull("Position should default to null", config.getPosition()); + assertNull("Options limit should default to null", config.getOptionsLimit()); + } } diff --git a/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetOptionConfigurationTest.java b/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetOptionConfigurationTest.java index 52314bf2..bd42be52 100644 --- a/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetOptionConfigurationTest.java +++ b/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetOptionConfigurationTest.java @@ -72,7 +72,7 @@ private FacetConfiguration createFacetConfigurationObject(String name, String se } private FacetOptionConfiguration createFacetOptionConfigurationObject( - String value, String displayName, int position) { + String value, String displayName, Integer position) { FacetOptionConfiguration config = new FacetOptionConfiguration(); config.setValue(value); config.setDisplayName(displayName); @@ -136,7 +136,7 @@ public void testCreateFacetOptionConfiguration() throws Exception { assertEquals("test-option", jsonObj.get("value")); assertEquals("test-alias", jsonObj.get("value_alias")); assertEquals("Test Option", jsonObj.get("display_name")); - assertEquals(1, jsonObj.get("position")); + assertEquals(Integer.valueOf(1), jsonObj.get("position")); assertEquals(false, jsonObj.get("hidden")); assertEquals("bar", jsonObj.getJSONObject("data").get("foo")); @@ -177,18 +177,53 @@ public void testCreateFacetOptionConfigurations() throws Exception { assertEquals("test-option", jsonOption1.get("value")); assertEquals("test-alias", jsonOption1.get("value_alias")); assertEquals("Test Option", jsonOption1.get("display_name")); - assertEquals(1, jsonOption1.get("position")); + assertEquals(Integer.valueOf(1), jsonOption1.get("position")); assertEquals(false, jsonOption1.get("hidden")); assertEquals("bar", jsonOption1.getJSONObject("data").get("foo")); assertEquals("test-option-2", jsonOption2.get("value")); assertEquals("Test Option 2", jsonOption2.get("display_name")); - assertEquals(2, jsonOption2.get("position")); + assertEquals(Integer.valueOf(2), jsonOption2.get("position")); assertEquals(true, jsonOption2.get("hidden")); addFacetOptionToCleanupArray(facetName, "test-option"); addFacetOptionToCleanupArray(facetName, "test-option-2"); } + @Test + public void testCreateFacetOptionConfigurationsWithNullValues() throws Exception { + String facetName = "testFacetNullValues"; + constructor.createFacetConfiguration( + new FacetConfigurationRequest( + createFacetConfigurationObject(facetName, PRODUCTS_SECTION), + PRODUCTS_SECTION)); + addFacetToCleanupArray(facetName); + + // Create facet option configuration with null values + FacetOptionConfiguration option = new FacetOptionConfiguration(); + option.setValue("test-option-null"); + option.setDisplayName(null); + option.setPosition(null); + option.setValueAlias(null); + option.setData(null); + + List configurations = Arrays.asList(option); + + // Create and verify configuration + String response = + constructor.createOrUpdateFacetOptionConfigurations( + new FacetOptionConfigurationsRequest( + configurations, facetName, PRODUCTS_SECTION)); + JSONArray jsonArr = new JSONArray(response); + JSONObject jsonOption = (JSONObject) jsonArr.get(0); + + assertEquals("test-option-null", jsonOption.get("value")); + assertTrue("display_name should be null", jsonOption.isNull("display_name")); + assertTrue("position should be null", jsonOption.isNull("position")); + assertTrue("value_alias should be null", jsonOption.isNull("value_alias")); + assertTrue("data should be null", jsonOption.isNull("data")); + addFacetOptionToCleanupArray(facetName, "test-option-null"); + } + @Test(expected = ConstructorException.class) public void testCreateFacetOptionConfigurationWithNullRequest() throws Exception { ConstructorIO constructor = new ConstructorIO(token, apiKey, true, null); @@ -270,4 +305,10 @@ public void testDeleteNonExistentFacetOptionShouldThrowException() throws Except constructor.deleteFacetOptionConfiguration( "nonExistentFacet", "nonExistentOption", PRODUCTS_SECTION); } + + @Test + public void testFacetOptionConfigurationDefaultValues() { + FacetOptionConfiguration config = new FacetOptionConfiguration(); + assertNull("Position should default to null", config.getPosition()); + } } diff --git a/constructorio-client/src/test/java/io/constructor/client/FacetConfigurationTest.java b/constructorio-client/src/test/java/io/constructor/client/FacetConfigurationTest.java index c61c4d9a..2462200b 100644 --- a/constructorio-client/src/test/java/io/constructor/client/FacetConfigurationTest.java +++ b/constructorio-client/src/test/java/io/constructor/client/FacetConfigurationTest.java @@ -23,11 +23,11 @@ public void multipleFacet() throws Exception { assertEquals(config.getSortOrder(), "relevance"); assertEquals(config.getSortDescending(), true); assertEquals(config.getMatchType(), MatchType.any); - assertEquals(config.getPosition(), 2); + assertEquals(config.getPosition(), Integer.valueOf(2)); assertEquals(config.getHidden(), false); assertEquals(config.getIsProtected(), false); assertEquals(config.getCountable(), true); - assertEquals(config.getOptionsLimit(), 300); + assertEquals(config.getOptionsLimit(), Integer.valueOf(300)); assertEquals(config.getData().size(), 1); assertEquals(config.getData().get("foo"), "bar"); } diff --git a/constructorio-client/src/test/java/io/constructor/client/FacetOptionConfigurationTest.java b/constructorio-client/src/test/java/io/constructor/client/FacetOptionConfigurationTest.java index 915e2351..447eab36 100644 --- a/constructorio-client/src/test/java/io/constructor/client/FacetOptionConfigurationTest.java +++ b/constructorio-client/src/test/java/io/constructor/client/FacetOptionConfigurationTest.java @@ -19,7 +19,7 @@ public void facetOption() throws Exception { assertEquals(config.getDisplayName(), "Jif"); assertEquals(config.getValue(), "jif"); assertEquals(config.getReplaceValueAlias(), true); - assertEquals(config.getPosition(), 1); + assertEquals(config.getPosition(), Integer.valueOf(1)); assertEquals(config.getData().size(), 1); assertEquals(config.getData().get("foo"), "bar"); }