Skip to content

Commit 3733682

Browse files
authored
[CI-3945] Support Fmt Options (#144)
* support fmt options * Add boolean case
1 parent 239bf6a commit 3733682

File tree

8 files changed

+135
-15
lines changed

8 files changed

+135
-15
lines changed

library/src/main/java/io/constructor/core/ConstructorIo.kt

Lines changed: 39 additions & 14 deletions
Large diffs are not rendered by default.

library/src/main/java/io/constructor/data/builder/BrowseItemsRequest.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class BrowseItemsRequest (
1919
val groupsSortOrder: String? = null,
2020
val variationsMap: VariationsMap? = null,
2121
val preFilterExpression: String? = null,
22+
val fmtOptions: Map<String, Any>? = null,
2223
) {
2324
private constructor(builder: Builder) : this(
2425
builder.ids,
@@ -34,6 +35,7 @@ class BrowseItemsRequest (
3435
builder.groupsSortOrder,
3536
builder.variationsMap,
3637
builder.preFilterExpression,
38+
builder.fmtOptions,
3739
)
3840

3941
companion object {
@@ -55,6 +57,7 @@ class BrowseItemsRequest (
5557
var groupsSortOrder: String? = null
5658
var variationsMap: VariationsMap? = null
5759
var preFilterExpression: String? = null
60+
var fmtOptions: Map<String, Any>? = null
5861

5962
fun setFilters(facets: Map<String, List<String>>): Builder = apply { this.filters = facets }
6063
fun setPage(page: Int): Builder = apply { this.page = page }
@@ -68,6 +71,7 @@ class BrowseItemsRequest (
6871
fun setGroupsSortOrder(groupsSortOrder: String): Builder = apply { this.groupsSortOrder = groupsSortOrder }
6972
fun setVariationsMap(variationsMap: VariationsMap): Builder = apply { this.variationsMap = variationsMap }
7073
fun setPreFilterExpression(preFilterExpression: String): Builder = apply { this.preFilterExpression = preFilterExpression }
74+
fun setFmtOptions(fmtOptions: Map<String, Any>): Builder = apply { this.fmtOptions = fmtOptions }
7175
fun build(): BrowseItemsRequest = BrowseItemsRequest(this)
7276
}
7377
}

library/src/main/java/io/constructor/data/builder/BrowseRequest.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class BrowseRequest (
2020
val groupsSortOrder: String? = null,
2121
val variationsMap: VariationsMap? = null,
2222
val preFilterExpression: String? = null,
23+
val fmtOptions: Map<String, Any>? = null,
2324
) {
2425
private constructor(builder: Builder) : this(
2526
builder.filterName,
@@ -36,6 +37,7 @@ class BrowseRequest (
3637
builder.groupsSortOrder,
3738
builder.variationsMap,
3839
builder.preFilterExpression,
40+
builder.fmtOptions,
3941
)
4042

4143
companion object {
@@ -58,6 +60,7 @@ class BrowseRequest (
5860
var groupsSortOrder: String? = null
5961
var variationsMap: VariationsMap? = null
6062
var preFilterExpression: String? = null
63+
var fmtOptions: Map<String, Any>? = null
6164

6265
fun setFilters(facets: Map<String, List<String>>): Builder = apply { this.filters = facets }
6366
fun setPage(page: Int): Builder = apply { this.page = page }
@@ -71,6 +74,7 @@ class BrowseRequest (
7174
fun setGroupsSortOrder(groupsSortOrder: String): Builder = apply { this.groupsSortOrder = groupsSortOrder }
7275
fun setVariationsMap(variationsMap: VariationsMap): Builder = apply { this.variationsMap = variationsMap }
7376
fun setPreFilterExpression(preFilterExpression: String): Builder = apply { this.preFilterExpression = preFilterExpression }
77+
fun setFmtOptions(fmtOptions: Map<String, Any>): Builder = apply { this.fmtOptions = fmtOptions }
7478
fun build(): BrowseRequest = BrowseRequest(this)
7579
}
7680
}

library/src/main/java/io/constructor/data/builder/SearchRequest.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class SearchRequest (
1919
val groupsSortOrder: String? = null,
2020
val variationsMap: VariationsMap? = null,
2121
val preFilterExpression: String? = null,
22+
val fmtOptions: Map<String, Any>? = null,
2223
) {
2324
private constructor(builder: Builder) : this(
2425
builder.term,
@@ -33,7 +34,8 @@ class SearchRequest (
3334
builder.groupsSortBy,
3435
builder.groupsSortOrder,
3536
builder.variationsMap,
36-
builder.preFilterExpression
37+
builder.preFilterExpression,
38+
builder.fmtOptions,
3739
)
3840

3941
companion object {
@@ -55,6 +57,7 @@ class SearchRequest (
5557
var groupsSortOrder: String? = null
5658
var variationsMap: VariationsMap? = null
5759
var preFilterExpression: String? = null
60+
var fmtOptions: Map<String, Any>? = null
5861

5962

6063
fun setFilters(facets: Map<String, List<String>>): Builder = apply { this.filters = facets }
@@ -69,6 +72,7 @@ class SearchRequest (
6972
fun setGroupsSortOrder(groupsSortOrder: String): Builder = apply { this.groupsSortOrder = groupsSortOrder }
7073
fun setVariationsMap(variationsMap: VariationsMap): Builder = apply { this.variationsMap = variationsMap }
7174
fun setPreFilterExpression(preFilterExpression: String): Builder = apply { this.preFilterExpression = preFilterExpression }
75+
fun setFmtOptions(fmtOptions: Map<String, Any>): Builder = apply { this.fmtOptions = fmtOptions }
7276
fun build(): SearchRequest = SearchRequest(this)
7377
}
7478
}

library/src/test/java/io/constructor/core/ConstructorIoIntegrationTest.kt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1224,6 +1224,23 @@ class ConstructorIoIntegrationTest {
12241224
Thread.sleep(timeBetweenTests)
12251225
}
12261226

1227+
@Test
1228+
fun getSearchResultsWithFmtOptionsAgainstRealResponse() {
1229+
val observer = constructorIo.getSearchResults(
1230+
term = "item1",
1231+
fmtOptions = mapOf("groups_sort_order" to "ascending", "groups_sort_by" to "value", "groups_start" to "group_id:Brands", "fields" to listOf("test", "test2"))
1232+
).test()
1233+
observer.assertComplete()
1234+
observer.assertNoErrors()
1235+
1236+
val searchResponse = observer.values()[0].get()
1237+
assertTrue(searchResponse?.resultId !== null)
1238+
assertTrue(searchResponse?.response?.groups!!.isNotEmpty())
1239+
assertEquals(searchResponse?.response?.groups?.get(0)?.displayName, "Brands")
1240+
1241+
Thread.sleep(timeBetweenTests)
1242+
}
1243+
12271244
@Test
12281245
fun getSearchResultsWithGroupsSortValueDescendingAgainstRealResponse() {
12291246
val observer = constructorIo.getSearchResults(
@@ -1621,6 +1638,24 @@ class ConstructorIoIntegrationTest {
16211638
Thread.sleep(timeBetweenTests)
16221639
}
16231640

1641+
@Test
1642+
fun getBrowseResultsWithFmtOptionsAgainstRealResponse() {
1643+
val observer = constructorIo.getBrowseResults(
1644+
filterName = "Brand",
1645+
filterValue = "XYZ",
1646+
fmtOptions = mapOf("groups_sort_order" to "ascending", "groups_sort_by" to "value", "groups_start" to "group_id:Brands", "fields" to listOf("test", "test2"))
1647+
).test()
1648+
observer.assertComplete()
1649+
observer.assertNoErrors()
1650+
1651+
val browseResponse = observer.values()[0].get()
1652+
assertTrue(browseResponse?.resultId !== null)
1653+
assertTrue(browseResponse?.response?.groups!!.isNotEmpty())
1654+
assertEquals(browseResponse?.response?.groups?.get(0)?.displayName, "Brands")
1655+
1656+
Thread.sleep(timeBetweenTests)
1657+
}
1658+
16241659
@Test
16251660
fun getBrowseResultsWithGroupsSortValueAscendingAgainstRealResponse() {
16261661
val observer = constructorIo.getBrowseResults(

library/src/test/java/io/constructor/core/ConstructorioBrowseItemsTest.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,21 @@ class ConstructorIoBrowseItemsTest {
226226
assert(request.path!!.startsWith(path))
227227
}
228228

229+
@Test
230+
fun getBrowseResultWithFmtOptions() {
231+
val mockResponse = MockResponse().setResponseCode(200)
232+
.setBody(TestDataLoader.loadAsString("browse_response.json"))
233+
mockServer.enqueue(mockResponse)
234+
val fmtOptions = mapOf("groups_start" to 5,"show_hidden_facets" to false, "groups_sort_order" to "ascending", "fields" to listOf(false, "test2"))
235+
val browseItemsRequest = BrowseItemsRequest.Builder(ids)
236+
.setFmtOptions(fmtOptions)
237+
.build()
238+
val observer = constructorIo.getBrowseItemsResults(browseItemsRequest).test()
239+
val request = mockServer.takeRequest()
240+
val path = "/browse/items?fmt_options%5Bgroups_start%5D=5&fmt_options%5Bshow_hidden_facets%5D=false&fmt_options%5Bgroups_sort_order%5D=ascending&fmt_options%5Bfields%5D=false&fmt_options%5Bfields%5D=test2&ids=10001&ids=dai_pid_2003597&key=silver-key&i=guapo-the-guid&ui=player-two&s=92&c=cioand-2.32.0&_dt="
241+
assert(request.path!!.startsWith(path))
242+
}
243+
229244
@Test
230245
fun getBrowseItemsResultsWithVariationsMapsUsingBuilder() {
231246
val mockResponse = MockResponse().setResponseCode(200)

library/src/test/java/io/constructor/core/ConstructorioBrowseTest.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,23 @@ class ConstructorIoBrowseTest {
261261
assert(request.path!!.startsWith(path))
262262
}
263263

264+
@Test
265+
fun getBrowseResultWithFmtOptions() {
266+
val mockResponse = MockResponse().setResponseCode(200)
267+
.setBody(TestDataLoader.loadAsString("browse_response.json"))
268+
mockServer.enqueue(mockResponse)
269+
val fmtOptions = mapOf("groups_start" to 5,"show_hidden_facets" to false, "groups_sort_order" to "ascending", "fields" to listOf(false, "test2"))
270+
val observer = constructorIo.getBrowseResults(
271+
filterName = "group_id",
272+
filterValue = "Beverages",
273+
fmtOptions = fmtOptions
274+
).test()
275+
val request = mockServer.takeRequest()
276+
val path =
277+
"/browse/group_id/Beverages?fmt_options%5Bgroups_start%5D=5&fmt_options%5Bshow_hidden_facets%5D=false&fmt_options%5Bgroups_sort_order%5D=ascending&fmt_options%5Bfields%5D=false&fmt_options%5Bfields%5D=test2&key=silver-key&i=guapo-the-guid&ui=player-two&s=92&c=cioand-2.32.0&_dt="
278+
assert(request.path!!.startsWith(path))
279+
}
280+
264281
@Test
265282
fun getBrowseResultWithPreFilterExpression() {
266283
val mockResponse = MockResponse().setResponseCode(200)

library/src/test/java/io/constructor/core/ConstructorioSearchTest.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,22 @@ class ConstructorIoSearchTest {
279279
assert(request.path!!.startsWith(path))
280280
}
281281

282+
@Test
283+
fun getSearchResultsWithFmtOptions() {
284+
val mockResponse = MockResponse().setResponseCode(200)
285+
.setBody(TestDataLoader.loadAsString("search_response.json"))
286+
mockServer.enqueue(mockResponse)
287+
val fmtOptions = mapOf("groups_start" to 5,"show_hidden_facets" to false, "groups_sort_order" to "ascending", "fields" to listOf(false, "test2"))
288+
val observer = constructorIo.getSearchResults(
289+
term = "bbq",
290+
fmtOptions = fmtOptions,
291+
).test()
292+
val request = mockServer.takeRequest()
293+
val path =
294+
"/search/bbq?fmt_options%5Bgroups_start%5D=5&fmt_options%5Bshow_hidden_facets%5D=false&fmt_options%5Bgroups_sort_order%5D=ascending&fmt_options%5Bfields%5D=false&fmt_options%5Bfields%5D=test2&key=silver-key&i=guapo-the-guid&ui=player-two&s=92&c=cioand-2.32.0&_dt="
295+
assert(request.path!!.startsWith(path))
296+
}
297+
282298
@Test
283299
fun getSearchResultsWithFiltersUsingBuilder() {
284300
val mockResponse = MockResponse().setResponseCode(200)

0 commit comments

Comments
 (0)