seed([WebsiteTypeSeeder::class, SocialMediaSeeder::class, TenantSeeder::class]); $tenant = Tenant::query()->where('codigo', 'onticket')->sole(); $this->assertCount(0, $tenant->events); $this->seed(TestEventsSeeder::class); $events = $tenant->events()->with('dates.validityTime')->get(); $this->assertCount(3, $events); $this->assertSame(4, $events->sum(fn ($event): int => $event->dates->count())); $this->assertSame(6, $events->sum(fn ($event): int => $event->catalogItems()->count())); $this->assertEqualsCanonicalizing([ 'prueba-noche-de-musica-en-vivo', 'prueba-festival-de-sabores', 'prueba-stand-up-en-el-centro', ], $events->pluck('slug')->all()); $this->assertEqualsCanonicalizing( ['live-music.avif', 'food-festival.avif', 'stand-up.avif'], $events->map(fn ($event): string => $event->attachment->filename)->all(), ); foreach ($events as $event) { $this->assertTrue($event->published_at->isPast()); $this->assertNotNull($event->date_text); $this->assertNotNull($event->attachment_id); $this->assertSame('image/avif', $event->attachment->mime_type); Storage::disk('s3')->assertExists($event->attachment->path); $this->assertCount(2, $event->catalogItems); foreach ($event->catalogItems as $catalogItem) { $this->assertTrue($catalogItem->has_tickets); $this->assertSame('Entradas', $catalogItem->category->nombre); $this->assertSame($event->id, $catalogItem->event_id); $this->assertSame($event->dates->count(), $catalogItem->variants->count()); $this->assertTrue($catalogItem->variants->every( fn ($variant): bool => $variant->inventory->real_stock > 0 && $variant->eventDates->count() === 1 )); } foreach ($event->dates as $date) { $this->assertTrue($date->startsAt()->isFuture()); $this->assertNotNull($date->validityTime); } } $this->seed(TestEventsSeeder::class); $this->assertCount(3, $tenant->events()->get()); $this->assertCount(4, $tenant->eventDates()->get()); $this->assertCount(6, $tenant->catalogItems()->get()); $this->assertSame( $events->pluck('attachment_id')->all(), $tenant->events()->orderBy('id')->pluck('attachment_id')->all(), ); } }