Skip to content

Commit 4b8cf1f

Browse files
ECWID-157318 Negative promo targets - filter categories for exclusion list - apiclient
- added CategoriesSearchRequest::parentCategoryIds and CategoriesSearchRequest::withSubcategories fields - updated CategoriesTest::testSearchByFilters to have more meaningful variable names and cases with new fields
1 parent f3398c7 commit 4b8cf1f

File tree

3 files changed

+159
-43
lines changed

3 files changed

+159
-43
lines changed

src/main/kotlin/com/ecwid/apiclient/v3/dto/category/request/CategoriesSearchRequest.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ import com.ecwid.apiclient.v3.responsefields.ResponseFields
88
data class CategoriesSearchRequest(
99
val keyword: String? = null,
1010
val parentCategoryId: ParentCategory = ParentCategory.Any,
11+
val parentCategoryIds: List<Long>? = null,
1112
val categoryIds: List<Int>? = null,
1213
val hiddenCategories: Boolean? = null,
14+
val withSubcategories: Boolean = false,
1315
val returnProductIds: Boolean? = null,
1416
val baseUrl: String? = null,
1517
val cleanUrls: Boolean? = null,
@@ -48,8 +50,10 @@ data class CategoriesSearchRequest(
4850
return mutableMapOf<String, String>().apply {
4951
request.keyword?.let { put("keyword", it) }
5052
parentCategoryId?.let { put("parent", it.toString()) }
53+
request.parentCategoryIds?.let { put("parentIds", it.joinToString(",")) }
5154
request.categoryIds?.let { put("categoryIds", it.joinToString(",")) }
5255
request.hiddenCategories?.let { put("hidden_categories", it.toString()) }
56+
put("withSubcategories", request.withSubcategories.toString())
5357
request.returnProductIds?.let { put("productIds", it.toString()) }
5458
request.baseUrl?.let { put("baseUrl", it) }
5559
request.cleanUrls?.let { put("cleanUrls", it.toString()) }

src/test/kotlin/com/ecwid/apiclient/v3/entity/CategoriesTest.kt

Lines changed: 154 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -46,124 +46,235 @@ class CategoriesTest : BaseEntityTest() {
4646
val productCreateResult2 = apiClient.createProduct(productCreateRequest2)
4747
assertTrue(productCreateResult2.id > 0)
4848

49+
val productCreateRequest3 = ProductCreateRequest(
50+
newProduct = generateTestProduct(nameSuffix = "testSearchByFilters", enabled = true)
51+
)
52+
val productCreateResult3 = apiClient.createProduct(productCreateRequest3)
53+
assertTrue(productCreateResult3.id > 0)
54+
4955
// Creating some categories
50-
val categoryCreateRequest1 = CategoryCreateRequest(
56+
val requestTrunkA = CategoryCreateRequest(
5157
newCategory = generateTestCategory(enabled = true)
5258
)
53-
val categoryCreateResult1 = apiClient.createCategory(categoryCreateRequest1)
54-
assertTrue(categoryCreateResult1.id > 0)
59+
val trunkA = apiClient.createCategory(requestTrunkA)
60+
assertTrue(trunkA.id > 0)
5561

56-
val categoryCreateRequest2 = CategoryCreateRequest(
62+
val requestBranchAA = CategoryCreateRequest(
63+
newCategory = generateTestCategory(
64+
parentCategoryId = trunkA.id,
65+
enabled = true
66+
)
67+
)
68+
val branchAA = apiClient.createCategory(requestBranchAA)
69+
assertTrue(branchAA.id > 0)
70+
71+
val requestTrunkB = CategoryCreateRequest(
5772
newCategory = generateTestCategory(enabled = false)
5873
)
59-
val categoryCreateResult2 = apiClient.createCategory(categoryCreateRequest2)
60-
assertTrue(categoryCreateResult2.id > 0)
74+
val trunkB = apiClient.createCategory(requestTrunkB)
75+
assertTrue(trunkB.id > 0)
6176

62-
val categoryCreateRequest3 = CategoryCreateRequest(
77+
val requestBranchBA = CategoryCreateRequest(
6378
newCategory = generateTestCategory(
64-
parentCategoryId = categoryCreateResult2.id,
79+
parentCategoryId = trunkB.id,
6580
productIds = listOf(productCreateResult1.id, productCreateResult2.id),
6681
enabled = false
6782
)
6883
)
69-
val categoryCreateResult3 = apiClient.createCategory(categoryCreateRequest3)
70-
assertTrue(categoryCreateResult3.id > 0)
84+
val branchBA = apiClient.createCategory(requestBranchBA)
85+
assertTrue(branchBA.id > 0)
86+
87+
val requestLeafBAA = CategoryCreateRequest(
88+
newCategory = generateTestCategory(
89+
parentCategoryId = branchBA.id,
90+
productIds = listOf(productCreateResult3.id),
91+
enabled = false
92+
)
93+
)
94+
val leafBAA = apiClient.createCategory(requestLeafBAA)
95+
assertTrue(leafBAA.id > 0)
7196

7297
// Trying to search by different filters
73-
val searchCategoriesResult1 = waitForIndexedCategories(
98+
val searchDescendantsOfTrunkB = waitForIndexedCategories(
7499
categoriesSearchRequest = CategoriesSearchRequest(
75-
parentCategoryId = ParentCategory.WithId(categoryCreateResult2.id),
100+
parentCategoryId = ParentCategory.WithId(trunkB.id),
76101
hiddenCategories = true
77102
),
78103
desiredCategoriesCount = 1
79104
)
80-
assertEquals(1, searchCategoriesResult1.total)
105+
assertEquals(1, searchDescendantsOfTrunkB.total)
81106
assertCategory(
82-
desiredId = categoryCreateResult3.id,
107+
desiredId = branchBA.id,
83108
desiredProductIds = null,
84-
categoriesSearchResult = searchCategoriesResult1
109+
categoriesSearchResult = searchDescendantsOfTrunkB
85110
)
86111

87-
val searchCategoriesResult2 = waitForIndexedCategories(
112+
val searchRootCategories = waitForIndexedCategories(
88113
categoriesSearchRequest = CategoriesSearchRequest(
89114
parentCategoryId = ParentCategory.Root,
90115
hiddenCategories = true
91116
),
92117
desiredCategoriesCount = 2
93118
)
94-
assertEquals(2, searchCategoriesResult2.total)
119+
assertEquals(2, searchRootCategories.total)
95120
assertCategory(
96-
desiredId = categoryCreateResult1.id,
121+
desiredId = trunkA.id,
97122
desiredProductIds = null,
98-
categoriesSearchResult = searchCategoriesResult2
123+
categoriesSearchResult = searchRootCategories
99124
)
100125
assertCategory(
101-
desiredId = categoryCreateResult2.id,
126+
desiredId = trunkB.id,
102127
desiredProductIds = null,
103-
categoriesSearchResult = searchCategoriesResult2
128+
categoriesSearchResult = searchRootCategories
104129
)
105130

106-
val searchCategoriesResult3 = waitForIndexedCategories(
131+
val searchAllCategoriesWithProducts = waitForIndexedCategories(
107132
categoriesSearchRequest = CategoriesSearchRequest(
108133
parentCategoryId = ParentCategory.Any,
109134
hiddenCategories = true,
110135
returnProductIds = true
111136
),
112-
desiredCategoriesCount = 3
137+
desiredCategoriesCount = 5
113138
)
114-
assertEquals(3, searchCategoriesResult3.total)
139+
assertEquals(5, searchAllCategoriesWithProducts.total)
115140
assertCategory(
116-
desiredId = categoryCreateResult1.id,
141+
desiredId = trunkA.id,
117142
desiredProductIds = null,
118-
categoriesSearchResult = searchCategoriesResult3
143+
categoriesSearchResult = searchAllCategoriesWithProducts
119144
)
120145
assertCategory(
121-
desiredId = categoryCreateResult2.id,
146+
desiredId = branchAA.id,
122147
desiredProductIds = null,
123-
categoriesSearchResult = searchCategoriesResult3
148+
categoriesSearchResult = searchAllCategoriesWithProducts
124149
)
125150
assertCategory(
126-
desiredId = categoryCreateResult3.id,
151+
desiredId = trunkB.id,
152+
desiredProductIds = null,
153+
categoriesSearchResult = searchAllCategoriesWithProducts
154+
)
155+
assertCategory(
156+
desiredId = branchBA.id,
127157
desiredProductIds = listOf(productCreateResult1.id, productCreateResult2.id),
128-
categoriesSearchResult = searchCategoriesResult3
158+
categoriesSearchResult = searchAllCategoriesWithProducts
159+
)
160+
assertCategory(
161+
desiredId = leafBAA.id,
162+
desiredProductIds = listOf(productCreateResult3.id),
163+
categoriesSearchResult = searchAllCategoriesWithProducts
129164
)
130165

131-
val searchCategoriesResult4 = waitForIndexedCategories(
166+
val searchAllCategories = waitForIndexedCategories(
132167
categoriesSearchRequest = CategoriesSearchRequest(
133168
parentCategoryId = ParentCategory.Any,
134169
hiddenCategories = true
135170
),
136-
desiredCategoriesCount = 3
171+
desiredCategoriesCount = 5
137172
)
138-
assertEquals(3, searchCategoriesResult3.total)
173+
assertEquals(5, searchAllCategoriesWithProducts.total)
139174
assertCategory(
140-
desiredId = categoryCreateResult1.id,
175+
desiredId = trunkA.id,
141176
desiredProductIds = null,
142-
categoriesSearchResult = searchCategoriesResult4
177+
categoriesSearchResult = searchAllCategories
143178
)
144179
assertCategory(
145-
desiredId = categoryCreateResult2.id,
180+
desiredId = branchAA.id,
146181
desiredProductIds = null,
147-
categoriesSearchResult = searchCategoriesResult4
182+
categoriesSearchResult = searchAllCategories
148183
)
149184
assertCategory(
150-
desiredId = categoryCreateResult3.id,
185+
desiredId = trunkB.id,
151186
desiredProductIds = null,
152-
categoriesSearchResult = searchCategoriesResult4
187+
categoriesSearchResult = searchAllCategories
188+
)
189+
assertCategory(
190+
desiredId = branchBA.id,
191+
desiredProductIds = null,
192+
categoriesSearchResult = searchAllCategories
193+
)
194+
assertCategory(
195+
desiredId = leafBAA.id,
196+
desiredProductIds = null,
197+
categoriesSearchResult = searchAllCategories
153198
)
154199

155-
val searchCategoriesResult5 = waitForIndexedCategories(
200+
val searchActiveCategories = waitForIndexedCategories(
156201
categoriesSearchRequest = CategoriesSearchRequest(
157202
parentCategoryId = ParentCategory.Any,
158203
hiddenCategories = false
159204
),
205+
desiredCategoriesCount = 2
206+
)
207+
assertEquals(2, searchActiveCategories.total)
208+
assertCategory(
209+
desiredId = trunkA.id,
210+
desiredProductIds = null,
211+
categoriesSearchResult = searchActiveCategories
212+
)
213+
assertCategory(
214+
desiredId = branchAA.id,
215+
desiredProductIds = null,
216+
categoriesSearchResult = searchActiveCategories
217+
)
218+
219+
val searchDirectDescendantsOfTrunkB = waitForIndexedCategories(
220+
categoriesSearchRequest = CategoriesSearchRequest(
221+
parentCategoryIds = listOf(trunkB.id.toLong()),
222+
withSubcategories = false,
223+
hiddenCategories = true,
224+
),
160225
desiredCategoriesCount = 1
161226
)
162-
assertEquals(1, searchCategoriesResult5.total)
227+
assertEquals(1, searchDirectDescendantsOfTrunkB.total)
228+
assertCategory(
229+
desiredId = branchBA.id,
230+
desiredProductIds = null,
231+
categoriesSearchResult = searchDirectDescendantsOfTrunkB
232+
)
233+
234+
val searchAllDescendantsOfTrunkB = waitForIndexedCategories(
235+
categoriesSearchRequest = CategoriesSearchRequest(
236+
parentCategoryIds = listOf(trunkB.id.toLong()),
237+
withSubcategories = true,
238+
hiddenCategories = true,
239+
),
240+
desiredCategoriesCount = 2
241+
)
242+
assertEquals(2, searchAllDescendantsOfTrunkB.total)
243+
assertCategory(
244+
desiredId = branchBA.id,
245+
desiredProductIds = null,
246+
categoriesSearchResult = searchAllDescendantsOfTrunkB
247+
)
248+
assertCategory(
249+
desiredId = leafBAA.id,
250+
desiredProductIds = null,
251+
categoriesSearchResult = searchAllDescendantsOfTrunkB
252+
)
253+
254+
val searchDescendantsViaTwoFields = waitForIndexedCategories(
255+
categoriesSearchRequest = CategoriesSearchRequest(
256+
parentCategoryId = ParentCategory.WithId(trunkA.id),
257+
parentCategoryIds = listOf(trunkB.id.toLong()),
258+
withSubcategories = true,
259+
hiddenCategories = true,
260+
),
261+
desiredCategoriesCount = 3
262+
)
263+
assertEquals(3, searchDescendantsViaTwoFields.total)
264+
assertCategory(
265+
desiredId = branchAA.id,
266+
desiredProductIds = null,
267+
categoriesSearchResult = searchDescendantsViaTwoFields
268+
)
269+
assertCategory(
270+
desiredId = branchBA.id,
271+
desiredProductIds = null,
272+
categoriesSearchResult = searchDescendantsViaTwoFields
273+
)
163274
assertCategory(
164-
desiredId = categoryCreateResult1.id,
275+
desiredId = leafBAA.id,
165276
desiredProductIds = null,
166-
categoriesSearchResult = searchCategoriesResult5
277+
categoriesSearchResult = searchDescendantsViaTwoFields
167278
)
168279
}
169280

src/test/kotlin/com/ecwid/apiclient/v3/rule/nullablepropertyrules/CategoriesSearchRequestRules.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import com.ecwid.apiclient.v3.rule.NullablePropertyRule.AllowNullable
77
val categoriesSearchRequestNullablePropertyRules: List<NullablePropertyRule<*, *>> = listOf(
88
AllowNullable(CategoriesSearchRequest::baseUrl),
99
AllowNullable(CategoriesSearchRequest::categoryIds),
10+
AllowNullable(CategoriesSearchRequest::parentCategoryIds),
1011
AllowNullable(CategoriesSearchRequest::cleanUrls),
1112
AllowNullable(CategoriesSearchRequest::slugsWithoutIds),
1213
AllowNullable(CategoriesSearchRequest::hiddenCategories),

0 commit comments

Comments
 (0)