From f301878c9bf1cc2f39c97422aeac2ae84074060d Mon Sep 17 00:00:00 2001 From: Yuri Titov Date: Mon, 14 Sep 2026 21:11:37 +0400 Subject: [PATCH 1/5] Make variation IDs long --- .../ecwid/apiclient/v3/dto/cart/request/OrderForCalculate.kt | 2 +- .../apiclient/v3/dto/cart/result/CalculateOrderDetailsResult.kt | 2 +- .../com/ecwid/apiclient/v3/dto/cart/result/FetchedCart.kt | 2 +- .../com/ecwid/apiclient/v3/dto/order/request/UpdatedOrder.kt | 2 +- .../com/ecwid/apiclient/v3/dto/order/result/FetchedOrder.kt | 2 +- .../com/ecwid/apiclient/v3/dto/product/result/FetchedProduct.kt | 2 +- .../ecwid/apiclient/v3/dto/variation/result/FetchedVariation.kt | 2 +- src/test/kotlin/com/ecwid/apiclient/v3/entity/CartsTest.kt | 2 +- src/test/kotlin/com/ecwid/apiclient/v3/util/OrderUtils.kt | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/cart/request/OrderForCalculate.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/cart/request/OrderForCalculate.kt index 9efe48aec..865c9cf0a 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/cart/request/OrderForCalculate.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/cart/request/OrderForCalculate.kt @@ -111,7 +111,7 @@ data class OrderForCalculate( val giftCard: Boolean? = null, val selectedOptions: List? = null, - val combinationId: Int? = null, + val combinationId: Long? = null, val taxes: List? = null, val files: List? = null, val dimensions: ProductDimensions? = null, diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/cart/result/CalculateOrderDetailsResult.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/cart/result/CalculateOrderDetailsResult.kt index 4f59ec948..bad6efff9 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/cart/result/CalculateOrderDetailsResult.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/cart/result/CalculateOrderDetailsResult.kt @@ -166,7 +166,7 @@ data class CalculateOrderDetailsResult( val giftCard: Boolean? = null, val selectedOptions: List? = null, - val combinationId: Int? = null, + val combinationId: Long? = null, val taxes: List? = null, val files: List? = null, val dimensions: ProductDimensions? = null, diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/cart/result/FetchedCart.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/cart/result/FetchedCart.kt index 8b4a0a4e9..0e766ef7e 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/cart/result/FetchedCart.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/cart/result/FetchedCart.kt @@ -153,7 +153,7 @@ data class FetchedCart( val giftCard: Boolean? = null, val selectedOptions: List? = null, - val combinationId: Int? = null, + val combinationId: Long? = null, val taxes: List? = null, val files: List? = null, val dimensions: ProductDimensions? = null, diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/order/request/UpdatedOrder.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/order/request/UpdatedOrder.kt index 82358cc5b..614ff04e6 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/order/request/UpdatedOrder.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/order/request/UpdatedOrder.kt @@ -176,7 +176,7 @@ data class UpdatedOrder( val giftCard: Boolean? = null, val selectedOptions: List? = null, - val combinationId: Int? = null, + val combinationId: Long? = null, val taxes: List? = null, val dimensions: ProductDimensions? = null, val discountsAllowed: Boolean? = null, diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/order/result/FetchedOrder.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/order/result/FetchedOrder.kt index c6348b019..aed468442 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/order/result/FetchedOrder.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/order/result/FetchedOrder.kt @@ -218,7 +218,7 @@ data class FetchedOrder( val subscriptionId: Long? = null, val selectedOptions: List? = null, - val combinationId: Int? = null, + val combinationId: Long? = null, val files: List? = null, val taxable: Boolean? = null, val taxes: List? = null, diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/product/result/FetchedProduct.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/product/result/FetchedProduct.kt index 6a5a198bf..38f1f4fc6 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/product/result/FetchedProduct.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/product/result/FetchedProduct.kt @@ -120,7 +120,7 @@ data class FetchedProduct( val files: List? = null, val favorites: FavoritesStats? = null, // TODO Figure out how to test - val defaultCombinationId: Int? = null, // TODO implement combinations support + val defaultCombinationId: Long? = null, // TODO implement combinations support val combinations: List? = null, // TODO implement combinations support val isGiftCard: Boolean? = null, // TODO from ECWID-67826: this flag is read-only. API for creating gift cards in the plans (BACKLOG-4157) val discountsAllowed: Boolean? = null, diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/result/FetchedVariation.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/result/FetchedVariation.kt index a1c6f21ce..67108e4d2 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/result/FetchedVariation.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/result/FetchedVariation.kt @@ -9,7 +9,7 @@ import com.ecwid.apiclient.v3.dto.producttype.enums.AttributeType import com.ecwid.apiclient.v3.dto.variation.request.UpdatedVariation data class FetchedVariation( - val id: Int = 0, + val id: Long = 0, val sku: String? = null, val combinationNumber: Int = 0, diff --git a/src/test/kotlin/com/ecwid/apiclient/v3/entity/CartsTest.kt b/src/test/kotlin/com/ecwid/apiclient/v3/entity/CartsTest.kt index 290f884f6..9a30a726c 100644 --- a/src/test/kotlin/com/ecwid/apiclient/v3/entity/CartsTest.kt +++ b/src/test/kotlin/com/ecwid/apiclient/v3/entity/CartsTest.kt @@ -506,7 +506,7 @@ class CartsTest : BaseEntityTest() { generateDateSelectedOption(), generateFilesSelectedOption() ), - combinationId = randomId(), + combinationId = randomId().toLong(), taxes = listOf( generateTestOrderItemTax() ), diff --git a/src/test/kotlin/com/ecwid/apiclient/v3/util/OrderUtils.kt b/src/test/kotlin/com/ecwid/apiclient/v3/util/OrderUtils.kt index 0f54173ae..878a2aa61 100644 --- a/src/test/kotlin/com/ecwid/apiclient/v3/util/OrderUtils.kt +++ b/src/test/kotlin/com/ecwid/apiclient/v3/util/OrderUtils.kt @@ -253,7 +253,7 @@ private fun generateTestOrderItem() = UpdatedOrder.OrderItem( generateDateSelectedOption(), generateFilesSelectedOption() ), - combinationId = randomId(), + combinationId = randomId().toLong(), taxes = listOf( generateTestOrderItemTax(), generateTestOrderItemTax() From 02e3e9e74b54ec075c17400cb5f8ce50a422540e Mon Sep 17 00:00:00 2001 From: Yuri Titov Date: Mon, 14 Sep 2026 21:13:44 +0400 Subject: [PATCH 2/5] Extract separate method for random long ID generation --- src/test/kotlin/com/ecwid/apiclient/v3/entity/CartsTest.kt | 4 ++-- src/test/kotlin/com/ecwid/apiclient/v3/util/OrderUtils.kt | 2 +- src/test/kotlin/com/ecwid/apiclient/v3/util/RandomUtils.kt | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/test/kotlin/com/ecwid/apiclient/v3/entity/CartsTest.kt b/src/test/kotlin/com/ecwid/apiclient/v3/entity/CartsTest.kt index 9a30a726c..dbe26c47c 100644 --- a/src/test/kotlin/com/ecwid/apiclient/v3/entity/CartsTest.kt +++ b/src/test/kotlin/com/ecwid/apiclient/v3/entity/CartsTest.kt @@ -476,7 +476,7 @@ class CartsTest : BaseEntityTest() { private fun generateTestItem(): OrderForCalculate.OrderItem { return OrderForCalculate.OrderItem( - id = randomId().toLong(), + id = randomLongId(), productId = randomId(), categoryId = randomId(), price = 22.2, @@ -506,7 +506,7 @@ class CartsTest : BaseEntityTest() { generateDateSelectedOption(), generateFilesSelectedOption() ), - combinationId = randomId().toLong(), + combinationId = randomLongId(), taxes = listOf( generateTestOrderItemTax() ), diff --git a/src/test/kotlin/com/ecwid/apiclient/v3/util/OrderUtils.kt b/src/test/kotlin/com/ecwid/apiclient/v3/util/OrderUtils.kt index 878a2aa61..4bcfec388 100644 --- a/src/test/kotlin/com/ecwid/apiclient/v3/util/OrderUtils.kt +++ b/src/test/kotlin/com/ecwid/apiclient/v3/util/OrderUtils.kt @@ -253,7 +253,7 @@ private fun generateTestOrderItem() = UpdatedOrder.OrderItem( generateDateSelectedOption(), generateFilesSelectedOption() ), - combinationId = randomId().toLong(), + combinationId = randomLongId(), taxes = listOf( generateTestOrderItemTax(), generateTestOrderItemTax() diff --git a/src/test/kotlin/com/ecwid/apiclient/v3/util/RandomUtils.kt b/src/test/kotlin/com/ecwid/apiclient/v3/util/RandomUtils.kt index 422b7e5a8..6ae5b7f21 100644 --- a/src/test/kotlin/com/ecwid/apiclient/v3/util/RandomUtils.kt +++ b/src/test/kotlin/com/ecwid/apiclient/v3/util/RandomUtils.kt @@ -18,6 +18,8 @@ internal fun randomByte() = Random.nextBytes(1)[0] + 128 internal fun randomId() = randomInt(10000, 1000000) +internal fun randomLongId() = randomLong(100000000000, 10000000000000) + internal fun randomIndex(collection: Collection) = randomInt(0, collection.size - 1) internal fun randomPrice() = Random @@ -89,6 +91,8 @@ internal fun randomFileName(prefix: String, extension: String) = "$prefix-${Rand internal fun randomInt(min: Int, max: Int) = Random.nextInt(min, max) +internal fun randomLong(min: Long, max: Long) = Random.nextLong(min, max) + internal fun randomDouble(min: Double, max: Double) = Random.nextDouble(min, max) private fun Double.roundDouble(): Double { From 50dc1c0855fdbb04e8ba3c7e791cceab432e1763 Mon Sep 17 00:00:00 2001 From: Yuri Titov Date: Mon, 14 Sep 2026 21:41:52 +0400 Subject: [PATCH 3/5] Change variationId in requests to long --- .../v3/dto/variation/request/AdjustVariationInventoryRequest.kt | 2 +- .../v3/dto/variation/request/DeleteProductVariationRequest.kt | 2 +- .../v3/dto/variation/request/ProductVariationDetailsRequest.kt | 2 +- .../request/ProductVariationImageAsyncUploadRequest.kt | 2 +- .../dto/variation/request/ProductVariationImageDeleteRequest.kt | 2 +- .../dto/variation/request/ProductVariationImageUploadRequest.kt | 2 +- .../v3/dto/variation/request/UpdateProductVariationRequest.kt | 2 +- .../v3/dto/variation/result/CreateProductVariationResult.kt | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/AdjustVariationInventoryRequest.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/AdjustVariationInventoryRequest.kt index 6b2f0eb1d..15d869a8b 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/AdjustVariationInventoryRequest.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/AdjustVariationInventoryRequest.kt @@ -6,7 +6,7 @@ import com.ecwid.apiclient.v3.impl.RequestInfo data class AdjustVariationInventoryRequest( val productId: Int = 0, - val variationId: Int = 0, + val variationId: Long = 0, val checkLowStockNotification: Boolean = false, val quantityDelta: Int = 0 ) : ApiRequest { diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/DeleteProductVariationRequest.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/DeleteProductVariationRequest.kt index f0ca3f4c8..7464ea688 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/DeleteProductVariationRequest.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/DeleteProductVariationRequest.kt @@ -5,7 +5,7 @@ import com.ecwid.apiclient.v3.impl.RequestInfo data class DeleteProductVariationRequest( val productId: Int = 0, - val variationId: Int = 0 + val variationId: Long = 0 ) : ApiRequest { override fun toRequestInfo() = RequestInfo.createDeleteRequest( pathSegments = listOf( diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/ProductVariationDetailsRequest.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/ProductVariationDetailsRequest.kt index 32c53389a..13ec2c7e5 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/ProductVariationDetailsRequest.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/ProductVariationDetailsRequest.kt @@ -6,7 +6,7 @@ import com.ecwid.apiclient.v3.responsefields.ResponseFields data class ProductVariationDetailsRequest( val productId: Int = 0, - val variationId: Int = 0, + val variationId: Long = 0, val responseFields: ResponseFields = ResponseFields.All, ) : ApiRequest { override fun toRequestInfo() = RequestInfo.createGetRequest( diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/ProductVariationImageAsyncUploadRequest.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/ProductVariationImageAsyncUploadRequest.kt index ffd0a052c..4bc55e8a0 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/ProductVariationImageAsyncUploadRequest.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/ProductVariationImageAsyncUploadRequest.kt @@ -7,7 +7,7 @@ import com.ecwid.apiclient.v3.impl.RequestInfo data class ProductVariationImageAsyncUploadRequest( val productId: Int = 0, - val variationId: Int = 0, + val variationId: Long = 0, val asyncPictureData: AsyncPictureData = AsyncPictureData() ) : ApiRequest { override fun toRequestInfo(): RequestInfo { diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/ProductVariationImageDeleteRequest.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/ProductVariationImageDeleteRequest.kt index 7dfa6792c..0b4985cc0 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/ProductVariationImageDeleteRequest.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/ProductVariationImageDeleteRequest.kt @@ -5,7 +5,7 @@ import com.ecwid.apiclient.v3.impl.RequestInfo data class ProductVariationImageDeleteRequest( val productId: Int = 0, - val variationId: Int = 0 + val variationId: Long = 0 ) : ApiRequest { override fun toRequestInfo() = RequestInfo.createDeleteRequest( pathSegments = listOf( diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/ProductVariationImageUploadRequest.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/ProductVariationImageUploadRequest.kt index 16c456a61..fc9a10035 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/ProductVariationImageUploadRequest.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/ProductVariationImageUploadRequest.kt @@ -8,7 +8,7 @@ import com.ecwid.apiclient.v3.impl.RequestInfo data class ProductVariationImageUploadRequest( val productId: Int = 0, - val variationId: Int = 0, + val variationId: Long = 0, val fileData: UploadFileData = UploadFileData.ExternalUrlData("") ) : ApiRequest { diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/UpdateProductVariationRequest.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/UpdateProductVariationRequest.kt index 83b1386af..e2c0642b9 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/UpdateProductVariationRequest.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/request/UpdateProductVariationRequest.kt @@ -6,7 +6,7 @@ import com.ecwid.apiclient.v3.impl.RequestInfo data class UpdateProductVariationRequest( val productId: Int = 0, - val variationId: Int = 0, + val variationId: Long = 0, val checkLowStockNotification: Boolean = false, val variation: UpdatedVariation = UpdatedVariation() ) : ApiRequest { diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/result/CreateProductVariationResult.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/result/CreateProductVariationResult.kt index 38d68262b..bdb5cf493 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/result/CreateProductVariationResult.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/variation/result/CreateProductVariationResult.kt @@ -3,5 +3,5 @@ package com.ecwid.apiclient.v3.dto.variation.result import com.ecwid.apiclient.v3.dto.common.ApiResultDTO data class CreateProductVariationResult( - val id: Int = 0 + val id: Long = 0 ) : ApiResultDTO From d36927e2e60162bd523956d392a05c40700aff91 Mon Sep 17 00:00:00 2001 From: Yuri Titov Date: Mon, 14 Sep 2026 21:47:02 +0400 Subject: [PATCH 4/5] Change CustomAppRequest.OrderItem.defaultCombinationId to Long --- .../com/ecwid/apiclient/v3/dto/custom/CustomAppRequest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/com/ecwid/apiclient/v3/dto/custom/CustomAppRequest.kt b/src/main/kotlin/com/ecwid/apiclient/v3/dto/custom/CustomAppRequest.kt index 82feee490..71cec66a0 100644 --- a/src/main/kotlin/com/ecwid/apiclient/v3/dto/custom/CustomAppRequest.kt +++ b/src/main/kotlin/com/ecwid/apiclient/v3/dto/custom/CustomAppRequest.kt @@ -82,7 +82,7 @@ data class CustomAppRequest( val updated: String? = null, val createTimestamp: Long? = null, val updateTimestamp: Long? = null, - val defaultCombinationId: Int? = null, + val defaultCombinationId: Long? = null, val imageUrl: String? = null, val thumbnailUrl: String? = null, val smallThumbnailUrl: String? = null, From 5ac9d9a7347a71c8e9e9d824d53eb037c7406639 Mon Sep 17 00:00:00 2001 From: Yuri Titov Date: Mon, 14 Sep 2026 23:29:39 +0400 Subject: [PATCH 5/5] Revert tests to int random values because API server is not ready to get values exceeding int max and min --- src/test/kotlin/com/ecwid/apiclient/v3/entity/CartsTest.kt | 6 ++++-- src/test/kotlin/com/ecwid/apiclient/v3/util/OrderUtils.kt | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/test/kotlin/com/ecwid/apiclient/v3/entity/CartsTest.kt b/src/test/kotlin/com/ecwid/apiclient/v3/entity/CartsTest.kt index dbe26c47c..1c7b89207 100644 --- a/src/test/kotlin/com/ecwid/apiclient/v3/entity/CartsTest.kt +++ b/src/test/kotlin/com/ecwid/apiclient/v3/entity/CartsTest.kt @@ -476,7 +476,8 @@ class CartsTest : BaseEntityTest() { private fun generateTestItem(): OrderForCalculate.OrderItem { return OrderForCalculate.OrderItem( - id = randomLongId(), + // TODO change to randomLongId() after API server changes + id = randomId().toLong(), productId = randomId(), categoryId = randomId(), price = 22.2, @@ -506,7 +507,8 @@ class CartsTest : BaseEntityTest() { generateDateSelectedOption(), generateFilesSelectedOption() ), - combinationId = randomLongId(), + // TODO change to randomLongId() after API server changes + combinationId = randomId().toLong(), taxes = listOf( generateTestOrderItemTax() ), diff --git a/src/test/kotlin/com/ecwid/apiclient/v3/util/OrderUtils.kt b/src/test/kotlin/com/ecwid/apiclient/v3/util/OrderUtils.kt index 4bcfec388..60bacba0a 100644 --- a/src/test/kotlin/com/ecwid/apiclient/v3/util/OrderUtils.kt +++ b/src/test/kotlin/com/ecwid/apiclient/v3/util/OrderUtils.kt @@ -253,7 +253,8 @@ private fun generateTestOrderItem() = UpdatedOrder.OrderItem( generateDateSelectedOption(), generateFilesSelectedOption() ), - combinationId = randomLongId(), + // TODO change to randomLongId() after API server changes + combinationId = randomId().toLong(), taxes = listOf( generateTestOrderItemTax(), generateTestOrderItemTax()