diff --git a/personalization-sdk/src/main/kotlin/com/personalization/api/responses/search/PopularItem.kt b/personalization-sdk/src/main/kotlin/com/personalization/api/responses/search/PopularItem.kt new file mode 100644 index 00000000..b6d0bd9f --- /dev/null +++ b/personalization-sdk/src/main/kotlin/com/personalization/api/responses/search/PopularItem.kt @@ -0,0 +1,10 @@ +package com.personalization.api.responses.search + +import com.google.gson.annotations.SerializedName + +data class PopularItem( + @SerializedName("name") + val name: String, + @SerializedName("url") + val url: String +) diff --git a/personalization-sdk/src/main/kotlin/com/personalization/api/responses/search/SearchBlankResponse.kt b/personalization-sdk/src/main/kotlin/com/personalization/api/responses/search/SearchBlankResponse.kt index 9c6393d0..d5ca4563 100644 --- a/personalization-sdk/src/main/kotlin/com/personalization/api/responses/search/SearchBlankResponse.kt +++ b/personalization-sdk/src/main/kotlin/com/personalization/api/responses/search/SearchBlankResponse.kt @@ -9,5 +9,11 @@ data class SearchBlankResponse( @SerializedName("products") val products: List, @SerializedName("suggests") - val suggests: List + val suggests: List, + @SerializedName("popular_categories") + val popularCategories: List?, + @SerializedName("popular_brands") + val popularBrands: List?, + @SerializedName("popular_links") + val popularLinks: List? ) diff --git a/personalization-sdk/src/test/kotlin/com/personalization/features/search/SearchBlankResponseParsingTest.kt b/personalization-sdk/src/test/kotlin/com/personalization/features/search/SearchBlankResponseParsingTest.kt new file mode 100644 index 00000000..68372e23 --- /dev/null +++ b/personalization-sdk/src/test/kotlin/com/personalization/features/search/SearchBlankResponseParsingTest.kt @@ -0,0 +1,49 @@ +package com.personalization.features.search + +import com.google.gson.Gson +import com.personalization.api.responses.search.SearchBlankResponse +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNull +import org.junit.Test + +class SearchBlankResponseParsingTest { + + private val gson = Gson() + + private val json = """ + { + "html": "", + "products": [], + "suggests": [], + "popular_categories": [{"name": "Электроника", "url": "/electronics"}], + "popular_brands": [{"name": "Samsung", "url": "/samsung"}], + "popular_links": [{"name": "Блог", "url": "/blog"}, {"name": "Кейсы", "url": "/cases"}] + } + """.trimIndent() + + @Test + fun `popular fields are parsed from JSON`() { + val response = gson.fromJson(json, SearchBlankResponse::class.java) + + assertEquals(1, response.popularCategories!!.size) + assertEquals("Электроника", response.popularCategories!![0].name) + assertEquals("/electronics", response.popularCategories!![0].url) + + assertEquals(1, response.popularBrands!!.size) + assertEquals("Samsung", response.popularBrands!![0].name) + + assertEquals(2, response.popularLinks!!.size) + assertEquals("Блог", response.popularLinks!![0].name) + assertEquals("Кейсы", response.popularLinks!![1].name) + } + + @Test + fun `missing popular fields default to empty list`() { + val minimalJson = """{"html": "", "products": [], "suggests": []}""" + val response = gson.fromJson(minimalJson, SearchBlankResponse::class.java) + + assertNull(response.popularCategories) + assertNull(response.popularBrands) + assertNull(response.popularLinks) + } +}