Skip to content

Commit e1cef13

Browse files
committed
ECWID-153684 - added tests.
1 parent 041295c commit e1cef13

3 files changed

Lines changed: 106 additions & 0 deletions

File tree

src/main/kotlin/com/ecwid/apiclient/v3/CategoriesApiClient.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.ecwid.apiclient.v3
22

3+
import com.ecwid.apiclient.v3.dto.brand.request.BrandsSearchRequest
4+
import com.ecwid.apiclient.v3.dto.brand.result.BrandsSearchResult
35
import com.ecwid.apiclient.v3.dto.category.request.*
46
import com.ecwid.apiclient.v3.dto.category.result.*
57
import com.ecwid.apiclient.v3.dto.common.PagingResult
@@ -37,6 +39,8 @@ interface CategoriesApiClient {
3739
fun deleteCategoryImage(request: CategoryImageDeleteRequest): CategoryImageDeleteResult
3840
fun assignProductsToCategory(request: AssignProductsToCategoryRequest): CategoryUpdateResult
3941
fun unassignProductsFromCategory(request: UnassignProductsFromCategoryRequest): CategoryDeleteResult
42+
43+
fun getBrands(request: BrandsSearchRequest): BrandsSearchResult
4044
}
4145

4246
@Suppress("EXTENSION_SHADOWED_BY_MEMBER")

src/main/kotlin/com/ecwid/apiclient/v3/impl/CategoriesApiClientImpl.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package com.ecwid.apiclient.v3.impl
22

33
import com.ecwid.apiclient.v3.ApiClientHelper
44
import com.ecwid.apiclient.v3.CategoriesApiClient
5+
import com.ecwid.apiclient.v3.dto.brand.request.BrandsSearchRequest
6+
import com.ecwid.apiclient.v3.dto.brand.result.BrandsSearchResult
57
import com.ecwid.apiclient.v3.dto.category.request.*
68
import com.ecwid.apiclient.v3.dto.category.result.*
79
import com.ecwid.apiclient.v3.dto.common.PagingResult
@@ -112,4 +114,7 @@ internal class CategoriesApiClientImpl(
112114
): Sequence<Item> where Result : PartialResult<CategoriesSearchResult>, Result : PagingResult<Item> {
113115
return fetchPagesAsItemSequence(request) { searchCategoriesByPath(it, resultClass) }
114116
}
117+
118+
override fun getBrands(request: BrandsSearchRequest) =
119+
apiClientHelper.makeObjectResultRequest<BrandsSearchResult>(request)
115120
}
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package com.ecwid.apiclient.v3.entity
2+
3+
import com.ecwid.apiclient.v3.dto.brand.request.BrandsSearchRequest
4+
import com.ecwid.apiclient.v3.dto.product.request.ProductCreateRequest
5+
import com.ecwid.apiclient.v3.dto.product.request.ProductsSearchRequest.ByFilters
6+
import com.ecwid.apiclient.v3.dto.product.request.UpdatedProduct
7+
import com.ecwid.apiclient.v3.dto.product.request.UpdatedProduct.*
8+
import com.ecwid.apiclient.v3.util.randomAlphanumeric
9+
import com.ecwid.apiclient.v3.util.randomPrice
10+
import org.junit.jupiter.api.Assertions.assertTrue
11+
import org.junit.jupiter.api.BeforeEach
12+
import kotlin.test.Test
13+
import kotlin.test.assertEquals
14+
15+
class BrandsTest : BaseEntityTest() {
16+
17+
@BeforeEach
18+
override fun beforeEach() {
19+
super.beforeEach()
20+
21+
initStoreProfile()
22+
removeAllProducts()
23+
}
24+
25+
@Test
26+
fun getBrands() {
27+
val brandedProductsCreateResult = createProductsWithBrands()
28+
29+
// Waiting till product became available for searching
30+
brandedProductsCreateResult.skus.forEach { sku ->
31+
waitForIndexedProducts(
32+
productsSearchRequest = ByFilters(sku = sku),
33+
desiredProductCount = 1
34+
)
35+
}
36+
37+
val result = apiClient.getBrands(BrandsSearchRequest.ByFilters())
38+
assertEquals(
39+
brandedProductsCreateResult.brandNames,
40+
result.items.map { it.name }
41+
)
42+
}
43+
44+
private fun createProductsWithBrands(productsCount: Int = 5): BrandedProductsCreateResult {
45+
val brands = mutableListOf<String>()
46+
val skus = mutableListOf<String>()
47+
48+
for (i in 1..productsCount) {
49+
val randomBrand = randomAlphanumeric(8)
50+
val randomSku = randomAlphanumeric(10)
51+
val price = randomPrice()
52+
53+
val productCreateRequest = ProductCreateRequest(
54+
newProduct = UpdatedProduct(
55+
name = "Product ${randomAlphanumeric(8)}",
56+
sku = randomSku,
57+
price = price,
58+
compareToPrice = 2 * price,
59+
enabled = true,
60+
quantity = 10,
61+
attributes = listOf(
62+
AttributeValue.createBrandAttributeValue(randomBrand),
63+
AttributeValue.createUpcAttributeValue("UPC ${randomAlphanumeric(8)}")
64+
),
65+
options = listOf(
66+
ProductOption.createSelectOption(
67+
name = "Color",
68+
choices = listOf(
69+
ProductOptionChoice("Black"),
70+
ProductOptionChoice("White"),
71+
ProductOptionChoice("Yellow"),
72+
ProductOptionChoice("Red")
73+
),
74+
defaultChoice = 0,
75+
required = true
76+
)
77+
)
78+
)
79+
)
80+
val productCreateResult = apiClient.createProduct(productCreateRequest)
81+
assertTrue(productCreateResult.id > 0)
82+
83+
skus.add(randomSku)
84+
brands.add(randomBrand)
85+
}
86+
87+
return BrandedProductsCreateResult(
88+
brandNames = brands,
89+
skus = skus,
90+
)
91+
}
92+
93+
data class BrandedProductsCreateResult(
94+
val brandNames: List<String>,
95+
val skus: List<String>,
96+
)
97+
}

0 commit comments

Comments
 (0)