Skip to content

Commit f60040a

Browse files
Devx 813 product search stats facet (#1092)
* DEVX-813: adding test * DEVX-813: fixing deserializer * spotless: Fix code style * spotless: add commit to blame ignore revs file --------- Co-authored-by: ct-sdks[bot] <153784748+ct-sdks[bot]@users.noreply.github.com>
1 parent b9f5565 commit f60040a

5 files changed

Lines changed: 79 additions & 4 deletions

File tree

.git-blame-ignore-revs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,4 @@ f00f4fe6ed5e22cdd2e3f68370c2da96e6bbc8e7
3030
f6aab9d10212756b1d71a0568c706a9df51c322d
3131
4822581aeff072b7649c7aec56a13a95bd58c249
3232
eb09ce06943ccb460981afaa6b5ecfd54f8f87e2
33+
4e64347e48610b8128ca737ccdb24634a92bbe34

commercetools/commercetools-sdk-java-api/src/main/java/com/commercetools/api/json/ProductSearchFacetResultDeserializer.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@
33

44
import java.util.List;
55

6-
import com.commercetools.api.models.product_search.ProductSearchFacetResult;
7-
import com.commercetools.api.models.product_search.ProductSearchFacetResultBucket;
8-
import com.commercetools.api.models.product_search.ProductSearchFacetResultBucketEntry;
9-
import com.commercetools.api.models.product_search.ProductSearchFacetResultCount;
6+
import com.commercetools.api.models.product_search.*;
107

118
import tools.jackson.core.JsonParser;
129
import tools.jackson.core.type.TypeReference;
@@ -36,6 +33,16 @@ else if (node.has("value")) {
3633
.value(node.get("value").asLong())
3734
.build();
3835
}
36+
else if (node.has("count") || node.has("min")) {
37+
return ProductSearchFacetResultStats.builder()
38+
.name(node.get("name").asString())
39+
.count(node.get("count").asLong())
40+
.max(node.get("max").asDouble())
41+
.min(node.get("min").asDouble())
42+
.mean(node.get("mean").asDouble())
43+
.sum(node.get("sum").asDouble())
44+
.build();
45+
}
3946
return ProductSearchFacetResult.builder().name(node.get("name").asString()).build();
4047
}
4148
}

commercetools/commercetools-sdk-java-api/src/test/java/com/commercetools/SearchTest.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
import com.commercetools.api.client.ByProjectKeyRequestBuilder;
1111
import com.commercetools.api.defaultconfig.ApiRootBuilder;
1212
import com.commercetools.api.models.product.*;
13+
import com.commercetools.api.models.product_search.ProductPagedSearchResponse;
14+
import com.commercetools.api.models.product_search.ProductSearchFacetResult;
15+
import com.commercetools.api.models.product_search.ProductSearchFacetResultStats;
1316

1417
import io.vrap.rmf.base.client.ApiHttpClient;
1518
import io.vrap.rmf.base.client.ApiHttpHeaders;
@@ -156,4 +159,35 @@ public void testFacetResultsAccessor() {
156159
Assertions.assertThat(((TermFacetResult) prices).getTerms().size()).isEqualTo(3);
157160
Assertions.assertThat(((TermFacetResult) prices).getTerms().get(0).getTerm()).isEqualTo("S");
158161
}
162+
163+
@Test
164+
public void testStatsFacetResultsDeserialization() {
165+
ProductPagedSearchResponse response = JsonUtils.fromJsonString(
166+
stringFromResource("search_stats_facet_response.json"), ProductPagedSearchResponse.class);
167+
168+
ProductSearchFacetResult facet = response.getFacets().get(0);
169+
Assertions.assertThat(facet).isInstanceOf(ProductSearchFacetResultStats.class);
170+
171+
ProductSearchFacetResultStats statsFacet = (ProductSearchFacetResultStats) facet;
172+
Assertions.assertThat(statsFacet.getName()).isEqualTo("price");
173+
Assertions.assertThat(statsFacet.getCount()).isEqualTo(42L);
174+
Assertions.assertThat(statsFacet.getMin()).isEqualTo(1000.);
175+
Assertions.assertThat(statsFacet.getMax()).isEqualTo(50000.);
176+
Assertions.assertThat(statsFacet.getMean()).isEqualTo(15000.5);
177+
Assertions.assertThat(statsFacet.getSum()).isEqualTo(1500050.);
178+
179+
response = JsonUtils.fromJsonString(stringFromResource("search_stats_facet_response_1.json"),
180+
ProductPagedSearchResponse.class);
181+
182+
facet = response.getFacets().get(0);
183+
Assertions.assertThat(facet).isInstanceOf(ProductSearchFacetResultStats.class);
184+
185+
statsFacet = (ProductSearchFacetResultStats) facet;
186+
Assertions.assertThat(statsFacet.getName()).isEqualTo("price");
187+
Assertions.assertThat(statsFacet.getCount()).isEqualTo(859016);
188+
Assertions.assertThat(statsFacet.getMin()).isEqualTo(199.0);
189+
Assertions.assertThat(statsFacet.getMax()).isEqualTo(3599900.0);
190+
Assertions.assertThat(statsFacet.getMean()).isEqualTo(233019.64729760564);
191+
Assertions.assertThat(statsFacet.getSum()).isEqualTo(2.00167605343E11);
192+
}
159193
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"total": 1,
3+
"offset": 0,
4+
"limit": 10,
5+
"facets": [
6+
{
7+
"name": "price",
8+
"count": 42,
9+
"min": 1000,
10+
"max": 50000,
11+
"mean": 15000.5,
12+
"sum": 1500050
13+
}
14+
],
15+
"results": []
16+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"total": 1,
3+
"offset": 0,
4+
"limit": 10,
5+
"facets": [
6+
{
7+
"name": "price",
8+
"min": 199.0,
9+
"max": 3599900.0,
10+
"mean": 233019.64729760564,
11+
"sum": 2.00167605343E11,
12+
"count": 859016
13+
}
14+
],
15+
"results": []
16+
}
17+

0 commit comments

Comments
 (0)