feat(seeders): associate categories with tenant codes in seeders and tests

This commit is contained in:
2026-07-28 10:42:55 -03:00
parent ff9d7728e8
commit 89f6dab0c4
5 changed files with 52 additions and 7 deletions

View File

@@ -3,6 +3,7 @@
namespace Database\Seeders;
use App\Domains\Catalog\Models\Category;
use App\Domains\Tenant\Models\Tenant;
use Illuminate\Database\Seeder;
class CategorySeeder extends Seeder
@@ -12,6 +13,12 @@ class CategorySeeder extends Seeder
*/
public function run(): void
{
$tenant = Tenant::query()->where('codigo', 'sonder')->first();
if (! $tenant instanceof Tenant) {
return;
}
$categories = [
'Remeras',
'Pantalones',
@@ -23,7 +30,7 @@ class CategorySeeder extends Seeder
foreach ($categories as $nombre) {
Category::firstOrCreate([
'nombre' => $nombre,
'tenant_code' => null,
'tenant_code' => $tenant->codigo,
]);
}
}

View File

@@ -30,11 +30,15 @@ class FiestaFutbolInfantilProductSeeder extends Seeder
$ticketCategory = Category::query()->firstOrCreate([
'nombre' => 'Entradas',
'tenant_code' => null,
'tenant_code' => $tenant->codigo,
]);
$foodCategory = Category::query()->firstOrCreate([
'nombre' => 'Gastronomía',
'tenant_code' => null,
'tenant_code' => $tenant->codigo,
]);
$parkingCategory = Category::query()->firstOrCreate([
'nombre' => 'Estacionamiento',
'tenant_code' => $tenant->codigo,
]);
$dates = ['2026-10-09', '2026-10-10', '2026-10-11', '2026-10-12'];
@@ -69,8 +73,8 @@ class FiestaFutbolInfantilProductSeeder extends Seeder
['slug' => 'pancho', 'nombre' => 'Pancho', 'precio' => 4000, 'category_id' => $foodCategory->id],
['slug' => 'coca-cola-500ml', 'nombre' => 'Coca Cola 500ml', 'precio' => 3000, 'category_id' => $foodCategory->id],
['slug' => 'agua-mineral-1l', 'nombre' => 'Agua Mineral 1L', 'precio' => 2500, 'category_id' => $foodCategory->id],
['slug' => 'estacionamiento-auto', 'nombre' => 'Estacionamiento Auto', 'precio' => 5000, 'category_id' => $ticketCategory->id],
['slug' => 'estacionamiento-moto', 'nombre' => 'Estacionamiento Moto', 'precio' => 2000, 'category_id' => $ticketCategory->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],
];
$createdItems = [];

View File

@@ -236,11 +236,11 @@ class ProductCatalogFromImagesSeeder extends Seeder
$category = Category::query()
->where('nombre', $metadata['category_name'])
->whereNull('tenant_code')
->where('tenant_code', $tenant->codigo)
->first();
if (! $category instanceof Category) {
throw new RuntimeException("Category '{$metadata['category_name']}' not found.");
throw new RuntimeException("Category '{$metadata['category_name']}' not found for tenant '{$tenant->codigo}'.");
}
$attributeCodes = Attribute::query()

View File

@@ -9,6 +9,7 @@ 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\Category;
use App\Domains\Catalog\Models\FeaturedGroup;
use App\Domains\Catalog\Models\Inventory;
use App\Domains\Tenant\Models\Tenant;
@@ -155,6 +156,24 @@ class FiestaFutbolInfantilProductSeederTest extends TestCase
);
$this->assertSame(9, CatalogItem::query()->where('tenant_code', $tenant->codigo)->count());
$this->assertSame(10, Inventory::query()->count());
$this->assertSame(
['Entradas', 'Estacionamiento', 'Gastronomía'],
Category::query()
->where('tenant_code', $tenant->codigo)
->orderBy('nombre')
->pluck('nombre')
->all(),
);
$this->assertSame(
'Estacionamiento',
CatalogItem::query()
->where('tenant_code', $tenant->codigo)
->where('slug', 'estacionamiento-auto')
->with('category')
->sole()
->category
->nombre,
);
$featuredGroups = FeaturedGroup::query()
->where('tenant_code', $tenant->codigo)

View File

@@ -7,6 +7,7 @@ use App\Domains\Attachable\Models\Attachment;
use App\Domains\Catalog\Enums\GroupLayout;
use App\Domains\Catalog\Enums\ProductLayout;
use App\Domains\Catalog\Models\CatalogItem;
use App\Domains\Catalog\Models\Category;
use App\Domains\Catalog\Models\FeaturedGroup;
use App\Domains\Tenant\Models\Tenant;
use Database\Seeders\AttributeSeeder;
@@ -91,5 +92,19 @@ class ProductCatalogFromImagesSeederTest extends TestCase
->pluck('catalog_item_id')
->diff($catalogItemIds),
);
$this->assertSame(
['Accesorios', 'Buzos', 'Pantalones', 'Remeras', 'Zapatillas'],
Category::query()
->where('tenant_code', $tenant->codigo)
->orderBy('nombre')
->pluck('nombre')
->all(),
);
$this->assertFalse(
CatalogItem::query()
->where('tenant_code', $tenant->codigo)
->whereHas('category', fn ($query) => $query->where('tenant_code', '!=', $tenant->codigo))
->exists(),
);
}
}