Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/main/kotlin/com/ecwid/apiclient/v3/ApiClientHelper.kt
Original file line number Diff line number Diff line change
Expand Up @@ -524,6 +524,7 @@ private fun createProductOptionsPolymorphicType(): PolymorphicType<ProductOption
"select" to ProductOption.SelectOption::class.java,
"size" to ProductOption.SizeOption::class.java,
"radio" to ProductOption.RadioOption::class.java,
"swatches" to ProductOption.SwatchesOption::class.java,
"checkbox" to ProductOption.CheckboxOption::class.java,
"textfield" to ProductOption.TextFieldOption::class.java,
"textarea" to ProductOption.TextAreaOption::class.java,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ fun FetchedProduct.ProductOption.toUpdated() = when (this) {
is FetchedProduct.ProductOption.SelectOption -> toUpdated()
is FetchedProduct.ProductOption.SizeOption -> toUpdated()
is FetchedProduct.ProductOption.RadioOption -> toUpdated()
is FetchedProduct.ProductOption.SwatchesOption -> toUpdated()
is FetchedProduct.ProductOption.CheckboxOption -> toUpdated()
is FetchedProduct.ProductOption.TextFieldOption -> toUpdated()
is FetchedProduct.ProductOption.TextAreaOption -> toUpdated()
Expand Down Expand Up @@ -139,6 +140,15 @@ fun FetchedProduct.ProductOption.RadioOption.toUpdated() = UpdatedProduct.Produc
required = required
)

fun FetchedProduct.ProductOption.SwatchesOption.toUpdated() = UpdatedProduct.ProductOption.SwatchesOption(
name = name,
nameTranslated = nameTranslated,
choices = choices.map { it.toUpdated() },
defaultChoice = defaultChoice,
required = required,
useImageAsSwatchSelector = useImageAsSwatchSelector,
)

fun FetchedProduct.ProductOption.CheckboxOption.toUpdated() = UpdatedProduct.ProductOption.CheckboxOption(
name = name,
nameTranslated = nameTranslated,
Expand Down Expand Up @@ -175,7 +185,9 @@ fun FetchedProduct.ProductOptionChoice.toUpdated() = UpdatedProduct.ProductOptio
text = text,
textTranslated = textTranslated,
priceModifier = priceModifier,
priceModifierType = priceModifierType
priceModifierType = priceModifierType,
hexCodes = hexCodes,
imageId = imageId,
)

