test(catalog): cover composed availability restrictions

This commit is contained in:
2026-08-24 14:33:01 -03:00
parent 2fd6851b40
commit a73b628bb4
6 changed files with 80 additions and 49 deletions

View File

@@ -72,18 +72,26 @@ class CatalogControllerTest extends TestCase
->assertJsonPath('0.items.0.nombre', 'Variants')
->assertJsonPath('0.items.0.descripcion', 'Variants description')
->assertJsonPath('0.items.0.precio', '100.00')
->assertJsonPath('0.items.0.maximum_addable_quantity', 7)
->assertJsonPath('0.items.0.availability.maximum_quantity', 7)
->assertJsonCount(3, '0.items.0.variants')
->assertJsonPath('0.items.0.variants.0.maximum_addable_quantity', 4)
->assertJsonPath('0.items.0.variants.1.maximum_addable_quantity', 3)
->assertJsonPath('0.items.0.variants.0.availability.maximum_quantity', 4)
->assertJsonPath('0.items.0.variants.1.availability.maximum_quantity', 3)
->assertJsonPath('0.items.0.variants.2.id', $unavailableVariant->id)
->assertJsonPath('0.items.0.variants.2.maximum_addable_quantity', 0)
->assertJsonPath('0.items.0.variants.2.availability.maximum_quantity', 0)
->assertJsonPath(
'0.items.0.variants.2.unavailable_message',
'0.items.0.variants.2.availability.restrictions.0.message',
'Este producto no tiene stock disponible.',
)
->assertJsonPath(
'0.items.0.variants.2.availability.capabilities.select_variant',
false,
)
->assertJsonPath(
'0.items.0.variants.2.availability.capabilities.add_to_cart',
false,
)
->assertJsonPath('1.title', 'Row')
->assertJsonPath('1.items.data.0.maximum_addable_quantity', 8)
->assertJsonPath('1.items.data.0.availability.maximum_quantity', 8)
->assertJsonMissingPath('1.items.data.0.stock_tecnico')
->assertJsonCount(0, '1.items.data.0.variants');
}
@@ -119,16 +127,20 @@ class CatalogControllerTest extends TestCase
$this->actingAs($user, 'sanctum')
->getJson("/api/tenants/{$tenant->codigo}/catalog")
->assertOk()
->assertJsonPath('0.items.0.variants.0.maximum_addable_quantity', 0)
->assertJsonPath('0.items.0.variants.1.maximum_addable_quantity', 0)
->assertJsonPath('0.items.0.variants.0.availability.maximum_quantity', 0)
->assertJsonPath('0.items.0.variants.1.availability.maximum_quantity', 0)
->assertJsonPath(
'0.items.0.variants.0.unavailable_message',
'0.items.0.variants.0.availability.restrictions.0.message',
'Alcanzaste el cupo máximo permitido para este producto.',
)
->assertJsonPath(
'0.items.0.variants.1.unavailable_message',
'0.items.0.variants.1.availability.restrictions.0.message',
'Alcanzaste el cupo máximo permitido para este producto.',
)
->assertJsonPath(
'0.items.0.variants.1.availability.capabilities.buy_now',
false,
)
->assertJsonMissingPath('0.items.0.variants.0.stock_tecnico')
->assertJsonMissingPath('0.items.0.variants.1.stock_tecnico');
}
@@ -163,13 +175,13 @@ class CatalogControllerTest extends TestCase
->assertOk()
->assertJsonCount(2, '0.items')
->assertJsonPath('0.items.0.nombre', 'Unavailable')
->assertJsonPath('0.items.0.maximum_addable_quantity', 0)
->assertJsonPath('0.items.0.availability.maximum_quantity', 0)
->assertJsonPath(
'0.items.0.unavailable_message',
'0.items.0.availability.restrictions.0.message',
'Este producto no tiene stock disponible.',
)
->assertJsonPath('0.items.1.nombre', 'Available')
->assertJsonPath('0.items.1.unavailable_message', null);
->assertJsonCount(0, '0.items.1.availability.restrictions');
}
public function test_column_with_image_uses_item_image_then_variant_image_then_null(): void