From f18430867a86010a98c652f603a6b3578c1a3580 Mon Sep 17 00:00:00 2001 From: mocca102 Date: Tue, 17 Jun 2025 15:44:51 +0300 Subject: [PATCH 1/6] Update facet configuration `position` and `optionsLimit` parameters --- .../client/models/FacetConfiguration.java | 12 ++++++------ .../client/models/FacetOptionConfiguration.java | 6 +++--- .../client/ConstructorIOFacetConfigurationTest.java | 7 +++++++ .../ConstructorIOFacetOptionConfigurationTest.java | 10 ++++++++-- 4 files changed, 24 insertions(+), 11 deletions(-) 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..e75ffdd4 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(1, jsonObj.getInt("position")); assertEquals(false, jsonObj.get("hidden")); assertEquals("bar", jsonObj.getJSONObject("data").get("foo")); @@ -270,4 +270,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()); + } } From d3d4b1f5f0ceb253ecc43ce138166a81de9d3f3f Mon Sep 17 00:00:00 2001 From: mocca102 Date: Tue, 17 Jun 2025 16:03:39 +0300 Subject: [PATCH 2/6] Fix tests and lint --- .../client/ConstructorIOFacetOptionConfigurationTest.java | 6 +++--- .../java/io/constructor/client/FacetConfigurationTest.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) 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 e75ffdd4..e26a050c 100644 --- a/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetOptionConfigurationTest.java +++ b/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetOptionConfigurationTest.java @@ -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.getInt("position")); + assertEquals((Integer) 1, jsonObj.get("position")); assertEquals(false, jsonObj.get("hidden")); assertEquals("bar", jsonObj.getJSONObject("data").get("foo")); @@ -177,12 +177,12 @@ 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"); 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"); } From eb25cf9b4daaec59bc575bc714db60f76a645137 Mon Sep 17 00:00:00 2001 From: mocca102 Date: Tue, 17 Jun 2025 16:08:37 +0300 Subject: [PATCH 3/6] fix tests --- .../client/ConstructorIOFacetOptionConfigurationTest.java | 2 +- .../io/constructor/client/FacetOptionConfigurationTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 e26a050c..65100400 100644 --- a/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetOptionConfigurationTest.java +++ b/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetOptionConfigurationTest.java @@ -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((Integer) 1, jsonObj.get("position")); + assertEquals(Integer.valueOf(1), jsonObj.get("position")); assertEquals(false, jsonObj.get("hidden")); assertEquals("bar", jsonObj.getJSONObject("data").get("foo")); 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"); } From 58c06af7a94346d29e965e854b0e028a0816afb3 Mon Sep 17 00:00:00 2001 From: mocca102 Date: Wed, 25 Jun 2025 18:41:44 +0300 Subject: [PATCH 4/6] Add null tests --- ...tructorIOFacetOptionConfigurationTest.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) 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 65100400..6821f735 100644 --- a/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetOptionConfigurationTest.java +++ b/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetOptionConfigurationTest.java @@ -189,6 +189,44 @@ public void testCreateFacetOptionConfigurations() throws Exception { 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.setHidden(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")); + assertFalse("display_name should not be present", jsonOption.has("display_name")); + assertFalse("position should not be present", jsonOption.has("position")); + assertFalse("value_alias should not be present", jsonOption.has("value_alias")); + assertFalse("hidden should not be present", jsonOption.has("hidden")); + assertFalse("data should not be present", jsonOption.has("data")); + + addFacetOptionToCleanupArray(facetName, "test-option-null"); + } + @Test(expected = ConstructorException.class) public void testCreateFacetOptionConfigurationWithNullRequest() throws Exception { ConstructorIO constructor = new ConstructorIO(token, apiKey, true, null); From 36a8357a5c44cd43d8c96a85f510846d0cc76b2e Mon Sep 17 00:00:00 2001 From: mocca102 Date: Wed, 25 Jun 2025 19:14:56 +0300 Subject: [PATCH 5/6] Fix tests --- .../ConstructorIOFacetOptionConfigurationTest.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) 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 6821f735..becad6e0 100644 --- a/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetOptionConfigurationTest.java +++ b/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetOptionConfigurationTest.java @@ -218,12 +218,11 @@ public void testCreateFacetOptionConfigurationsWithNullValues() throws Exception JSONObject jsonOption = (JSONObject) jsonArr.get(0); assertEquals("test-option-null", jsonOption.get("value")); - assertFalse("display_name should not be present", jsonOption.has("display_name")); - assertFalse("position should not be present", jsonOption.has("position")); - assertFalse("value_alias should not be present", jsonOption.has("value_alias")); - assertFalse("hidden should not be present", jsonOption.has("hidden")); - assertFalse("data should not be present", jsonOption.has("data")); - + 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("hidden should be null", jsonOption.isNull("hidden")); + assertTrue("data should be null", jsonOption.isNull("data")); addFacetOptionToCleanupArray(facetName, "test-option-null"); } From c5d26d2a469e086b35595bf06eb7cbc013af7cbf Mon Sep 17 00:00:00 2001 From: mocca102 Date: Wed, 25 Jun 2025 19:15:13 +0300 Subject: [PATCH 6/6] Fix tests --- .../client/ConstructorIOFacetOptionConfigurationTest.java | 2 -- 1 file changed, 2 deletions(-) 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 becad6e0..bd42be52 100644 --- a/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetOptionConfigurationTest.java +++ b/constructorio-client/src/test/java/io/constructor/client/ConstructorIOFacetOptionConfigurationTest.java @@ -204,7 +204,6 @@ public void testCreateFacetOptionConfigurationsWithNullValues() throws Exception option.setDisplayName(null); option.setPosition(null); option.setValueAlias(null); - option.setHidden(null); option.setData(null); List configurations = Arrays.asList(option); @@ -221,7 +220,6 @@ public void testCreateFacetOptionConfigurationsWithNullValues() throws Exception 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("hidden should be null", jsonOption.isNull("hidden")); assertTrue("data should be null", jsonOption.isNull("data")); addFacetOptionToCleanupArray(facetName, "test-option-null"); }