feat(desfile): enhance entry reservation form and service with tenant-specific data

This commit is contained in:
2026-09-23 16:55:35 -03:00
parent 5e78f2bb1e
commit 3671b95a83
6 changed files with 170 additions and 6 deletions

View File

@@ -0,0 +1,60 @@
<?php
namespace Tests\Unit\Catalog;
use App\Domains\Commerce\Catalog\Enums\InventoryPolicy;
use App\Domains\Commerce\Catalog\Models\CatalogItem;
use App\Domains\Commerce\Catalog\Models\Inventory;
use App\Domains\Commerce\Catalog\Models\Variant;
use App\Domains\Ticketing\Desfile\Models\EntryReservation;
use Illuminate\Database\Eloquent\Collection;
use Tests\TestCase;
class VariantAvailabilityTest extends TestCase
{
public function test_administrative_reservations_are_excluded_even_for_unlimited_stock_and_cart_exceptions(): void
{
$reserved = new Variant;
$reserved->id = 1;
$reserved->setRelation('desfileEntryReservations', new Collection([new EntryReservation]));
$available = new Variant;
$available->id = 2;
$available->setRelation('desfileEntryReservations', new Collection);
$item = new CatalogItem(['inventory_policy' => InventoryPolicy::Unlimited]);
$item->setRelation('variants', new Collection([$reserved, $available]));
$this->assertSame([2], $item->visibleVariants()->modelKeys());
$this->assertSame([2], $item->visibleVariants(1)->modelKeys());
}
public function test_sale_closure_and_variant_status_apply_without_the_cart_exception(): void
{
$active = new Variant;
$active->id = 1;
$disabled = new Variant(['sales_disabled_at' => now()]);
$disabled->id = 2;
$replaced = new Variant(['replaced_by_variant_id' => 1]);
$replaced->id = 3;
$item = new CatalogItem(['inventory_policy' => InventoryPolicy::Unlimited]);
$item->setRelation('variants', new Collection([$active, $disabled, $replaced]));
$this->assertSame([1], $item->visibleVariants()->modelKeys());
$item->sales_end_at = now()->subMinute();
$this->assertSame([], $item->visibleVariants()->modelKeys());
$this->assertSame([1], $item->visibleVariants(1)->modelKeys());
}
public function test_only_the_cart_can_include_its_own_out_of_stock_variant(): void
{
$variant = new Variant;
$variant->id = 1;
$variant->setRelation('inventory', new Inventory(['real_stock' => 1, 'reserved_stock' => 1]));
$item = new CatalogItem(['inventory_policy' => InventoryPolicy::Tracked]);
$item->setRelation('variants', new Collection([$variant]));
$this->assertSame([], $item->visibleVariants()->modelKeys());
$this->assertSame([1], $item->visibleVariants(1)->modelKeys());
$item->inventory_policy = InventoryPolicy::Unlimited;
$this->assertSame([1], $item->visibleVariants()->modelKeys());
}
}