From 8144390fbc4a4e09a6052e9af2b82d021a181df1 Mon Sep 17 00:00:00 2001 From: Anna Shipil Date: Thu, 11 Jun 2026 14:53:33 +0200 Subject: [PATCH 1/4] DEVX-813: adding test --- .../java/com/commercetools/SearchTest.java | 34 +++++++++++++++++++ .../search_stats_facet_response.json | 16 +++++++++ .../search_stats_facet_response_1.json | 17 ++++++++++ 3 files changed, 67 insertions(+) create mode 100644 commercetools/commercetools-sdk-java-api/src/test/resources/search_stats_facet_response.json create mode 100644 commercetools/commercetools-sdk-java-api/src/test/resources/search_stats_facet_response_1.json diff --git a/commercetools/commercetools-sdk-java-api/src/test/java/com/commercetools/SearchTest.java b/commercetools/commercetools-sdk-java-api/src/test/java/com/commercetools/SearchTest.java index bec722a8171..5895ec26169 100644 --- a/commercetools/commercetools-sdk-java-api/src/test/java/com/commercetools/SearchTest.java +++ b/commercetools/commercetools-sdk-java-api/src/test/java/com/commercetools/SearchTest.java @@ -11,6 +11,9 @@ import com.commercetools.api.defaultconfig.ApiRootBuilder; import com.commercetools.api.models.product.*; +import com.commercetools.api.models.product_search.ProductPagedSearchResponse; +import com.commercetools.api.models.product_search.ProductSearchFacetResult; +import com.commercetools.api.models.product_search.ProductSearchFacetResultStats; import io.vrap.rmf.base.client.ApiHttpClient; import io.vrap.rmf.base.client.ApiHttpHeaders; import io.vrap.rmf.base.client.ApiHttpRequest; @@ -156,4 +159,35 @@ public void testFacetResultsAccessor() { Assertions.assertThat(((TermFacetResult) prices).getTerms().size()).isEqualTo(3); Assertions.assertThat(((TermFacetResult) prices).getTerms().get(0).getTerm()).isEqualTo("S"); } + + @Test + public void testStatsFacetResultsDeserialization() { + ProductPagedSearchResponse response = JsonUtils.fromJsonString( + stringFromResource("search_stats_facet_response.json"), ProductPagedSearchResponse.class); + + ProductSearchFacetResult facet = response.getFacets().get(0); + Assertions.assertThat(facet).isInstanceOf(ProductSearchFacetResultStats.class); + + ProductSearchFacetResultStats statsFacet = (ProductSearchFacetResultStats) facet; + Assertions.assertThat(statsFacet.getName()).isEqualTo("price"); + Assertions.assertThat(statsFacet.getCount()).isEqualTo(42L); + Assertions.assertThat(statsFacet.getMin()).isEqualTo(1000.); + Assertions.assertThat(statsFacet.getMax()).isEqualTo(50000.); + Assertions.assertThat(statsFacet.getMean()).isEqualTo(15000.5); + Assertions.assertThat(statsFacet.getSum()).isEqualTo(1500050.); + + response = JsonUtils.fromJsonString( + stringFromResource("search_stats_facet_response_1.json"), ProductPagedSearchResponse.class); + + facet = response.getFacets().get(0); + Assertions.assertThat(facet).isInstanceOf(ProductSearchFacetResultStats.class); + + statsFacet = (ProductSearchFacetResultStats) facet; + Assertions.assertThat(statsFacet.getName()).isEqualTo("price"); + Assertions.assertThat(statsFacet.getCount()).isEqualTo(859016); + Assertions.assertThat(statsFacet.getMin()).isEqualTo(199.0); + Assertions.assertThat(statsFacet.getMax()).isEqualTo(3599900.0); + Assertions.assertThat(statsFacet.getMean()).isEqualTo(233019.64729760564); + Assertions.assertThat(statsFacet.getSum()).isEqualTo(2.00167605343E11); + } } diff --git a/commercetools/commercetools-sdk-java-api/src/test/resources/search_stats_facet_response.json b/commercetools/commercetools-sdk-java-api/src/test/resources/search_stats_facet_response.json new file mode 100644 index 00000000000..b7c7bafe988 --- /dev/null +++ b/commercetools/commercetools-sdk-java-api/src/test/resources/search_stats_facet_response.json @@ -0,0 +1,16 @@ +{ + "total": 1, + "offset": 0, + "limit": 10, + "facets": [ + { + "name": "price", + "count": 42, + "min": 1000, + "max": 50000, + "mean": 15000.5, + "sum": 1500050 + } + ], + "results": [] +} diff --git a/commercetools/commercetools-sdk-java-api/src/test/resources/search_stats_facet_response_1.json b/commercetools/commercetools-sdk-java-api/src/test/resources/search_stats_facet_response_1.json new file mode 100644 index 00000000000..9d1269e99c5 --- /dev/null +++ b/commercetools/commercetools-sdk-java-api/src/test/resources/search_stats_facet_response_1.json @@ -0,0 +1,17 @@ +{ + "total": 1, + "offset": 0, + "limit": 10, + "facets": [ + { + "name": "price", + "min": 199.0, + "max": 3599900.0, + "mean": 233019.64729760564, + "sum": 2.00167605343E11, + "count": 859016 + } + ], + "results": [] +} + From 823524aba087b08e99f3eb3c51593752f4f37c40 Mon Sep 17 00:00:00 2001 From: Anna Shipil Date: Thu, 11 Jun 2026 14:53:50 +0200 Subject: [PATCH 2/4] DEVX-813: fixing deserializer --- .../ProductSearchFacetResultDeserializer.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/json/ProductSearchFacetResultDeserializer.java b/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/json/ProductSearchFacetResultDeserializer.java index 289b38ef3c1..ce9d6eccd80 100644 --- a/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/json/ProductSearchFacetResultDeserializer.java +++ b/commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/json/ProductSearchFacetResultDeserializer.java @@ -3,10 +3,7 @@ import java.util.List; -import com.commercetools.api.models.product_search.ProductSearchFacetResult; -import com.commercetools.api.models.product_search.ProductSearchFacetResultBucket; -import com.commercetools.api.models.product_search.ProductSearchFacetResultBucketEntry; -import com.commercetools.api.models.product_search.ProductSearchFacetResultCount; +import com.commercetools.api.models.product_search.*; import tools.jackson.core.JsonParser; import tools.jackson.core.type.TypeReference; @@ -36,6 +33,16 @@ else if (node.has("value")) { .value(node.get("value").asLong()) .build(); } + else if (node.has("count") || node.has("min")) { + return ProductSearchFacetResultStats.builder() + .name(node.get("name").asString()) + .count(node.get("count").asLong()) + .max(node.get("max").asDouble()) + .min(node.get("min").asDouble()) + .mean(node.get("mean").asDouble()) + .sum(node.get("sum").asDouble()) + .build(); + } return ProductSearchFacetResult.builder().name(node.get("name").asString()).build(); } } From 4e64347e48610b8128ca737ccdb24634a92bbe34 Mon Sep 17 00:00:00 2001 From: "ct-sdks[bot]" <153784748+ct-sdks[bot]@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:59:19 +0000 Subject: [PATCH 3/4] spotless: Fix code style --- .../src/test/java/com/commercetools/SearchTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/commercetools/commercetools-sdk-java-api/src/test/java/com/commercetools/SearchTest.java b/commercetools/commercetools-sdk-java-api/src/test/java/com/commercetools/SearchTest.java index 5895ec26169..8934c1ed9ab 100644 --- a/commercetools/commercetools-sdk-java-api/src/test/java/com/commercetools/SearchTest.java +++ b/commercetools/commercetools-sdk-java-api/src/test/java/com/commercetools/SearchTest.java @@ -10,10 +10,10 @@ import com.commercetools.api.client.ByProjectKeyRequestBuilder; import com.commercetools.api.defaultconfig.ApiRootBuilder; import com.commercetools.api.models.product.*; - import com.commercetools.api.models.product_search.ProductPagedSearchResponse; import com.commercetools.api.models.product_search.ProductSearchFacetResult; import com.commercetools.api.models.product_search.ProductSearchFacetResultStats; + import io.vrap.rmf.base.client.ApiHttpClient; import io.vrap.rmf.base.client.ApiHttpHeaders; import io.vrap.rmf.base.client.ApiHttpRequest; @@ -176,8 +176,8 @@ public void testStatsFacetResultsDeserialization() { Assertions.assertThat(statsFacet.getMean()).isEqualTo(15000.5); Assertions.assertThat(statsFacet.getSum()).isEqualTo(1500050.); - response = JsonUtils.fromJsonString( - stringFromResource("search_stats_facet_response_1.json"), ProductPagedSearchResponse.class); + response = JsonUtils.fromJsonString(stringFromResource("search_stats_facet_response_1.json"), + ProductPagedSearchResponse.class); facet = response.getFacets().get(0); Assertions.assertThat(facet).isInstanceOf(ProductSearchFacetResultStats.class); From 03f2565891095fc1b2761263866777e98ee81cb3 Mon Sep 17 00:00:00 2001 From: "ct-sdks[bot]" <153784748+ct-sdks[bot]@users.noreply.github.com> Date: Thu, 11 Jun 2026 12:59:19 +0000 Subject: [PATCH 4/4] spotless: add commit to blame ignore revs file --- .git-blame-ignore-revs | 1 + 1 file changed, 1 insertion(+) diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 3f0e8d99568..82902971868 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -30,3 +30,4 @@ f00f4fe6ed5e22cdd2e3f68370c2da96e6bbc8e7 f6aab9d10212756b1d71a0568c706a9df51c322d 4822581aeff072b7649c7aec56a13a95bd58c249 eb09ce06943ccb460981afaa6b5ecfd54f8f87e2 +4e64347e48610b8128ca737ccdb24634a92bbe34