feat(seeders): update FiestaFutbolInfantil seeders and tests to include new categories and menu items
This commit is contained in:
parent
b294e5c46e
commit
7f01adab73
|
|
@ -30,6 +30,11 @@ class FiestaFutbolInfantilProductSeeder extends Seeder
|
|||
}
|
||||
|
||||
$this->deleteExistingCatalog($tenant);
|
||||
FeaturedGroup::query()->where('tenant_code', $tenant->codigo)->delete();
|
||||
Category::query()
|
||||
->where('tenant_code', $tenant->codigo)
|
||||
->update(['categoria_id' => null]);
|
||||
Category::query()->where('tenant_code', $tenant->codigo)->delete();
|
||||
|
||||
$event = Event::query()->updateOrCreate(
|
||||
[
|
||||
|
|
@ -58,24 +63,16 @@ class FiestaFutbolInfantilProductSeeder extends Seeder
|
|||
'nombre' => 'Entradas',
|
||||
'tenant_code' => $tenant->codigo,
|
||||
]);
|
||||
$accommodationCategory = Category::query()->firstOrCreate([
|
||||
'nombre' => 'Alojamientos',
|
||||
'tenant_code' => $tenant->codigo,
|
||||
]);
|
||||
$merchandisingCategory = Category::query()->firstOrCreate([
|
||||
'nombre' => 'Merchandising',
|
||||
'tenant_code' => $tenant->codigo,
|
||||
]);
|
||||
$foodCategory = Category::query()->firstOrCreate([
|
||||
'nombre' => 'Gastronomía',
|
||||
'tenant_code' => $tenant->codigo,
|
||||
]);
|
||||
$mealCategory = Category::query()->updateOrCreate([
|
||||
'nombre' => 'Comidas',
|
||||
'tenant_code' => $tenant->codigo,
|
||||
], [
|
||||
'categoria_id' => $foodCategory->id,
|
||||
]);
|
||||
$drinkCategory = Category::query()->updateOrCreate([
|
||||
'nombre' => 'Bebidas',
|
||||
'tenant_code' => $tenant->codigo,
|
||||
], [
|
||||
'categoria_id' => $foodCategory->id,
|
||||
]);
|
||||
$parkingCategory = Category::query()->firstOrCreate([
|
||||
'nombre' => 'Estacionamiento',
|
||||
'nombre' => 'Comida',
|
||||
'tenant_code' => $tenant->codigo,
|
||||
]);
|
||||
|
||||
|
|
@ -106,12 +103,12 @@ class FiestaFutbolInfantilProductSeeder extends Seeder
|
|||
]);
|
||||
|
||||
$items = [
|
||||
['slug' => 'hamburguesa-papa-frita', 'nombre' => 'Hamburguesa con papa frita', 'precio' => 8000, 'category_id' => $mealCategory->id],
|
||||
['slug' => 'pancho', 'nombre' => 'Pancho', 'precio' => 4000, 'category_id' => $mealCategory->id],
|
||||
['slug' => 'coca-cola-500ml', 'nombre' => 'Coca Cola 500ml', 'precio' => 3000, 'category_id' => $drinkCategory->id],
|
||||
['slug' => 'agua-mineral-1l', 'nombre' => 'Agua Mineral 1L', 'precio' => 2500, 'category_id' => $drinkCategory->id],
|
||||
['slug' => 'estacionamiento-auto', 'nombre' => 'Estacionamiento Auto', 'precio' => 5000, 'category_id' => $parkingCategory->id],
|
||||
['slug' => 'estacionamiento-moto', 'nombre' => 'Estacionamiento Moto', 'precio' => 2000, 'category_id' => $parkingCategory->id],
|
||||
['slug' => 'alojamiento-por-noche', 'nombre' => 'Alojamiento por noche', 'precio' => 35000, 'category_id' => $accommodationCategory->id],
|
||||
['slug' => 'alojamiento-fin-de-semana', 'nombre' => 'Alojamiento fin de semana', 'precio' => 90000, 'category_id' => $accommodationCategory->id],
|
||||
['slug' => 'remera-oficial', 'nombre' => 'Remera oficial', 'precio' => 18000, 'category_id' => $merchandisingCategory->id],
|
||||
['slug' => 'gorra-oficial', 'nombre' => 'Gorra oficial', 'precio' => 12000, 'category_id' => $merchandisingCategory->id],
|
||||
['slug' => 'hamburguesa-papa-frita', 'nombre' => 'Hamburguesa con papa frita', 'precio' => 8000, 'category_id' => $foodCategory->id],
|
||||
['slug' => 'pancho', 'nombre' => 'Pancho', 'precio' => 4000, 'category_id' => $foodCategory->id],
|
||||
];
|
||||
|
||||
$createdItems = [];
|
||||
|
|
@ -157,7 +154,7 @@ class FiestaFutbolInfantilProductSeeder extends Seeder
|
|||
'nombre' => 'Combo 2 Panchos + 2 Hamburguesas',
|
||||
'descripcion' => 'Incluye 2 panchos y 2 hamburguesas con papa frita.',
|
||||
'precio' => 24000,
|
||||
'category_id' => $mealCategory->id,
|
||||
'category_id' => $foodCategory->id,
|
||||
'components' => [
|
||||
[
|
||||
'catalog_item_id' => $createdItems['pancho']->id,
|
||||
|
|
@ -172,9 +169,9 @@ class FiestaFutbolInfantilProductSeeder extends Seeder
|
|||
|
||||
$this->seedFeaturedGroups($tenant, [
|
||||
'Entradas' => $ticketCategory,
|
||||
'Estacionamiento' => $parkingCategory,
|
||||
'Comidas' => $mealCategory,
|
||||
'Bebidas' => $drinkCategory,
|
||||
'Alojamientos' => $accommodationCategory,
|
||||
'Merchandising' => $merchandisingCategory,
|
||||
'Comida' => $foodCategory,
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
@ -194,22 +191,20 @@ class FiestaFutbolInfantilProductSeeder extends Seeder
|
|||
/** @param array<string, Category> $categories */
|
||||
private function seedFeaturedGroups(Tenant $tenant, array $categories): void
|
||||
{
|
||||
FeaturedGroup::query()->where('tenant_code', $tenant->codigo)->delete();
|
||||
|
||||
$groups = [
|
||||
'Entradas' => [
|
||||
'product_layout' => ProductLayout::Row,
|
||||
'group_layout' => GroupLayout::SimpleVertical,
|
||||
],
|
||||
'Estacionamiento' => [
|
||||
'Alojamientos' => [
|
||||
'product_layout' => ProductLayout::ColumnWithCart,
|
||||
'group_layout' => GroupLayout::Simple,
|
||||
],
|
||||
'Comidas' => [
|
||||
'Merchandising' => [
|
||||
'product_layout' => ProductLayout::ColumnWithCart,
|
||||
'group_layout' => GroupLayout::Simple,
|
||||
],
|
||||
'Bebidas' => [
|
||||
'Comida' => [
|
||||
'product_layout' => ProductLayout::ColumnWithCart,
|
||||
'group_layout' => GroupLayout::Simple,
|
||||
],
|
||||
|
|
|
|||
|
|
@ -71,6 +71,30 @@ class MenuSeeder extends Seeder
|
|||
'parent_menu_code' => 'main.adminapp',
|
||||
'route' => '/admin/staff',
|
||||
],
|
||||
[
|
||||
'code' => 'adminapp.fiesta-futbol-infantil.entradas',
|
||||
'label' => 'Entradas',
|
||||
'parent_menu_code' => 'main.adminapp',
|
||||
'route' => '/admin/entradas',
|
||||
],
|
||||
[
|
||||
'code' => 'adminapp.fiesta-futbol-infantil.alojamientos',
|
||||
'label' => 'Alojamientos',
|
||||
'parent_menu_code' => 'main.adminapp',
|
||||
'route' => '/admin/alojamientos',
|
||||
],
|
||||
[
|
||||
'code' => 'adminapp.fiesta-futbol-infantil.merchandising',
|
||||
'label' => 'Merchandising',
|
||||
'parent_menu_code' => 'main.adminapp',
|
||||
'route' => '/admin/merchandising',
|
||||
],
|
||||
[
|
||||
'code' => 'adminapp.fiesta-futbol-infantil.comida',
|
||||
'label' => 'Comida',
|
||||
'parent_menu_code' => 'main.adminapp',
|
||||
'route' => '/admin/comidas',
|
||||
],
|
||||
[
|
||||
'code' => 'account',
|
||||
'label' => 'Mi cuenta',
|
||||
|
|
@ -222,6 +246,12 @@ class MenuSeeder extends Seeder
|
|||
'sonder',
|
||||
'fiesta_futbol_infantil',
|
||||
];
|
||||
$fiestaCategoryMenuCodes = [
|
||||
'adminapp.fiesta-futbol-infantil.entradas',
|
||||
'adminapp.fiesta-futbol-infantil.alojamientos',
|
||||
'adminapp.fiesta-futbol-infantil.merchandising',
|
||||
'adminapp.fiesta-futbol-infantil.comida',
|
||||
];
|
||||
$frequentlyAskedQuestions = [
|
||||
[
|
||||
'pregunta' => '¿Hay algún límite de compra?',
|
||||
|
|
@ -279,6 +309,10 @@ class MenuSeeder extends Seeder
|
|||
$menuCodes = array_diff($menuCodes, $helpMenuCodes);
|
||||
}
|
||||
|
||||
if ($tenant->codigo !== 'fiesta_futbol_infantil') {
|
||||
$menuCodes = array_diff($menuCodes, $fiestaCategoryMenuCodes);
|
||||
}
|
||||
|
||||
// Usar sync para asociar los menues al tenant
|
||||
$tenant->menues()->sync($menuCodes);
|
||||
|
||||
|
|
|
|||
|
|
@ -175,7 +175,7 @@ class FiestaFutbolInfantilProductSeederTest extends TestCase
|
|||
$this->assertSame(9, CatalogItem::query()->where('tenant_code', $tenant->codigo)->count());
|
||||
$this->assertSame(10, Inventory::query()->count());
|
||||
$this->assertSame(
|
||||
['Bebidas', 'Comidas', 'Entradas', 'Estacionamiento', 'Gastronomía'],
|
||||
['Alojamientos', 'Comida', 'Entradas', 'Merchandising'],
|
||||
Category::query()
|
||||
->where('tenant_code', $tenant->codigo)
|
||||
->orderBy('nombre')
|
||||
|
|
@ -183,10 +183,10 @@ class FiestaFutbolInfantilProductSeederTest extends TestCase
|
|||
->all(),
|
||||
);
|
||||
$this->assertSame(
|
||||
'Estacionamiento',
|
||||
'Merchandising',
|
||||
CatalogItem::query()
|
||||
->where('tenant_code', $tenant->codigo)
|
||||
->where('slug', 'estacionamiento-auto')
|
||||
->where('slug', 'remera-oficial')
|
||||
->with('category')
|
||||
->sole()
|
||||
->category
|
||||
|
|
@ -202,9 +202,9 @@ class FiestaFutbolInfantilProductSeederTest extends TestCase
|
|||
$this->assertSame(
|
||||
[
|
||||
'Entradas' => ['entrada-general', 'entrada-general-todos-los-dias'],
|
||||
'Estacionamiento' => ['estacionamiento-auto', 'estacionamiento-moto'],
|
||||
'Comidas' => ['hamburguesa-papa-frita', 'pancho', 'combo-2-panchos-2-hamburguesas'],
|
||||
'Bebidas' => ['coca-cola-500ml', 'agua-mineral-1l'],
|
||||
'Alojamientos' => ['alojamiento-por-noche', 'alojamiento-fin-de-semana'],
|
||||
'Merchandising' => ['remera-oficial', 'gorra-oficial'],
|
||||
'Comida' => ['hamburguesa-papa-frita', 'pancho', 'combo-2-panchos-2-hamburguesas'],
|
||||
],
|
||||
$featuredGroups
|
||||
->mapWithKeys(fn (FeaturedGroup $group): array => [
|
||||
|
|
@ -216,9 +216,9 @@ class FiestaFutbolInfantilProductSeederTest extends TestCase
|
|||
$this->assertSame(
|
||||
[
|
||||
['Entradas', FeaturedGroupSource::Category, 'Entradas', ProductLayout::Row, GroupLayout::SimpleVertical, 0],
|
||||
['Estacionamiento', FeaturedGroupSource::Category, 'Estacionamiento', ProductLayout::ColumnWithCart, GroupLayout::Simple, 1],
|
||||
['Comidas', FeaturedGroupSource::Category, 'Comidas', ProductLayout::ColumnWithCart, GroupLayout::Simple, 2],
|
||||
['Bebidas', FeaturedGroupSource::Category, 'Bebidas', ProductLayout::ColumnWithCart, GroupLayout::Simple, 3],
|
||||
['Alojamientos', FeaturedGroupSource::Category, 'Alojamientos', ProductLayout::ColumnWithCart, GroupLayout::Simple, 1],
|
||||
['Merchandising', FeaturedGroupSource::Category, 'Merchandising', ProductLayout::ColumnWithCart, GroupLayout::Simple, 2],
|
||||
['Comida', FeaturedGroupSource::Category, 'Comida', ProductLayout::ColumnWithCart, GroupLayout::Simple, 3],
|
||||
],
|
||||
$featuredGroups
|
||||
->map(fn (FeaturedGroup $group): array => [
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ class MenuSeederTest extends TestCase
|
|||
public function test_it_seeds_the_admin_menus(): void
|
||||
{
|
||||
$tenant = $this->createTenant('admin_tenant');
|
||||
$fiestaTenant = $this->createTenant('fiesta_futbol_infantil');
|
||||
|
||||
$this->seed(MenuSeeder::class);
|
||||
|
||||
|
|
@ -31,6 +32,12 @@ class MenuSeederTest extends TestCase
|
|||
'adminapp.staff' => ['Staff', '/admin/staff'],
|
||||
'adminapp.ventas' => ['Ventas', '/admin/ventas'],
|
||||
];
|
||||
$fiestaCategoryMenus = [
|
||||
'adminapp.fiesta-futbol-infantil.entradas' => ['Entradas', '/admin/entradas'],
|
||||
'adminapp.fiesta-futbol-infantil.alojamientos' => ['Alojamientos', '/admin/alojamientos'],
|
||||
'adminapp.fiesta-futbol-infantil.merchandising' => ['Merchandising', '/admin/merchandising'],
|
||||
'adminapp.fiesta-futbol-infantil.comida' => ['Comida', '/admin/comidas'],
|
||||
];
|
||||
|
||||
$adminApp = Menu::query()
|
||||
->with('children')
|
||||
|
|
@ -41,7 +48,7 @@ class MenuSeederTest extends TestCase
|
|||
$this->assertSame(Menu::CONTENT_TYPE_DYNAMIC, $adminApp->content_type);
|
||||
$this->assertSame('/', $adminApp->route);
|
||||
$this->assertSame(
|
||||
array_keys($expectedMenus),
|
||||
array_keys([...$expectedMenus, ...$fiestaCategoryMenus]),
|
||||
$adminApp->children->pluck('code')->sort()->values()->all()
|
||||
);
|
||||
$this->assertTrue(
|
||||
|
|
@ -64,6 +71,16 @@ class MenuSeederTest extends TestCase
|
|||
);
|
||||
}
|
||||
|
||||
foreach ($fiestaCategoryMenus as $code => [$label, $route]) {
|
||||
$menu = Menu::query()->where('code', $code)->firstOrFail();
|
||||
|
||||
$this->assertSame($label, $menu->label);
|
||||
$this->assertSame($route, $menu->route);
|
||||
$this->assertSame('main.adminapp', $menu->parent_menu_code);
|
||||
$this->assertFalse($tenant->menues()->where('menues.code', $code)->exists());
|
||||
$this->assertTrue($fiestaTenant->menues()->where('menues.code', $code)->exists());
|
||||
}
|
||||
|
||||
$this->assertFalse(
|
||||
Menu::query()->whereIn('code', [
|
||||
'admin.event',
|
||||
|
|
|
|||
Loading…
Reference in New Issue