feat(seeder): enhance FiestaFutbolInfantilProductSeeder to manage event dates and validity times
This commit is contained in:
@@ -10,8 +10,11 @@ use App\Domains\Catalog\Models\CatalogItem;
|
||||
use App\Domains\Catalog\Models\Category;
|
||||
use App\Domains\Catalog\Models\FeaturedGroup;
|
||||
use App\Domains\Catalog\Services\CatalogService;
|
||||
use App\Domains\Event\Models\EventDate;
|
||||
use App\Domains\Tenant\Models\Tenant;
|
||||
use App\Domains\Ticket\Enums\TicketGenerationPolicy;
|
||||
use App\Domains\Ticket\Enums\ValidityTimeType;
|
||||
use App\Domains\Ticket\Models\ValidityTime;
|
||||
use Illuminate\Database\Seeder;
|
||||
use RuntimeException;
|
||||
|
||||
@@ -47,13 +50,30 @@ class FiestaFutbolInfantilProductSeeder extends Seeder
|
||||
'event_location' => 'Sunchales, Santa Fe',
|
||||
]);
|
||||
|
||||
$existingValidityTimeIds = $tenant->eventDates()->pluck('validity_time_id');
|
||||
$tenant->eventDates()->delete();
|
||||
ValidityTime::query()->whereKey($existingValidityTimeIds)->delete();
|
||||
|
||||
$eventDates = collect(['2026-10-09', '2026-10-10', '2026-10-11', '2026-10-12'])
|
||||
->map(fn (string $date) => $tenant->eventDates()->create([
|
||||
->map(function (string $date) use ($tenant): EventDate {
|
||||
$validityTime = ValidityTime::query()->create([
|
||||
'type' => ValidityTimeType::FixedWindow,
|
||||
'start_time' => null,
|
||||
'end_time' => null,
|
||||
'fixed_starts_at' => $date.' 00:00:00',
|
||||
'fixed_expires_at' => $date.' 23:59:59',
|
||||
]);
|
||||
|
||||
$eventDate = new EventDate;
|
||||
$eventDate->forceFill([
|
||||
'date' => $date,
|
||||
'time_start' => '00:00:00',
|
||||
'time_end' => '23:59:59',
|
||||
]));
|
||||
'validity_time_id' => $validityTime->id,
|
||||
]);
|
||||
|
||||
return $tenant->eventDates()->save($eventDate);
|
||||
});
|
||||
$dateIds = $eventDates->pluck('id')->map(fn ($id): int => (int) $id)->values();
|
||||
|
||||
$this->createProduct($tenant, [
|
||||
|
||||
@@ -128,8 +128,8 @@ class TenantSeeder extends Seeder
|
||||
'button_text' => 'Comprar entradas',
|
||||
'button_href' => '/tickets',
|
||||
'background_image_id' => $this->uploadedImage(
|
||||
'images/tennants/fiesta_futbol_infantil/futbol_infantil_hero.jpg',
|
||||
'futbol_infantil_hero.jpg',
|
||||
'images/tennants/fiesta_futbol_infantil/futbol_infantil_hero.png',
|
||||
'futbol_infantil_hero.png',
|
||||
),
|
||||
],
|
||||
'eventConfig' => [
|
||||
|
||||
@@ -13,6 +13,8 @@ use App\Domains\Catalog\Models\Category;
|
||||
use App\Domains\Catalog\Models\FeaturedGroup;
|
||||
use App\Domains\Tenant\Models\Tenant;
|
||||
use App\Domains\Ticket\Enums\TicketGenerationPolicy;
|
||||
use App\Domains\Ticket\Enums\ValidityTimeType;
|
||||
use App\Domains\Ticket\Models\ValidityTime;
|
||||
use Database\Seeders\AttributeSeeder;
|
||||
use Database\Seeders\FiestaFutbolInfantilProductSeeder;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
@@ -44,6 +46,14 @@ class FiestaFutbolInfantilProductSeederTest extends TestCase
|
||||
$this->seed([AttributeSeeder::class, FiestaFutbolInfantilProductSeeder::class]);
|
||||
|
||||
$this->assertSame('9, 10, 11 y 12 de Octubre 2026', $tenant->fresh()->event_date_text);
|
||||
$this->assertCount(4, $tenant->eventDates);
|
||||
$this->assertCount(4, ValidityTime::query()->whereHas('eventDate', fn ($query) => $query
|
||||
->where('tenant_code', $tenant->codigo))->get());
|
||||
$this->assertTrue($tenant->eventDates()->with('validityTime')->get()->every(
|
||||
fn ($eventDate): bool => $eventDate->validityTime->type === ValidityTimeType::FixedWindow
|
||||
&& $eventDate->validityTime->fixed_starts_at->format('Y-m-d H:i:s') === $eventDate->date->format('Y-m-d').' 00:00:00'
|
||||
&& $eventDate->validityTime->fixed_expires_at->format('Y-m-d H:i:s') === $eventDate->date->format('Y-m-d').' 23:59:59'
|
||||
));
|
||||
|
||||
$this->assertSame(
|
||||
['color', 'event_date', 'horario', 'servicio', 'talle', 'tipo_alojamiento'],
|
||||
|
||||
Reference in New Issue
Block a user