feat: Introduce source type for featured groups; add category association and implement FeaturedGroupService for item sourcing
This commit is contained in:
@@ -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\EventProductType;
|
||||
use App\Domains\Catalog\Enums\FeaturedGroupSource;
|
||||
use App\Domains\Catalog\Enums\GroupLayout;
|
||||
use App\Domains\Catalog\Enums\ProductLayout;
|
||||
use App\Domains\Catalog\Models\Attribute;
|
||||
@@ -174,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(
|
||||
['Entradas', 'Estacionamiento', 'Gastronomía'],
|
||||
['Bebidas', 'Comidas', 'Entradas', 'Estacionamiento', 'Gastronomía'],
|
||||
Category::query()
|
||||
->where('tenant_code', $tenant->codigo)
|
||||
->orderBy('nombre')
|
||||
@@ -194,7 +195,7 @@ class FiestaFutbolInfantilProductSeederTest extends TestCase
|
||||
|
||||
$featuredGroups = FeaturedGroup::query()
|
||||
->where('tenant_code', $tenant->codigo)
|
||||
->with('featuredItems.catalogItem')
|
||||
->with('category.catalogItems')
|
||||
->orderBy('group_order')
|
||||
->get();
|
||||
|
||||
@@ -207,21 +208,23 @@ class FiestaFutbolInfantilProductSeederTest extends TestCase
|
||||
],
|
||||
$featuredGroups
|
||||
->mapWithKeys(fn (FeaturedGroup $group): array => [
|
||||
$group->group_name => $group->featuredItems->pluck('catalogItem.slug')->all(),
|
||||
$group->group_name => $group->category->catalogItems->pluck('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],
|
||||
['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],
|
||||
],
|
||||
$featuredGroups
|
||||
->map(fn (FeaturedGroup $group): array => [
|
||||
$group->group_name,
|
||||
$group->source_type,
|
||||
$group->category->nombre,
|
||||
$group->product_layout,
|
||||
$group->group_layout,
|
||||
$group->group_order,
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace Tests\Feature\Seeders;
|
||||
|
||||
use App\Domains\Attachable\Enums\AttachmentType;
|
||||
use App\Domains\Attachable\Models\Attachment;
|
||||
use App\Domains\Catalog\Enums\FeaturedGroupSource;
|
||||
use App\Domains\Catalog\Enums\GroupLayout;
|
||||
use App\Domains\Catalog\Enums\ProductLayout;
|
||||
use App\Domains\Catalog\Models\CatalogItem;
|
||||
@@ -70,16 +71,14 @@ class ProductCatalogFromImagesSeederTest extends TestCase
|
||||
$this->assertNotNull($paginatedGroup);
|
||||
$this->assertSame(ProductLayout::ColumnWithImage, $paginatedGroup->product_layout);
|
||||
$this->assertSame(GroupLayout::Paginated, $paginatedGroup->group_layout);
|
||||
$this->assertSame(0, $paginatedGroup->group_order);
|
||||
$this->assertSame(
|
||||
CatalogItem::query()->where('tenant_code', $tenant->codigo)->orderBy('id')->pluck('slug')->all(),
|
||||
$paginatedGroup->featuredItems->pluck('catalogItem.slug')->all(),
|
||||
);
|
||||
$this->assertCount(10, $paginatedGroup->featuredItems);
|
||||
$this->assertSame(FeaturedGroupSource::All, $paginatedGroup->source_type);
|
||||
$this->assertSame(2, $paginatedGroup->group_order);
|
||||
$this->assertCount(0, $paginatedGroup->featuredItems);
|
||||
|
||||
$this->assertNotNull($carouselGroup);
|
||||
$this->assertSame(ProductLayout::ColumnWithImage, $carouselGroup->product_layout);
|
||||
$this->assertSame(GroupLayout::Carousel, $carouselGroup->group_layout);
|
||||
$this->assertSame(FeaturedGroupSource::Manual, $carouselGroup->source_type);
|
||||
$this->assertSame(1, $carouselGroup->group_order);
|
||||
$this->assertCount(5, $carouselGroup->featuredItems);
|
||||
$this->assertCount(
|
||||
|
||||
Reference in New Issue
Block a user