feat(seeder): update featured groups configuration with product and group layouts

This commit is contained in:
2026-07-24 10:42:27 -03:00
parent c1be9ecf7f
commit 18c23a112a
2 changed files with 55 additions and 23 deletions

View File

@@ -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,

View File

@@ -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()
);
}
}