diff --git a/library/src/main/java/io/constructor/core/ConstructorIo.kt b/library/src/main/java/io/constructor/core/ConstructorIo.kt index 43a3ccbb..0d5400e2 100755 --- a/library/src/main/java/io/constructor/core/ConstructorIo.kt +++ b/library/src/main/java/io/constructor/core/ConstructorIo.kt @@ -199,7 +199,8 @@ object ConstructorIo { groupsMaxDepth: Int? = null, groupIdFilter: String? = null, preFilterExpression: String? = null, - sectionFacets: Map>>>? = null + sectionFacets: Map>>>? = null, + fmtOptions: Map? = null ): ArrayList> { val encodedParams: ArrayList> = arrayListOf() @@ -242,6 +243,25 @@ object ConstructorIo { hiddenFacets?.forEach { hiddenFacet -> encodedParams.add(Constants.QueryConstants.FMT_OPTIONS.format(Constants.QueryConstants.HIDDEN_FACET).urlEncode() to hiddenFacet.urlEncode()) } + fmtOptions?.forEach { (key, value) -> + when (value) { + is List<*> -> { + value.forEach{ fmtOptionsValue -> + if (fmtOptionsValue is String) { + encodedParams.add(Constants.QueryConstants.FMT_OPTIONS.format(key).urlEncode() to fmtOptionsValue.urlEncode()) + } else if (fmtOptionsValue is Number || fmtOptionsValue is Boolean) { + encodedParams.add(Constants.QueryConstants.FMT_OPTIONS.format(key).urlEncode() to fmtOptionsValue.toString()) + } + } + } + is String -> { + encodedParams.add(Constants.QueryConstants.FMT_OPTIONS.format(key).urlEncode() to value.urlEncode()) + } + is Number, is Boolean -> { + encodedParams.add(Constants.QueryConstants.FMT_OPTIONS.format(key).urlEncode() to value.toString()) + } + } + } showHiddenFacets?.let { encodedParams.add(Constants.QueryConstants.FMT_OPTIONS.format(Constants.QueryConstants.SHOW_HIDDEN_FACETS).urlEncode() to showHiddenFacets.toString().urlEncode()) } groupsSortBy?.let { encodedParams.add(Constants.QueryConstants.FMT_OPTIONS.format(Constants.QueryConstants.GROUPS_SORT_BY).urlEncode() to groupsSortBy.urlEncode()) } groupsSortOrder?.let { encodedParams.add(Constants.QueryConstants.FMT_OPTIONS.format(Constants.QueryConstants.GROUPS_SORT_ORDER).urlEncode() to groupsSortOrder.urlEncode()) } @@ -422,9 +442,10 @@ object ConstructorIo { * @param groupsSortOrder the sort order for groups * @param variationsMap specify which attributes within variations should be returned * @param preFilterExpression faceting expression to scope results + * @param fmtOptions additional format options to pass */ - fun getSearchResults(term: String, facets: List>>? = null, page: Int? = null, perPage: Int? = null, groupId: Int? = null, sortBy: String? = null, sortOrder: String? = null, sectionName: String? = null, hiddenFields: List? = null, hiddenFacets: List? = null, groupsSortBy: String? = null, groupsSortOrder: String? = null, variationsMap: VariationsMap? = null, preFilterExpression: String? = null): Observable> { - val encodedParams: ArrayList> = getEncodedParams(facets = facets, page = page, perPage = perPage, groupIdInt = groupId, sortBy = sortBy, sortOrder = sortOrder, sectionName = sectionName, hiddenFields = hiddenFields, hiddenFacets = hiddenFacets, groupsSortBy = groupsSortBy, groupsSortOrder = groupsSortOrder, variationsMap = variationsMap, preFilterExpression = preFilterExpression) + fun getSearchResults(term: String, facets: List>>? = null, page: Int? = null, perPage: Int? = null, groupId: Int? = null, sortBy: String? = null, sortOrder: String? = null, sectionName: String? = null, hiddenFields: List? = null, hiddenFacets: List? = null, groupsSortBy: String? = null, groupsSortOrder: String? = null, variationsMap: VariationsMap? = null, preFilterExpression: String? = null, fmtOptions: Map? = null): Observable> { + val encodedParams: ArrayList> = getEncodedParams(facets = facets, page = page, perPage = perPage, groupIdInt = groupId, sortBy = sortBy, sortOrder = sortOrder, sectionName = sectionName, hiddenFields = hiddenFields, hiddenFacets = hiddenFacets, groupsSortBy = groupsSortBy, groupsSortOrder = groupsSortOrder, variationsMap = variationsMap, preFilterExpression = preFilterExpression, fmtOptions = fmtOptions) return dataManager.getSearchResults(term.urlEncode(), encodedParams = encodedParams.toTypedArray()) } @@ -460,9 +481,10 @@ object ConstructorIo { * @param groupsSortOrder the sort order for groups * @param variationsMap specify which attributes within variations should be returned * @param preFilterExpression faceting expression to scope results + * @param fmtOptions additional format options to pass */ - suspend fun getSearchResultsCRT(term: String, facets: List>>? = null, page: Int? = null, perPage: Int? = null, groupId: Int? = null, sortBy: String? = null, sortOrder: String? = null, sectionName: String? = null, hiddenFields: List? = null, hiddenFacets: List? = null, groupsSortBy: String? = null, groupsSortOrder: String? = null, variationsMap: VariationsMap? = null, preFilterExpression: String? = null): SearchResponse { - val encodedParams: ArrayList> = getEncodedParams(facets = facets, page = page, perPage = perPage, groupIdInt = groupId, sortBy = sortBy, sortOrder = sortOrder, sectionName = sectionName, hiddenFields = hiddenFields, hiddenFacets = hiddenFacets, groupsSortBy = groupsSortBy, groupsSortOrder = groupsSortOrder, variationsMap = variationsMap, preFilterExpression = preFilterExpression) + suspend fun getSearchResultsCRT(term: String, facets: List>>? = null, page: Int? = null, perPage: Int? = null, groupId: Int? = null, sortBy: String? = null, sortOrder: String? = null, sectionName: String? = null, hiddenFields: List? = null, hiddenFacets: List? = null, groupsSortBy: String? = null, groupsSortOrder: String? = null, variationsMap: VariationsMap? = null, preFilterExpression: String? = null, fmtOptions: Map? = null): SearchResponse { + val encodedParams: ArrayList> = getEncodedParams(facets = facets, page = page, perPage = perPage, groupIdInt = groupId, sortBy = sortBy, sortOrder = sortOrder, sectionName = sectionName, hiddenFields = hiddenFields, hiddenFacets = hiddenFacets, groupsSortBy = groupsSortBy, groupsSortOrder = groupsSortOrder, variationsMap = variationsMap, preFilterExpression = preFilterExpression, fmtOptions = fmtOptions) return dataManager.getSearchResultsCRT(term.urlEncode(), encodedParams = encodedParams.toTypedArray()) } @@ -496,7 +518,7 @@ object ConstructorIo { * @param request the search request object */ fun getSearchResults(request: SearchRequest): Observable> { - val encodedParams: ArrayList> = getEncodedParams(facets = request.filters?.toList(), page = request.page, perPage = request.perPage, sortBy = request.sortBy, sortOrder = request.sortOrder, sectionName = request.section, hiddenFields = request.hiddenFields, hiddenFacets = request.hiddenFacets, groupsSortBy = request.groupsSortBy, groupsSortOrder = request.groupsSortOrder, variationsMap = request.variationsMap, preFilterExpression = request.preFilterExpression) + val encodedParams: ArrayList> = getEncodedParams(facets = request.filters?.toList(), page = request.page, perPage = request.perPage, sortBy = request.sortBy, sortOrder = request.sortOrder, sectionName = request.section, hiddenFields = request.hiddenFields, hiddenFacets = request.hiddenFacets, groupsSortBy = request.groupsSortBy, groupsSortOrder = request.groupsSortOrder, variationsMap = request.variationsMap, preFilterExpression = request.preFilterExpression, fmtOptions = request.fmtOptions) return dataManager.getSearchResults(request.term.urlEncode(), encodedParams = encodedParams.toTypedArray()) } @@ -532,9 +554,10 @@ object ConstructorIo { * @param groupsSortOrder the sort order for groups * @param variationsMap specify which attributes within variations should be returned * @param preFilterExpression faceting expression to scope results + * @param fmtOptions additional format options to pass */ - fun getBrowseResults(filterName: String, filterValue: String, facets: List>>? = null, page: Int? = null, perPage: Int? = null, groupId: Int? = null, sortBy: String? = null, sortOrder: String? = null, sectionName: String? = null, hiddenFields: List? = null, hiddenFacets: List? = null, groupsSortBy: String? = null, groupsSortOrder: String? = null, variationsMap: VariationsMap? = null, preFilterExpression: String? = null): Observable> { - val encodedParams: ArrayList> = getEncodedParams(facets = facets, page = page, perPage = perPage, groupIdInt = groupId, sortBy = sortBy, sortOrder = sortOrder, sectionName = sectionName, hiddenFields = hiddenFields, hiddenFacets = hiddenFacets, groupsSortBy = groupsSortBy, groupsSortOrder = groupsSortOrder, variationsMap = variationsMap, preFilterExpression = preFilterExpression) + fun getBrowseResults(filterName: String, filterValue: String, facets: List>>? = null, page: Int? = null, perPage: Int? = null, groupId: Int? = null, sortBy: String? = null, sortOrder: String? = null, sectionName: String? = null, hiddenFields: List? = null, hiddenFacets: List? = null, groupsSortBy: String? = null, groupsSortOrder: String? = null, variationsMap: VariationsMap? = null, preFilterExpression: String? = null, fmtOptions: Map? = null): Observable> { + val encodedParams: ArrayList> = getEncodedParams(facets = facets, page = page, perPage = perPage, groupIdInt = groupId, sortBy = sortBy, sortOrder = sortOrder, sectionName = sectionName, hiddenFields = hiddenFields, hiddenFacets = hiddenFacets, groupsSortBy = groupsSortBy, groupsSortOrder = groupsSortOrder, variationsMap = variationsMap, preFilterExpression = preFilterExpression, fmtOptions = fmtOptions) return dataManager.getBrowseResults(filterName, filterValue, encodedParams = encodedParams.toTypedArray()) } @@ -568,7 +591,7 @@ object ConstructorIo { * @param request the browse request object */ fun getBrowseResults(request: BrowseRequest): Observable> { - val encodedParams: ArrayList> = getEncodedParams(facets = request.filters?.toList(), page = request.page, perPage = request.perPage, sortBy = request.sortBy, sortOrder = request.sortOrder, sectionName = request.section, hiddenFields = request.hiddenFields, hiddenFacets = request.hiddenFacets, groupsSortBy = request.groupsSortBy, groupsSortOrder = request.groupsSortOrder, variationsMap = request.variationsMap, preFilterExpression = request.preFilterExpression) + val encodedParams: ArrayList> = getEncodedParams(facets = request.filters?.toList(), page = request.page, perPage = request.perPage, sortBy = request.sortBy, sortOrder = request.sortOrder, sectionName = request.section, hiddenFields = request.hiddenFields, hiddenFacets = request.hiddenFacets, groupsSortBy = request.groupsSortBy, groupsSortOrder = request.groupsSortOrder, variationsMap = request.variationsMap, preFilterExpression = request.preFilterExpression, fmtOptions = request.fmtOptions) return dataManager.getBrowseResults(request.filterName, request.filterValue, encodedParams = encodedParams.toTypedArray()) } @@ -605,9 +628,10 @@ object ConstructorIo { * @param groupsSortOrder the sort order for groups * @param variationsMap specify which attributes within variations should be returned * @param preFilterExpression faceting expression to scope results + * @param fmtOptions additional format options to pass */ - suspend fun getBrowseResultsCRT(filterName: String, filterValue: String, facets: List>>? = null, page: Int? = null, perPage: Int? = null, groupId: Int? = null, sortBy: String? = null, sortOrder: String? = null, sectionName: String? = null, hiddenFields: List? = null, hiddenFacets: List? = null, groupsSortBy: String? = null, groupsSortOrder: String? = null, variationsMap: VariationsMap? = null, preFilterExpression: String? = null): BrowseResponse { - val encodedParams: ArrayList> = getEncodedParams(facets = facets, page = page, perPage = perPage, groupIdInt = groupId, sortBy = sortBy, sortOrder = sortOrder, sectionName = sectionName, hiddenFields = hiddenFields, hiddenFacets = hiddenFacets, groupsSortBy = groupsSortBy, groupsSortOrder = groupsSortOrder, variationsMap = variationsMap, preFilterExpression = preFilterExpression) + suspend fun getBrowseResultsCRT(filterName: String, filterValue: String, facets: List>>? = null, page: Int? = null, perPage: Int? = null, groupId: Int? = null, sortBy: String? = null, sortOrder: String? = null, sectionName: String? = null, hiddenFields: List? = null, hiddenFacets: List? = null, groupsSortBy: String? = null, groupsSortOrder: String? = null, variationsMap: VariationsMap? = null, preFilterExpression: String? = null, fmtOptions: Map? = null): BrowseResponse { + val encodedParams: ArrayList> = getEncodedParams(facets = facets, page = page, perPage = perPage, groupIdInt = groupId, sortBy = sortBy, sortOrder = sortOrder, sectionName = sectionName, hiddenFields = hiddenFields, hiddenFacets = hiddenFacets, groupsSortBy = groupsSortBy, groupsSortOrder = groupsSortOrder, variationsMap = variationsMap, preFilterExpression = preFilterExpression, fmtOptions = fmtOptions) return dataManager.getBrowseResultsCRT(filterName, filterValue, encodedParams = encodedParams.toTypedArray()) } @@ -890,9 +914,10 @@ object ConstructorIo { * @param groupsSortOrder the sort order for groups * @param variationsMap specify which attributes within variations should be returned * @param preFilterExpression faceting expression to scope results + * @param fmtOptions additional format options to pass */ - suspend fun getBrowseItemsResultsCRT(itemIds: List, facets: List>>? = null, page: Int? = null, perPage: Int? = null, groupId: Int? = null, sortBy: String? = null, sortOrder: String? = null, sectionName: String? = null, hiddenFields: List? = null, hiddenFacets: List? = null, groupsSortBy: String? = null, groupsSortOrder: String? = null, variationsMap: VariationsMap? = null, preFilterExpression: String? = null): BrowseResponse { - val encodedParams: ArrayList> = getEncodedParams(facets = facets, page = page, perPage = perPage, groupIdInt = groupId, sortBy = sortBy, sortOrder = sortOrder, sectionName = sectionName, hiddenFields = hiddenFields, hiddenFacets = hiddenFacets, ids = itemIds, groupsSortBy = groupsSortBy, groupsSortOrder = groupsSortOrder, variationsMap = variationsMap, preFilterExpression = preFilterExpression) + suspend fun getBrowseItemsResultsCRT(itemIds: List, facets: List>>? = null, page: Int? = null, perPage: Int? = null, groupId: Int? = null, sortBy: String? = null, sortOrder: String? = null, sectionName: String? = null, hiddenFields: List? = null, hiddenFacets: List? = null, groupsSortBy: String? = null, groupsSortOrder: String? = null, variationsMap: VariationsMap? = null, preFilterExpression: String? = null, fmtOptions: Map? = null): BrowseResponse { + val encodedParams: ArrayList> = getEncodedParams(facets = facets, page = page, perPage = perPage, groupIdInt = groupId, sortBy = sortBy, sortOrder = sortOrder, sectionName = sectionName, hiddenFields = hiddenFields, hiddenFacets = hiddenFacets, ids = itemIds, groupsSortBy = groupsSortBy, groupsSortOrder = groupsSortOrder, variationsMap = variationsMap, preFilterExpression = preFilterExpression, fmtOptions = fmtOptions) return dataManager.getBrowseItemsResultsCRT(encodedParams = encodedParams.toTypedArray()) } @@ -926,7 +951,7 @@ object ConstructorIo { * @param request the browse request object */ fun getBrowseItemsResults(request: BrowseItemsRequest): Observable> { - val encodedParams: ArrayList> = getEncodedParams(facets = request.filters?.toList(), page = request.page, perPage = request.perPage, sortBy = request.sortBy, sortOrder = request.sortOrder, sectionName = request.section, hiddenFields = request.hiddenFields, hiddenFacets = request.hiddenFacets, groupsSortBy = request.groupsSortBy, groupsSortOrder = request.groupsSortOrder, variationsMap = request.variationsMap, ids = request.ids, preFilterExpression = request.preFilterExpression) + val encodedParams: ArrayList> = getEncodedParams(facets = request.filters?.toList(), page = request.page, perPage = request.perPage, sortBy = request.sortBy, sortOrder = request.sortOrder, sectionName = request.section, hiddenFields = request.hiddenFields, hiddenFacets = request.hiddenFacets, groupsSortBy = request.groupsSortBy, groupsSortOrder = request.groupsSortOrder, variationsMap = request.variationsMap, ids = request.ids, preFilterExpression = request.preFilterExpression, fmtOptions = request.fmtOptions) return dataManager.getBrowseItemsResults(encodedParams = encodedParams.toTypedArray()) } diff --git a/library/src/main/java/io/constructor/data/builder/BrowseItemsRequest.kt b/library/src/main/java/io/constructor/data/builder/BrowseItemsRequest.kt index 59bc8708..626c56d9 100644 --- a/library/src/main/java/io/constructor/data/builder/BrowseItemsRequest.kt +++ b/library/src/main/java/io/constructor/data/builder/BrowseItemsRequest.kt @@ -19,6 +19,7 @@ class BrowseItemsRequest ( val groupsSortOrder: String? = null, val variationsMap: VariationsMap? = null, val preFilterExpression: String? = null, + val fmtOptions: Map? = null, ) { private constructor(builder: Builder) : this( builder.ids, @@ -34,6 +35,7 @@ class BrowseItemsRequest ( builder.groupsSortOrder, builder.variationsMap, builder.preFilterExpression, + builder.fmtOptions, ) companion object { @@ -55,6 +57,7 @@ class BrowseItemsRequest ( var groupsSortOrder: String? = null var variationsMap: VariationsMap? = null var preFilterExpression: String? = null + var fmtOptions: Map? = null fun setFilters(facets: Map>): Builder = apply { this.filters = facets } fun setPage(page: Int): Builder = apply { this.page = page } @@ -68,6 +71,7 @@ class BrowseItemsRequest ( fun setGroupsSortOrder(groupsSortOrder: String): Builder = apply { this.groupsSortOrder = groupsSortOrder } fun setVariationsMap(variationsMap: VariationsMap): Builder = apply { this.variationsMap = variationsMap } fun setPreFilterExpression(preFilterExpression: String): Builder = apply { this.preFilterExpression = preFilterExpression } + fun setFmtOptions(fmtOptions: Map): Builder = apply { this.fmtOptions = fmtOptions } fun build(): BrowseItemsRequest = BrowseItemsRequest(this) } } diff --git a/library/src/main/java/io/constructor/data/builder/BrowseRequest.kt b/library/src/main/java/io/constructor/data/builder/BrowseRequest.kt index 8f56ed1e..f698764c 100644 --- a/library/src/main/java/io/constructor/data/builder/BrowseRequest.kt +++ b/library/src/main/java/io/constructor/data/builder/BrowseRequest.kt @@ -20,6 +20,7 @@ class BrowseRequest ( val groupsSortOrder: String? = null, val variationsMap: VariationsMap? = null, val preFilterExpression: String? = null, + val fmtOptions: Map? = null, ) { private constructor(builder: Builder) : this( builder.filterName, @@ -36,6 +37,7 @@ class BrowseRequest ( builder.groupsSortOrder, builder.variationsMap, builder.preFilterExpression, + builder.fmtOptions, ) companion object { @@ -58,6 +60,7 @@ class BrowseRequest ( var groupsSortOrder: String? = null var variationsMap: VariationsMap? = null var preFilterExpression: String? = null + var fmtOptions: Map? = null fun setFilters(facets: Map>): Builder = apply { this.filters = facets } fun setPage(page: Int): Builder = apply { this.page = page } @@ -71,6 +74,7 @@ class BrowseRequest ( fun setGroupsSortOrder(groupsSortOrder: String): Builder = apply { this.groupsSortOrder = groupsSortOrder } fun setVariationsMap(variationsMap: VariationsMap): Builder = apply { this.variationsMap = variationsMap } fun setPreFilterExpression(preFilterExpression: String): Builder = apply { this.preFilterExpression = preFilterExpression } + fun setFmtOptions(fmtOptions: Map): Builder = apply { this.fmtOptions = fmtOptions } fun build(): BrowseRequest = BrowseRequest(this) } } \ No newline at end of file diff --git a/library/src/main/java/io/constructor/data/builder/SearchRequest.kt b/library/src/main/java/io/constructor/data/builder/SearchRequest.kt index 07b4c448..df3aaea5 100644 --- a/library/src/main/java/io/constructor/data/builder/SearchRequest.kt +++ b/library/src/main/java/io/constructor/data/builder/SearchRequest.kt @@ -19,6 +19,7 @@ class SearchRequest ( val groupsSortOrder: String? = null, val variationsMap: VariationsMap? = null, val preFilterExpression: String? = null, + val fmtOptions: Map? = null, ) { private constructor(builder: Builder) : this( builder.term, @@ -33,7 +34,8 @@ class SearchRequest ( builder.groupsSortBy, builder.groupsSortOrder, builder.variationsMap, - builder.preFilterExpression + builder.preFilterExpression, + builder.fmtOptions, ) companion object { @@ -55,6 +57,7 @@ class SearchRequest ( var groupsSortOrder: String? = null var variationsMap: VariationsMap? = null var preFilterExpression: String? = null + var fmtOptions: Map? = null fun setFilters(facets: Map>): Builder = apply { this.filters = facets } @@ -69,6 +72,7 @@ class SearchRequest ( fun setGroupsSortOrder(groupsSortOrder: String): Builder = apply { this.groupsSortOrder = groupsSortOrder } fun setVariationsMap(variationsMap: VariationsMap): Builder = apply { this.variationsMap = variationsMap } fun setPreFilterExpression(preFilterExpression: String): Builder = apply { this.preFilterExpression = preFilterExpression } + fun setFmtOptions(fmtOptions: Map): Builder = apply { this.fmtOptions = fmtOptions } fun build(): SearchRequest = SearchRequest(this) } } \ No newline at end of file diff --git a/library/src/test/java/io/constructor/core/ConstructorIoIntegrationTest.kt b/library/src/test/java/io/constructor/core/ConstructorIoIntegrationTest.kt index 126a2d23..c91ec0a3 100644 --- a/library/src/test/java/io/constructor/core/ConstructorIoIntegrationTest.kt +++ b/library/src/test/java/io/constructor/core/ConstructorIoIntegrationTest.kt @@ -1224,6 +1224,23 @@ class ConstructorIoIntegrationTest { Thread.sleep(timeBetweenTests) } + @Test + fun getSearchResultsWithFmtOptionsAgainstRealResponse() { + val observer = constructorIo.getSearchResults( + term = "item1", + fmtOptions = mapOf("groups_sort_order" to "ascending", "groups_sort_by" to "value", "groups_start" to "group_id:Brands", "fields" to listOf("test", "test2")) + ).test() + observer.assertComplete() + observer.assertNoErrors() + + val searchResponse = observer.values()[0].get() + assertTrue(searchResponse?.resultId !== null) + assertTrue(searchResponse?.response?.groups!!.isNotEmpty()) + assertEquals(searchResponse?.response?.groups?.get(0)?.displayName, "Brands") + + Thread.sleep(timeBetweenTests) + } + @Test fun getSearchResultsWithGroupsSortValueDescendingAgainstRealResponse() { val observer = constructorIo.getSearchResults( @@ -1621,6 +1638,24 @@ class ConstructorIoIntegrationTest { Thread.sleep(timeBetweenTests) } + @Test + fun getBrowseResultsWithFmtOptionsAgainstRealResponse() { + val observer = constructorIo.getBrowseResults( + filterName = "Brand", + filterValue = "XYZ", + fmtOptions = mapOf("groups_sort_order" to "ascending", "groups_sort_by" to "value", "groups_start" to "group_id:Brands", "fields" to listOf("test", "test2")) + ).test() + observer.assertComplete() + observer.assertNoErrors() + + val browseResponse = observer.values()[0].get() + assertTrue(browseResponse?.resultId !== null) + assertTrue(browseResponse?.response?.groups!!.isNotEmpty()) + assertEquals(browseResponse?.response?.groups?.get(0)?.displayName, "Brands") + + Thread.sleep(timeBetweenTests) + } + @Test fun getBrowseResultsWithGroupsSortValueAscendingAgainstRealResponse() { val observer = constructorIo.getBrowseResults( diff --git a/library/src/test/java/io/constructor/core/ConstructorioBrowseItemsTest.kt b/library/src/test/java/io/constructor/core/ConstructorioBrowseItemsTest.kt index cfb8a087..846d8bc8 100644 --- a/library/src/test/java/io/constructor/core/ConstructorioBrowseItemsTest.kt +++ b/library/src/test/java/io/constructor/core/ConstructorioBrowseItemsTest.kt @@ -226,6 +226,21 @@ class ConstructorIoBrowseItemsTest { assert(request.path!!.startsWith(path)) } + @Test + fun getBrowseResultWithFmtOptions() { + val mockResponse = MockResponse().setResponseCode(200) + .setBody(TestDataLoader.loadAsString("browse_response.json")) + mockServer.enqueue(mockResponse) + val fmtOptions = mapOf("groups_start" to 5,"show_hidden_facets" to false, "groups_sort_order" to "ascending", "fields" to listOf(false, "test2")) + val browseItemsRequest = BrowseItemsRequest.Builder(ids) + .setFmtOptions(fmtOptions) + .build() + val observer = constructorIo.getBrowseItemsResults(browseItemsRequest).test() + val request = mockServer.takeRequest() + 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=" + assert(request.path!!.startsWith(path)) + } + @Test fun getBrowseItemsResultsWithVariationsMapsUsingBuilder() { val mockResponse = MockResponse().setResponseCode(200) diff --git a/library/src/test/java/io/constructor/core/ConstructorioBrowseTest.kt b/library/src/test/java/io/constructor/core/ConstructorioBrowseTest.kt index 30e33bab..99c92d31 100644 --- a/library/src/test/java/io/constructor/core/ConstructorioBrowseTest.kt +++ b/library/src/test/java/io/constructor/core/ConstructorioBrowseTest.kt @@ -261,6 +261,23 @@ class ConstructorIoBrowseTest { assert(request.path!!.startsWith(path)) } + @Test + fun getBrowseResultWithFmtOptions() { + val mockResponse = MockResponse().setResponseCode(200) + .setBody(TestDataLoader.loadAsString("browse_response.json")) + mockServer.enqueue(mockResponse) + val fmtOptions = mapOf("groups_start" to 5,"show_hidden_facets" to false, "groups_sort_order" to "ascending", "fields" to listOf(false, "test2")) + val observer = constructorIo.getBrowseResults( + filterName = "group_id", + filterValue = "Beverages", + fmtOptions = fmtOptions + ).test() + val request = mockServer.takeRequest() + val path = + "/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=" + assert(request.path!!.startsWith(path)) + } + @Test fun getBrowseResultWithPreFilterExpression() { val mockResponse = MockResponse().setResponseCode(200) diff --git a/library/src/test/java/io/constructor/core/ConstructorioSearchTest.kt b/library/src/test/java/io/constructor/core/ConstructorioSearchTest.kt index 88c06866..6a070f72 100644 --- a/library/src/test/java/io/constructor/core/ConstructorioSearchTest.kt +++ b/library/src/test/java/io/constructor/core/ConstructorioSearchTest.kt @@ -279,6 +279,22 @@ class ConstructorIoSearchTest { assert(request.path!!.startsWith(path)) } + @Test + fun getSearchResultsWithFmtOptions() { + val mockResponse = MockResponse().setResponseCode(200) + .setBody(TestDataLoader.loadAsString("search_response.json")) + mockServer.enqueue(mockResponse) + val fmtOptions = mapOf("groups_start" to 5,"show_hidden_facets" to false, "groups_sort_order" to "ascending", "fields" to listOf(false, "test2")) + val observer = constructorIo.getSearchResults( + term = "bbq", + fmtOptions = fmtOptions, + ).test() + val request = mockServer.takeRequest() + val path = + "/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=" + assert(request.path!!.startsWith(path)) + } + @Test fun getSearchResultsWithFiltersUsingBuilder() { val mockResponse = MockResponse().setResponseCode(200)