feat(event): add effective date resolution for rescheduled events and update tests
This commit is contained in:
@@ -352,11 +352,12 @@ class NotificationMailServiceTest extends TestCase
|
||||
Mail::assertSent(Mailable::class, function (Mailable $mail) use ($purchase, $firstTicket, $secondTicket): bool {
|
||||
$mail->assertTo('checkout@example.com');
|
||||
|
||||
return $mail->subject === "Tu evento fue reprogramado - Compra #{$purchase->id}"
|
||||
return $mail->subject === "Tu evento fue reprogramado - N° de Orden #{$purchase->id}"
|
||||
&& str_contains($mail->render(), '09/10/2027')
|
||||
&& str_contains($mail->render(), '20/10/2027')
|
||||
&& str_contains($mail->render(), '#'.$firstTicket->id)
|
||||
&& str_contains($mail->render(), '#'.$secondTicket->id);
|
||||
&& str_contains($mail->render(), 'N° de Ticket #'.$firstTicket->id)
|
||||
&& str_contains($mail->render(), 'N° de Ticket #'.$secondTicket->id)
|
||||
&& str_contains($mail->render(), 'N° de Orden #'.$purchase->id);
|
||||
});
|
||||
$this->assertDatabaseHas('email_deliveries', [
|
||||
'idempotency_key' => "event-date-rescheduled:10:20:{$purchase->id}",
|
||||
|
||||
@@ -835,6 +835,50 @@ class AdminAppTicketControllerTest extends TestCase
|
||||
->assertJsonPath('total_tickets', 1);
|
||||
}
|
||||
|
||||
public function test_it_shows_the_effective_date_after_multiple_reschedules_and_suspension(): void
|
||||
{
|
||||
$tenant = $this->createTenant('fiesta_futbol_infantil');
|
||||
$admin = $this->createAdminAppUser($tenant);
|
||||
$this->grantTicketsMenu($tenant);
|
||||
$this->seed([AttributeSeeder::class, FiestaFutbolInfantilProductSeeder::class]);
|
||||
Sanctum::actingAs($admin);
|
||||
|
||||
$entry = CatalogItem::query()->where('tenant_code', $tenant->codigo)->where('slug', 'abono')->firstOrFail();
|
||||
$variant = $entry->variants()->whereHas('eventDates')->firstOrFail();
|
||||
$original = $variant->selectedEventDates()->firstOrFail();
|
||||
$middle = $tenant->eventDates()->create([
|
||||
'date' => '2026-11-01', 'time_start' => '09:00', 'time_end' => '18:00',
|
||||
]);
|
||||
$latest = $tenant->eventDates()->create([
|
||||
'date' => '2026-11-02', 'time_start' => '09:00', 'time_end' => '18:00',
|
||||
]);
|
||||
$original->update(['rescheduled_to_event_date_id' => $middle->id]);
|
||||
$middle->update(['rescheduled_to_event_date_id' => $latest->id]);
|
||||
$ticket = $this->createTicket($tenant, $admin, [
|
||||
'source_catalog_item_id' => $entry->id,
|
||||
'source_variant_id' => $variant->id,
|
||||
]);
|
||||
|
||||
$this->getJson('/api/v1/adminapp/tenant/tickets')
|
||||
->assertOk()
|
||||
->assertJsonPath('data.0.id', $ticket->id)
|
||||
->assertJsonPath('data.0.values.date', '10/10, 11/10, 12/10, 02/11');
|
||||
|
||||
$latest->update(['suspended_at' => now()]);
|
||||
|
||||
$this->getJson('/api/v1/adminapp/tenant/tickets')
|
||||
->assertOk()
|
||||
->assertJsonPath('data.0.values.date', '10/10, 11/10, 12/10');
|
||||
|
||||
foreach ($variant->selectedEventDates()->skip(1) as $date) {
|
||||
$date->update(['suspended_at' => now()]);
|
||||
}
|
||||
|
||||
$this->getJson('/api/v1/adminapp/tenant/tickets')
|
||||
->assertOk()
|
||||
->assertJsonPath('data.0.values.date', '-');
|
||||
}
|
||||
|
||||
public function test_it_exposes_and_filters_merchandise_color_and_size(): void
|
||||
{
|
||||
$tenant = $this->createTenant('fiesta_futbol_infantil');
|
||||
|
||||
Reference in New Issue
Block a user