test(catalog): cover global availability decisions

This commit is contained in:
2026-08-25 09:03:09 -03:00
parent 98bfc0d5e9
commit 3c646f3560
3 changed files with 56 additions and 60 deletions

View File

@@ -72,11 +72,11 @@ 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.availability.subject', 'product')
->assertJsonPath('0.items.0.availability.state', 'visible')
->assertJsonPath('0.items.0.availability.maximum_quantity', 7)
->assertJsonCount(2, '0.items.0.variants')
->assertJsonPath('0.items.0.variants.0.availability.maximum_quantity', 4)
->assertJsonPath('0.items.0.variants.0.availability.subject', 'variant')
->assertJsonPath('0.items.0.variants.0.availability.state', 'visible')
->assertJsonPath('0.items.0.variants.1.availability.maximum_quantity', 3)
->assertJsonPath('1.title', 'Row')
->assertJsonPath('1.items.data.0.availability.maximum_quantity', 8)
@@ -115,20 +115,16 @@ class CatalogControllerTest extends TestCase
$this->actingAs($user, 'sanctum')
->getJson("/api/tenants/{$tenant->codigo}/catalog")
->assertOk()
->assertJsonPath('0.items.0.variants.0.availability.maximum_quantity', 0)
->assertJsonPath('0.items.0.variants.1.availability.maximum_quantity', 0)
->assertJsonPath('0.items.0.availability.maximum_quantity', 0)
->assertJsonPath('0.items.0.availability.allowed_actions', [])
->assertJsonPath(
'0.items.0.variants.0.availability.restrictions.0.message',
'0.items.0.availability.reasons.0.message',
'Alcanzaste el cupo máximo permitido para este producto.',
)
->assertJsonPath(
'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,
)
->assertJsonPath('0.items.0.variants.0.availability.maximum_quantity', 8)
->assertJsonPath('0.items.0.variants.1.availability.maximum_quantity', 9)
->assertJsonCount(0, '0.items.0.variants.0.availability.reasons')
->assertJsonCount(0, '0.items.0.variants.1.availability.reasons')
->assertJsonMissingPath('0.items.0.variants.0.stock_tecnico')
->assertJsonMissingPath('0.items.0.variants.1.stock_tecnico');
}
@@ -163,7 +159,7 @@ class CatalogControllerTest extends TestCase
->assertOk()
->assertJsonCount(1, '0.items')
->assertJsonPath('0.items.0.nombre', 'Available')
->assertJsonCount(0, '0.items.0.availability.restrictions');
->assertJsonCount(0, '0.items.0.availability.reasons');
}
public function test_column_with_image_uses_item_image_then_variant_image_then_null(): void

View File

@@ -82,7 +82,7 @@ class CatalogItemDetailControllerTest extends TestCase
->assertOk()
->assertJsonCount(1, 'data.variants')
->assertJsonPath('data.variants.0.id', $secondVariant->id)
->assertJsonPath('data.variants.0.availability.subject', 'variant')
->assertJsonPath('data.variants.0.availability.state', 'visible')
->assertJsonPath('data.selected_variant.id', $secondVariant->id)
->assertJsonPath('data.selected_variant.availability.maximum_quantity', 6)
->assertJsonMissingPath('data.selected_variant.stock_tecnico')
@@ -360,6 +360,9 @@ class CatalogItemDetailControllerTest extends TestCase
->assertJsonPath('data.resolved_variant', null)
->assertJsonCount(3, 'data.variants')
->assertJsonPath('data.variants.0.id', $first->id)
->assertJsonPath('data.variants.0.availability.state', 'visible')
->assertJsonPath('data.variants.0.availability.maximum_quantity', 1)
->assertJsonPath('data.variants.0.availability.allowed_actions.2', 'add_to_cart')
->assertJsonPath('data.variants.0.values.sector.value', 'A')
->assertJsonPath('data.variants.0.values.seat.value', '1')
->assertJsonCount(2, 'data.selectors')
@@ -427,7 +430,9 @@ class CatalogItemDetailControllerTest extends TestCase
->assertOk()
->assertJsonPath('data.selected_values.sector', 'VIP')
->assertJsonPath('data.selected_values.seat', 'A-12')
->assertJsonPath('data.resolved_variant.id', $variant->id);
->assertJsonPath('data.resolved_variant.id', $variant->id)
->assertJsonPath('data.resolved_variant.availability.state', 'hidden')
->assertJsonMissingPath('data.resolved_variant.availability.allowed_actions');
}
private function createItem(