refactor(variant-selection): update variant options retrieval to use catalog item's variants and enhance response structure
This commit is contained in:
@@ -38,7 +38,7 @@ class VariantSelectionService
|
|||||||
$matchingVariants = $variants
|
$matchingVariants = $variants
|
||||||
->filter(fn (Variant $variant): bool => $this->matches($variant, $normalizedSelections))
|
->filter(fn (Variant $variant): bool => $this->matches($variant, $normalizedSelections))
|
||||||
->values();
|
->values();
|
||||||
$attributeKeys = $this->attributeKeys($catalogItem, $variants);
|
$attributeKeys = $this->attributeKeys($catalogItem, $catalogItem->variants->values());
|
||||||
$isComplete = $attributeKeys->isNotEmpty()
|
$isComplete = $attributeKeys->isNotEmpty()
|
||||||
&& $attributeKeys->every(fn (string $key): bool => array_key_exists($key, $normalizedSelections));
|
&& $attributeKeys->every(fn (string $key): bool => array_key_exists($key, $normalizedSelections));
|
||||||
$resolvedVariant = $isComplete && $matchingVariants->count() === 1
|
$resolvedVariant = $isComplete && $matchingVariants->count() === 1
|
||||||
@@ -46,6 +46,10 @@ class VariantSelectionService
|
|||||||
: null;
|
: null;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
'variants' => $variants
|
||||||
|
->map(fn (Variant $variant): array => $this->variantData($catalogItem, $variant))
|
||||||
|
->values()
|
||||||
|
->all(),
|
||||||
'selectors' => $this->selectors(
|
'selectors' => $this->selectors(
|
||||||
$catalogItem,
|
$catalogItem,
|
||||||
$variants,
|
$variants,
|
||||||
|
|||||||
@@ -342,7 +342,10 @@ class CatalogItemDetailControllerTest extends TestCase
|
|||||||
->assertOk()
|
->assertOk()
|
||||||
->assertJsonPath('data.valid', true)
|
->assertJsonPath('data.valid', true)
|
||||||
->assertJsonPath('data.resolved_variant', null)
|
->assertJsonPath('data.resolved_variant', null)
|
||||||
->assertJsonMissingPath('data.variants')
|
->assertJsonCount(3, 'data.variants')
|
||||||
|
->assertJsonPath('data.variants.0.id', $first->id)
|
||||||
|
->assertJsonPath('data.variants.0.values.sector.value', 'A')
|
||||||
|
->assertJsonPath('data.variants.0.values.seat.value', '1')
|
||||||
->assertJsonCount(2, 'data.selectors')
|
->assertJsonCount(2, 'data.selectors')
|
||||||
->assertJsonPath('data.selectors.0.key', 'sector')
|
->assertJsonPath('data.selectors.0.key', 'sector')
|
||||||
->assertJsonCount(2, 'data.selectors.0.options')
|
->assertJsonCount(2, 'data.selectors.0.options')
|
||||||
|
|||||||
Reference in New Issue
Block a user