feat(catalog): add show_in_selector attribute to item attributes and update related logic
This commit is contained in:
@@ -276,6 +276,26 @@ class CatalogItemDetailControllerTest extends TestCase
|
||||
);
|
||||
}
|
||||
|
||||
public function test_it_exposes_whether_an_item_attribute_should_be_shown_in_the_selector(): void
|
||||
{
|
||||
$tenant = $this->createTenant('detail-hidden-attribute');
|
||||
$item = $this->createItem($tenant, 'Hidden attribute');
|
||||
$attribute = Attribute::query()->create([
|
||||
'tenant_codigo' => $tenant->codigo,
|
||||
'codigo' => 'internal_type',
|
||||
'nombre' => 'Internal type',
|
||||
'type' => FieldType::String,
|
||||
]);
|
||||
$item->itemAttributes()->create([
|
||||
'attribute_id' => $attribute->id,
|
||||
'show_in_selector' => false,
|
||||
]);
|
||||
|
||||
$this->getJson("/api/tenants/{$tenant->codigo}/catalog-items/{$item->id}")
|
||||
->assertOk()
|
||||
->assertJsonPath('data.attributes.0.show_in_selector', false);
|
||||
}
|
||||
|
||||
private function createItem(
|
||||
Tenant $tenant,
|
||||
string $name,
|
||||
|
||||
@@ -25,6 +25,7 @@ class CatalogSchemaTest extends TestCase
|
||||
$this->assertTrue(Schema::hasTable('variantes'));
|
||||
$this->assertTrue(Schema::hasTable('item_attributes'));
|
||||
$this->assertTrue(Schema::hasColumn('item_attributes', 'sort_order'));
|
||||
$this->assertTrue(Schema::hasColumn('item_attributes', 'show_in_selector'));
|
||||
$this->assertTrue(Schema::hasTable('variant_values'));
|
||||
}
|
||||
|
||||
|
||||
@@ -93,6 +93,26 @@ class CatalogServiceTest extends TestCase
|
||||
}
|
||||
}
|
||||
|
||||
public function test_it_can_hide_an_item_attribute_from_the_product_selector(): void
|
||||
{
|
||||
$attribute = $this->createAttribute('internal_type');
|
||||
|
||||
$item = $this->service->create([
|
||||
'tenant_code' => $this->tenant->codigo,
|
||||
'slug' => 'hidden-attribute-item',
|
||||
'nombre' => 'Hidden attribute item',
|
||||
'precio' => 100,
|
||||
'attribute_codes' => [$attribute->codigo],
|
||||
'hidden_attribute_codes' => [$attribute->codigo],
|
||||
'variants' => [[
|
||||
'real_stock' => 5,
|
||||
'values' => [$attribute->codigo => 'internal'],
|
||||
]],
|
||||
]);
|
||||
|
||||
$this->assertFalse($item->itemAttributes->sole()->show_in_selector);
|
||||
}
|
||||
|
||||
public function test_it_allows_the_same_event_date_with_different_attribute_values(): void
|
||||
{
|
||||
$sector = $this->createAttribute('sector');
|
||||
|
||||
@@ -128,6 +128,7 @@ class FiestaFutbolInfantilProductSeederTest extends TestCase
|
||||
->sole();
|
||||
$dateAttribute = $abono->itemAttributes->firstWhere('attribute.codigo', 'event_date');
|
||||
$this->assertTrue($dateAttribute->allow_multi_select);
|
||||
$this->assertFalse($dateAttribute->show_in_selector);
|
||||
$this->assertEqualsCanonicalizing(
|
||||
[4],
|
||||
$abono->variants->map(fn ($variant): int => $variant->eventDates->count())->all(),
|
||||
|
||||
Reference in New Issue
Block a user