feat(variants): enhance disableForSuspension method to manage variant replacements and inventory merging

This commit is contained in:
2026-09-16 08:56:01 -03:00
parent d02ad5fce2
commit 44178d72a5
3 changed files with 233 additions and 2 deletions

View File

@@ -474,6 +474,13 @@ class AdminAppEventControllerTest extends TestCase
$singleDateVariant = $this->createVariant($tenant, $suspendedDate->id);
$multipleDateVariant = $this->createVariant($tenant);
$multipleDateVariant->eventDates()->sync([$suspendedDate->id, $otherDate->id]);
$remainingDateVariant = Variant::query()->create([
'catalog_item_id' => $multipleDateVariant->catalog_item_id,
'inventory_id' => Inventory::query()->create()->id,
'event_date_id' => $otherDate->id,
]);
$singleDateVariant->inventory->update(['real_stock' => 5]);
$multipleDateVariant->inventory->update(['real_stock' => 5]);
$singleDateTicket = $this->createTicket($tenant, $admin, $singleDateVariant);
$multipleDateTicket = $this->createTicket($tenant, $admin, $multipleDateVariant);
Sanctum::actingAs($admin);
@@ -508,6 +515,14 @@ class AdminAppEventControllerTest extends TestCase
$this->assertNull($multipleDateTicket->fresh()->disabled_at);
$this->assertNotNull($singleDateVariant->fresh()->sales_disabled_at);
$this->assertNotNull($multipleDateVariant->fresh()->sales_disabled_at);
$replacement = $multipleDateVariant->fresh()->replacement;
$this->assertNotNull($replacement);
$this->assertSame($remainingDateVariant->id, $replacement->id);
$this->assertTrue($replacement->isSellable());
$this->assertSame([$otherDate->id], $replacement->selectedEventDates()->pluck('id')->all());
$this->assertSame(5, $replacement->inventory->fresh()->availableStock());
$this->assertTrue(CatalogItem::query()->whereKey($multipleDateVariant->catalog_item_id)->whereAvailable()->exists());
$this->assertFalse(CatalogItem::query()->whereKey($singleDateVariant->catalog_item_id)->whereAvailable()->exists());
$this->assertSame('10 de Octubre 2027', $tenant->fresh()->event_date_text);
$this->getJson('/api/tenants/bootstrap?dominio=acme.test&path=%2F')
->assertOk()
@@ -525,6 +540,10 @@ class AdminAppEventControllerTest extends TestCase
'2027-10-10 09:00:00',
$multipleDateTicket->fresh()->resolvedValidity()->effectiveStartsAt()?->format('Y-m-d H:i:s'),
);
$this->postJson("/api/v1/adminapp/tenant/event-dates/{$otherDate->id}/suspend")
->assertOk();
$this->assertFalse(CatalogItem::query()->whereKey($multipleDateVariant->catalog_item_id)->whereAvailable()->exists());
}
public function test_suspending_a_reschedule_destination_disables_tickets_from_predecessor_dates(): void