feat(variants): enhance disableForSuspension method to manage variant replacements and inventory merging
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user