feat(event): dispatch date change notifications
This commit is contained in:
@@ -9,6 +9,8 @@ use App\Domains\Authorization\Enums\RoleCode;
|
||||
use App\Domains\Catalog\Models\CatalogItem;
|
||||
use App\Domains\Catalog\Models\Inventory;
|
||||
use App\Domains\Catalog\Models\Variant;
|
||||
use App\Domains\Event\Events\EventDateRescheduled;
|
||||
use App\Domains\Event\Events\EventDateSuspended;
|
||||
use App\Domains\Tenant\Models\Tenant;
|
||||
use App\Domains\Tenant\Models\WebsiteType;
|
||||
use App\Domains\Ticket\Enums\ValidityTimeType;
|
||||
@@ -16,6 +18,7 @@ use App\Domains\Ticket\Models\Ticket;
|
||||
use Database\Seeders\AuthorizationSeeder;
|
||||
use Database\Seeders\SocialMediaSeeder;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Str;
|
||||
use Laravel\Sanctum\Sanctum;
|
||||
use Tests\TestCase;
|
||||
@@ -230,6 +233,7 @@ class AdminAppEventControllerTest extends TestCase
|
||||
|
||||
public function test_rescheduling_reuses_an_existing_date_and_tickets_resolve_its_validity(): void
|
||||
{
|
||||
Event::fake([EventDateRescheduled::class]);
|
||||
$tenant = $this->createActiveEvent($this->createTenant('acme'), 'Festival Acme');
|
||||
$admin = $this->createAdminAppUser($tenant);
|
||||
$original = $tenant->eventDates()->create([
|
||||
@@ -253,6 +257,15 @@ class AdminAppEventControllerTest extends TestCase
|
||||
->assertJsonPath('data.status', 'rescheduled')
|
||||
->assertJsonPath('data.rescheduled_to_event_date_id', $destination->id);
|
||||
|
||||
Event::assertDispatched(EventDateRescheduled::class, function (EventDateRescheduled $event) use ($tenant, $original, $destination): bool {
|
||||
return $event->tenantCode === $tenant->codigo
|
||||
&& $event->sourceEventDateId === $original->id
|
||||
&& $event->destinationEventDateId === $destination->id
|
||||
&& $event->previousDate === '09/10/2027'
|
||||
&& $event->newDate === '20/10/2027'
|
||||
&& $event->purchaseTickets === [];
|
||||
});
|
||||
|
||||
$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')
|
||||
@@ -288,6 +301,7 @@ class AdminAppEventControllerTest extends TestCase
|
||||
|
||||
public function test_suspending_disables_only_tickets_without_another_usable_date(): void
|
||||
{
|
||||
Event::fake([EventDateSuspended::class]);
|
||||
$tenant = $this->createActiveEvent($this->createTenant('acme'), 'Festival Acme');
|
||||
$admin = $this->createAdminAppUser($tenant);
|
||||
$suspendedDate = $tenant->eventDates()->create([
|
||||
@@ -312,6 +326,13 @@ class AdminAppEventControllerTest extends TestCase
|
||||
->assertJsonPath('data.status', 'suspended')
|
||||
->assertJsonPath('data.suspended_at', fn ($value) => is_string($value));
|
||||
|
||||
Event::assertDispatched(EventDateSuspended::class, function (EventDateSuspended $event) use ($tenant, $suspendedDate): bool {
|
||||
return $event->tenantCode === $tenant->codigo
|
||||
&& $event->eventDateId === $suspendedDate->id
|
||||
&& $event->date === '09/10/2027'
|
||||
&& $event->purchaseTickets === [];
|
||||
});
|
||||
|
||||
$this->assertNotNull($singleDateTicket->fresh()->disabled_at);
|
||||
$this->assertNull($multipleDateTicket->fresh()->disabled_at);
|
||||
$this->assertSame('10 de Octubre 2027', $tenant->fresh()->event_date_text);
|
||||
|
||||
Reference in New Issue
Block a user