feat(desfile): enhance entry reservation form and service with tenant-specific data
This commit is contained in:
60
tests/Unit/Catalog/VariantAvailabilityTest.php
Normal file
60
tests/Unit/Catalog/VariantAvailabilityTest.php
Normal 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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user