feat(catalog): exclude out-of-stock items and update variant visibility logic
This commit is contained in:
@@ -48,7 +48,7 @@ class CatalogItemDetailControllerTest extends TestCase
|
||||
$this->assertStringContainsString($itemImage->path, $response->json('data.images.0'));
|
||||
}
|
||||
|
||||
public function test_it_lists_unavailable_variants_and_selects_the_first_available_one(): void
|
||||
public function test_it_omits_unavailable_variants_and_selects_the_first_available_one(): void
|
||||
{
|
||||
Storage::fake('s3');
|
||||
$tenant = $this->createTenant('detail-default');
|
||||
@@ -69,14 +69,8 @@ class CatalogItemDetailControllerTest extends TestCase
|
||||
|
||||
$response
|
||||
->assertOk()
|
||||
->assertJsonCount(2, 'data.variants')
|
||||
->assertJsonPath('data.variants.0.id', $firstVariant->id)
|
||||
->assertJsonPath('data.variants.0.maximum_addable_quantity', 0)
|
||||
->assertJsonPath(
|
||||
'data.variants.0.unavailable_message',
|
||||
'Este producto no tiene stock disponible.',
|
||||
)
|
||||
->assertJsonPath('data.variants.1.id', $secondVariant->id)
|
||||
->assertJsonCount(1, 'data.variants')
|
||||
->assertJsonPath('data.variants.0.id', $secondVariant->id)
|
||||
->assertJsonPath('data.selected_variant.id', $secondVariant->id)
|
||||
->assertJsonPath('data.selected_variant.maximum_addable_quantity', 6)
|
||||
->assertJsonMissingPath('data.selected_variant.stock_tecnico')
|
||||
@@ -84,6 +78,10 @@ class CatalogItemDetailControllerTest extends TestCase
|
||||
$response
|
||||
->assertJsonMissingPath('data.stock_tecnico')
|
||||
->assertJsonMissingPath('data.images');
|
||||
$this->assertNotContains(
|
||||
$firstVariant->id,
|
||||
collect($response->json('data.variants'))->pluck('id')->all(),
|
||||
);
|
||||
$this->assertStringContainsString($secondImage->path, $response->json('data.selected_variant.images.0'));
|
||||
$this->assertStringNotContainsString($firstImage->path, $response->json('data.selected_variant.images.0'));
|
||||
$this->assertStringNotContainsString($itemImage->path, $response->json('data.selected_variant.images.0'));
|
||||
@@ -93,6 +91,19 @@ class CatalogItemDetailControllerTest extends TestCase
|
||||
)->assertNotFound();
|
||||
}
|
||||
|
||||
public function test_it_does_not_return_an_out_of_stock_item(): void
|
||||
{
|
||||
$tenant = $this->createTenant('detail-out-of-stock');
|
||||
$inventory = Inventory::query()->create([
|
||||
'real_stock' => 5,
|
||||
'reserved_stock' => 5,
|
||||
]);
|
||||
$item = $this->createItem($tenant, 'Sold out item', $inventory);
|
||||
|
||||
$this->getJson("/api/tenants/{$tenant->codigo}/catalog-items/{$item->id}")
|
||||
->assertNotFound();
|
||||
}
|
||||
|
||||
public function test_it_selects_the_requested_variant_and_lists_variant_values_and_stock(): void
|
||||
{
|
||||
Storage::fake('s3');
|
||||
|
||||
Reference in New Issue
Block a user