diff --git a/database/seeders/FiestaFutbolInfantilProductSeeder.php b/database/seeders/FiestaFutbolInfantilProductSeeder.php index f0522ad..0b70647 100644 --- a/database/seeders/FiestaFutbolInfantilProductSeeder.php +++ b/database/seeders/FiestaFutbolInfantilProductSeeder.php @@ -139,42 +139,58 @@ class FiestaFutbolInfantilProductSeeder extends Seeder $groups = [ 'Entradas' => [ - 'entrada-general', - 'entrada-general-todos-los-dias', + 'product_layout' => ProductLayout::Row, + 'group_layout' => GroupLayout::SimpleVertical, + 'slugs' => [ + 'entrada-general', + 'entrada-general-todos-los-dias', + ], ], 'Estacionamiento' => [ - 'estacionamiento-auto', - 'estacionamiento-moto', + 'product_layout' => ProductLayout::ColumnWithCart, + 'group_layout' => GroupLayout::Simple, + 'slugs' => [ + 'estacionamiento-auto', + 'estacionamiento-moto', + ], ], 'Comidas' => [ - 'hamburguesa-papa-frita', - 'pancho', - 'combo-2-panchos-2-hamburguesas', + 'product_layout' => ProductLayout::ColumnWithCart, + 'group_layout' => GroupLayout::Simple, + 'slugs' => [ + 'hamburguesa-papa-frita', + 'pancho', + 'combo-2-panchos-2-hamburguesas', + ], ], 'Bebidas' => [ - 'coca-cola-500ml', - 'agua-mineral-1l', + 'product_layout' => ProductLayout::ColumnWithCart, + 'group_layout' => GroupLayout::Simple, + 'slugs' => [ + 'coca-cola-500ml', + 'agua-mineral-1l', + ], ], ]; $catalogItems = CatalogItem::query() ->where('tenant_code', $tenant->codigo) - ->whereIn('slug', collect($groups)->flatten()->all()) + ->whereIn('slug', collect($groups)->pluck('slugs')->flatten()->all()) ->get() ->keyBy('slug'); $groupOrder = 0; - foreach ($groups as $groupName => $slugs) { + foreach ($groups as $groupName => $config) { $featuredGroup = FeaturedGroup::query()->create([ 'tenant_code' => $tenant->codigo, - 'product_layout' => ProductLayout::Row, - 'group_layout' => GroupLayout::Paginated, + 'product_layout' => $config['product_layout'], + 'group_layout' => $config['group_layout'], 'group_name' => $groupName, 'group_order' => $groupOrder++, ]); $featuredGroup->featuredItems()->createMany( - collect($slugs)->values()->map( + collect($config['slugs'])->values()->map( fn (string $slug, int $order): array => [ 'catalog_item_id' => $catalogItems->get($slug)->id, 'order' => $order, diff --git a/tests/Feature/Seeders/FiestaFutbolInfantilProductSeederTest.php b/tests/Feature/Seeders/FiestaFutbolInfantilProductSeederTest.php index f2c9f2b..374e009 100644 --- a/tests/Feature/Seeders/FiestaFutbolInfantilProductSeederTest.php +++ b/tests/Feature/Seeders/FiestaFutbolInfantilProductSeederTest.php @@ -6,6 +6,7 @@ use App\Domains\Attachable\Enums\AttachmentType; use App\Domains\Attachable\Models\Attachment; use App\Domains\Catalog\Enums\CatalogItemType; use App\Domains\Catalog\Enums\GroupLayout; +use App\Domains\Catalog\Enums\ProductLayout; use App\Domains\Catalog\Models\Attribute; use App\Domains\Catalog\Models\CatalogItem; use App\Domains\Catalog\Models\FeaturedGroup; @@ -122,6 +123,12 @@ class FiestaFutbolInfantilProductSeederTest extends TestCase $this->assertSame(9, CatalogItem::query()->where('tenant_code', $tenant->codigo)->count()); $this->assertSame(10, Inventory::query()->count()); + $featuredGroups = FeaturedGroup::query() + ->where('tenant_code', $tenant->codigo) + ->with('featuredItems.catalogItem') + ->orderBy('group_order') + ->get(); + $this->assertSame( [ 'Entradas' => ['entrada-general', 'entrada-general-todos-los-dias'], @@ -129,19 +136,28 @@ class FiestaFutbolInfantilProductSeederTest extends TestCase 'Comidas' => ['hamburguesa-papa-frita', 'pancho', 'combo-2-panchos-2-hamburguesas'], 'Bebidas' => ['coca-cola-500ml', 'agua-mineral-1l'], ], - FeaturedGroup::query() - ->where('tenant_code', $tenant->codigo) - ->with('featuredItems.catalogItem') - ->orderBy('group_order') - ->get() - ->each(fn (FeaturedGroup $group) => $this->assertSame( - GroupLayout::Paginated, - $group->group_layout, - )) + $featuredGroups ->mapWithKeys(fn (FeaturedGroup $group): array => [ $group->group_name => $group->featuredItems->pluck('catalogItem.slug')->all(), ]) ->all() ); + + $this->assertSame( + [ + ['Entradas', ProductLayout::Row, GroupLayout::SimpleVertical, 0], + ['Estacionamiento', ProductLayout::ColumnWithCart, GroupLayout::Simple, 1], + ['Comidas', ProductLayout::ColumnWithCart, GroupLayout::Simple, 2], + ['Bebidas', ProductLayout::ColumnWithCart, GroupLayout::Simple, 3], + ], + $featuredGroups + ->map(fn (FeaturedGroup $group): array => [ + $group->group_name, + $group->product_layout, + $group->group_layout, + $group->group_order, + ]) + ->all() + ); } }