fun FetchedProduct.ShippingSettings.toUpdated() = UpdatedProduct.ShippingSettings(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@ enum class ProductOptionType {
TEXTAREA,
DATE,
FILES,
SIZE
SIZE,
SWATCHES,
}
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,16 @@ data class UpdatedProduct(
override val required: Boolean? = null
) : ProductOption(ProductOptionType.RADIO), ChoiceBased


data class SwatchesOption(
override val name: String = "",
override val nameTranslated: LocalizedValueMap? = null,
override val choices: List<ProductOptionChoice> = listOf(),
override val defaultChoice: Int? = null,
override val required: Boolean? = null,
val useImageAsSwatchSelector: Boolean = false,
) : ProductOption(ProductOptionType.SWATCHES), ChoiceBased

data class CheckboxOption(
override val name: String = "",
override val nameTranslated: LocalizedValueMap? = null,
Expand Down Expand Up @@ -215,6 +225,22 @@ data class UpdatedProduct(
required = required
)

fun createSwatchesOption(
name: String = "",
nameTranslated: LocalizedValueMap? = null,
choices: List<ProductOptionChoice> = listOf(),
defaultChoice: Int? = null,
required: Boolean? = null,
useImageAsSwatchSelector: Boolean = false,
) = SwatchesOption(
name = name,
nameTranslated = nameTranslated,
choices = choices,
defaultChoice = defaultChoice,
required = required,
useImageAsSwatchSelector = useImageAsSwatchSelector,
)

fun createCheckboxOption(
name: String = "",
nameTranslated: LocalizedValueMap? = null,
Expand Down Expand Up @@ -276,6 +302,8 @@ data class UpdatedProduct(
val textTranslated: LocalizedValueMap? = null,
val priceModifier: Double? = null,
val priceModifierType: PriceModifierType? = null,
val hexCodes: List<String>? = null,
val imageId: String? = null,
)

data class ShippingSettings(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,15 @@ data class FetchedProduct(
override val required: Boolean = false
) : ProductOption(ProductOptionType.RADIO), ChoiceBased

data class SwatchesOption(
override val name: String = "",
override val nameTranslated: LocalizedValueMap? = null,
override val choices: List<ProductOptionChoice> = listOf(),
override val defaultChoice: Int = 0,
override val required: Boolean = false,
val useImageAsSwatchSelector: Boolean = false,
) : ProductOption(ProductOptionType.SWATCHES), ChoiceBased

data class CheckboxOption(
override val name: String = "",
override val nameTranslated: LocalizedValueMap? = null,
Expand Down Expand Up @@ -277,7 +286,9 @@ data class FetchedProduct(
val text: String = "",
val textTranslated: LocalizedValueMap? = null,
val priceModifier: Double = 0.0,
val priceModifierType: PriceModifierType = PriceModifierType.ABSOLUTE
val priceModifierType: PriceModifierType = PriceModifierType.ABSOLUTE,
val hexCodes: List<String>? = null,
val imageId: String? = null,
)

data class ShippingSettings(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ class CategoriesTest : BaseEntityTest() {
// Searching categories with different combinations of baseUrl and cleanUrls parameters
assertCategoryUrlMatchesRegex(
categorySearchRequest = CategoriesSearchRequest(),
urlPattern = "https://.*.company.site.*/products/Category-.*c.*"
urlPattern = "https://.*.company.site.*/products#!/Category-.*c.*"
)
assertCategoryUrlMatchesRegex(
categorySearchRequest = CategoriesSearchRequest(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ class ProductsTest : BaseEntityTest() {
// Searching products with different combinations of baseUrl and cleanUrls parameters
assertProductUrlMatchesRegex(
productSearchRequest = ByFilters(keyword = productCreateRequest.newProduct.sku),
urlPattern = "https://.*.company.site.*/products/Product-.*p.*"
urlPattern = "https://.*.company.site.*/products#!/Product-.*p.*"
)
assertProductUrlMatchesRegex(
productSearchRequest = ByFilters(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ val nonnullPropertyRules: List<NonnullPropertyRule<*, *>> = listOf(
IgnoreNonnull(UpdatedProduct.ProductOption.SelectOption::name),
IgnoreNonnull(UpdatedProduct.ProductOption.SizeOption::choices),
IgnoreNonnull(UpdatedProduct.ProductOption.SizeOption::name),
IgnoreNonnull(UpdatedProduct.ProductOption.SwatchesOption::choices),
IgnoreNonnull(UpdatedProduct.ProductOption.SwatchesOption::name),
IgnoreNonnull(UpdatedProduct.ProductOption.SwatchesOption::useImageAsSwatchSelector),
IgnoreNonnull(UpdatedProduct.ProductOption.TextAreaOption::name),
IgnoreNonnull(UpdatedProduct.ProductOption.TextFieldOption::name),
IgnoreNonnull(UpdatedProduct.ProductOptionChoice::text),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,9 +130,12 @@ val fetchedProductNullablePropertyRules: List<NullablePropertyRule<*, *>> = list
IgnoreNullable(FetchedProduct.ProductOption.RadioOption::nameTranslated),
IgnoreNullable(FetchedProduct.ProductOption.SelectOption::nameTranslated),
IgnoreNullable(FetchedProduct.ProductOption.SizeOption::nameTranslated),
AllowNullable(FetchedProduct.ProductOption.SwatchesOption::nameTranslated),
IgnoreNullable(FetchedProduct.ProductOption.TextAreaOption::nameTranslated),
IgnoreNullable(FetchedProduct.ProductOption.TextFieldOption::nameTranslated),
IgnoreNullable(FetchedProduct.ProductOptionChoice::textTranslated),
AllowNullable(FetchedProduct.ProductOptionChoice::hexCodes),
AllowNullable(FetchedProduct.ProductOptionChoice::imageId),
IgnoreNullable(FetchedProduct.RelatedCategory::categoryId),
IgnoreNullable(FetchedProduct.RelatedCategory::enabled),
IgnoreNullable(FetchedProduct.RelatedCategory::productCount),
Expand Down