diff --git a/app/Domains/Tenant/Resources/TenantResource.php b/app/Domains/Tenant/Resources/TenantResource.php index f268f7a..b005f40 100644 --- a/app/Domains/Tenant/Resources/TenantResource.php +++ b/app/Domains/Tenant/Resources/TenantResource.php @@ -5,6 +5,7 @@ namespace App\Domains\Tenant\Resources; use App\Domains\Attachable\Models\Attachment; use App\Domains\Attachable\Models\AttachmentCrop; use App\Domains\Catalog\Models\Category; +use App\Domains\Event\Models\EventDate; use App\Domains\Menu\Models\Menu; use App\Domains\Tenant\Models\Tenant; use Illuminate\Http\Request; @@ -50,12 +51,16 @@ class TenantResource extends JsonResource : [ 'title' => $this->event_title, 'location' => $this->event_location, - 'dates' => $this->eventDates->map(fn ($eventDate): array => [ - 'id' => $eventDate->id, - 'date' => $eventDate->date->format('Y-m-d'), - 'time_start' => $eventDate->time_start, - 'time_end' => $eventDate->time_end, - ])->values(), + 'dates' => $this->eventDates + ->filter(fn (EventDate $eventDate): bool => $eventDate->rescheduled_to_event_date_id === null + && $eventDate->suspended_at === null + ) + ->map(fn (EventDate $eventDate): array => [ + 'id' => $eventDate->id, + 'date' => $eventDate->date->format('Y-m-d'), + 'time_start' => $eventDate->time_start, + 'time_end' => $eventDate->time_end, + ])->values(), ]), 'extras' => $this->whenLoaded( 'websiteExtras', diff --git a/tests/Feature/Event/AdminAppEventControllerTest.php b/tests/Feature/Event/AdminAppEventControllerTest.php index e9d78bc..5cfe5b0 100644 --- a/tests/Feature/Event/AdminAppEventControllerTest.php +++ b/tests/Feature/Event/AdminAppEventControllerTest.php @@ -172,7 +172,7 @@ class AdminAppEventControllerTest extends TestCase public function test_rescheduling_reuses_an_existing_date_and_tickets_resolve_its_validity(): void { - $tenant = $this->createTenant('acme'); + $tenant = $this->createActiveEvent($this->createTenant('acme'), 'Festival Acme'); $admin = $this->createAdminAppUser($tenant); $original = $tenant->eventDates()->create([ 'date' => '2027-10-09', @@ -196,6 +196,12 @@ class AdminAppEventControllerTest extends TestCase ->assertJsonPath('data.rescheduled_to_event_date_id', $destination->id); $this->assertDatabaseCount('event_dates', 2); + $this->assertSame('20 de Octubre 2027', $tenant->fresh()->event_date_text); + $this->getJson('/api/tenants/bootstrap?dominio=acme.test&path=%2F') + ->assertOk() + ->assertJsonCount(1, 'data.event.dates') + ->assertJsonPath('data.event.dates.0.id', $destination->id) + ->assertJsonPath('data.event_date_text', '20 de Octubre 2027'); $this->assertSame( '2027-10-20 11:00:00', $ticket->resolvedValidity()->effectiveStartsAt()?->format('Y-m-d H:i:s'), @@ -210,6 +216,12 @@ class AdminAppEventControllerTest extends TestCase ])->assertOk()->assertJsonPath('data.status', 'rescheduled'); $this->assertDatabaseCount('event_dates', 3); + $this->assertSame('25 de Octubre 2027', $tenant->fresh()->event_date_text); + $this->getJson('/api/tenants/bootstrap?dominio=acme.test&path=%2F') + ->assertOk() + ->assertJsonCount(1, 'data.event.dates') + ->assertJsonPath('data.event.dates.0.date', '2027-10-25') + ->assertJsonPath('data.event_date_text', '25 de Octubre 2027'); $this->assertSame( '2027-10-25 11:00:00', $ticket->fresh()->resolvedValidity()->effectiveStartsAt()?->format('Y-m-d H:i:s'), @@ -218,7 +230,7 @@ class AdminAppEventControllerTest extends TestCase public function test_suspending_disables_only_tickets_without_another_usable_date(): void { - $tenant = $this->createTenant('acme'); + $tenant = $this->createActiveEvent($this->createTenant('acme'), 'Festival Acme'); $admin = $this->createAdminAppUser($tenant); $suspendedDate = $tenant->eventDates()->create([ 'date' => '2027-10-09', @@ -244,6 +256,12 @@ class AdminAppEventControllerTest extends TestCase $this->assertNotNull($singleDateTicket->fresh()->disabled_at); $this->assertNull($multipleDateTicket->fresh()->disabled_at); + $this->assertSame('10 de Octubre 2027', $tenant->fresh()->event_date_text); + $this->getJson('/api/tenants/bootstrap?dominio=acme.test&path=%2F') + ->assertOk() + ->assertJsonCount(1, 'data.event.dates') + ->assertJsonPath('data.event.dates.0.id', $otherDate->id) + ->assertJsonPath('data.event_date_text', '10 de Octubre 2027'); $this->assertSame( '2027-10-10 09:00:00', $multipleDateTicket->fresh()->resolvedValidity()->effectiveStartsAt()?->format('Y-m-d H:i:s'),