refactor(variant-selection): update variant options retrieval to use catalog item's variants and enhance response structure

This commit is contained in:
ncoronel 2026-08-18 10:45:40 -03:00
parent 9e74e21fb5
commit 1c2f6c4127
2 changed files with 9 additions and 2 deletions

View File

@ -38,7 +38,7 @@ class VariantSelectionService
$matchingVariants = $variants
->filter(fn (Variant $variant): bool => $this->matches($variant, $normalizedSelections))
->values();
$attributeKeys = $this->attributeKeys($catalogItem, $variants);
$attributeKeys = $this->attributeKeys($catalogItem, $catalogItem->variants->values());
$isComplete = $attributeKeys->isNotEmpty()
&& $attributeKeys->every(fn (string $key): bool => array_key_exists($key, $normalizedSelections));
$resolvedVariant = $isComplete && $matchingVariants->count() === 1
@ -46,6 +46,10 @@ class VariantSelectionService
: null;
return [
'variants' => $variants
->map(fn (Variant $variant): array => $this->variantData($catalogItem, $variant))
->values()
->all(),
'selectors' => $this->selectors(
$catalogItem,
$variants,

View File

@ -342,7 +342,10 @@ class CatalogItemDetailControllerTest extends TestCase
->assertOk()
->assertJsonPath('data.valid', true)
->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')
->assertJsonPath('data.selectors.0.key', 'sector')
->assertJsonCount(2, 'data.selectors.0.options')