feat(seeder): update MenuSeeder and tests to reflect new admin menu structure; change border color in WebsiteTypeSeeder
This commit is contained in:
@@ -23,16 +23,54 @@ class MenuSeeder extends Seeder
|
||||
'route' => '/product/:id',
|
||||
],
|
||||
['code' => 'checkout', 'label' => 'Finalizar compra', 'route' => '/checkout'],
|
||||
['code' => 'admin.event', 'label' => 'Eventos', 'route' => '/admin/event'],
|
||||
['code' => 'admin.catalog', 'label' => 'Catálogo', 'route' => '/admin/catalog'],
|
||||
['code' => 'admin.combos', 'label' => 'Combos', 'route' => '/admin/combos'],
|
||||
[
|
||||
'code' => 'admin.categories',
|
||||
'code' => 'main.adminapp',
|
||||
'label' => 'Administración',
|
||||
'content_type' => Menu::CONTENT_TYPE_DYNAMIC,
|
||||
'route' => '/',
|
||||
],
|
||||
[
|
||||
'code' => 'adminapp.event',
|
||||
'label' => 'Eventos',
|
||||
'parent_menu_code' => 'main.adminapp',
|
||||
'route' => '/admin/event',
|
||||
],
|
||||
[
|
||||
'code' => 'adminapp.inicio',
|
||||
'label' => 'Inicio',
|
||||
'parent_menu_code' => 'main.adminapp',
|
||||
'route' => '/admin/inicio',
|
||||
],
|
||||
[
|
||||
'code' => 'adminapp.catalog',
|
||||
'label' => 'Catálogo',
|
||||
'parent_menu_code' => 'main.adminapp',
|
||||
'route' => '/admin/catalog',
|
||||
],
|
||||
[
|
||||
'code' => 'adminapp.combos',
|
||||
'label' => 'Combos',
|
||||
'parent_menu_code' => 'main.adminapp',
|
||||
'route' => '/admin/combos',
|
||||
],
|
||||
[
|
||||
'code' => 'adminapp.categories',
|
||||
'label' => 'Categorías',
|
||||
'parent_menu_code' => 'main.adminapp',
|
||||
'route' => '/admin/categories',
|
||||
],
|
||||
['code' => 'admin.ventas', 'label' => 'Ventas', 'route' => '/admin/ventas'],
|
||||
['code' => 'admin.staff', 'label' => 'Staff', 'route' => '/admin/staff'],
|
||||
[
|
||||
'code' => 'adminapp.ventas',
|
||||
'label' => 'Ventas',
|
||||
'parent_menu_code' => 'main.adminapp',
|
||||
'route' => '/admin/ventas',
|
||||
],
|
||||
[
|
||||
'code' => 'adminapp.staff',
|
||||
'label' => 'Staff',
|
||||
'parent_menu_code' => 'main.adminapp',
|
||||
'route' => '/admin/staff',
|
||||
],
|
||||
[
|
||||
'code' => 'account',
|
||||
'label' => 'Mi cuenta',
|
||||
@@ -135,9 +173,30 @@ class MenuSeeder extends Seeder
|
||||
->whereIn('code', ['profile', 'purchases', 'tickets'])
|
||||
->delete();
|
||||
|
||||
Menu::query()
|
||||
->whereIn('code', [
|
||||
'admin.event',
|
||||
'admin.catalog',
|
||||
'admin.combos',
|
||||
'admin.categories',
|
||||
'admin.ventas',
|
||||
'admin.staff',
|
||||
'event',
|
||||
'catalog',
|
||||
'combos',
|
||||
'categories',
|
||||
'ventas',
|
||||
'staff',
|
||||
])
|
||||
->delete();
|
||||
|
||||
$allRoleMenuCodes = Menu::query()->pluck('code');
|
||||
$adminAppMenuCodes = Menu::query()
|
||||
->where('code', 'main.adminapp')
|
||||
->orWhere('parent_menu_code', 'main.adminapp')
|
||||
->pluck('code');
|
||||
$userMenuCodes = Menu::query()
|
||||
->where('code', 'not like', 'admin.%')
|
||||
->whereNotIn('code', $adminAppMenuCodes)
|
||||
->pluck('code');
|
||||
|
||||
Role::query()
|
||||
|
||||
@@ -19,7 +19,7 @@ class WebsiteTypeSeeder extends Seeder
|
||||
'darker_body_color' => '#333333',
|
||||
'surface_color' => '#ffffff',
|
||||
'background_color' => '#f8f8f8',
|
||||
'border_color' => '#f8f8f8',
|
||||
'border_color' => '#EAEAEA',
|
||||
];
|
||||
|
||||
public function __construct(private readonly WebsiteTypeService $websiteTypeService) {}
|
||||
|
||||
@@ -24,14 +24,30 @@ class MenuSeederTest extends TestCase
|
||||
$this->seed(MenuSeeder::class);
|
||||
|
||||
$expectedMenus = [
|
||||
'admin.catalog' => ['Catálogo', '/admin/catalog'],
|
||||
'admin.categories' => ['Categorías', '/admin/categories'],
|
||||
'admin.combos' => ['Combos', '/admin/combos'],
|
||||
'admin.event' => ['Eventos', '/admin/event'],
|
||||
'admin.staff' => ['Staff', '/admin/staff'],
|
||||
'admin.ventas' => ['Ventas', '/admin/ventas'],
|
||||
'adminapp.catalog' => ['Catálogo', '/admin/catalog'],
|
||||
'adminapp.categories' => ['Categorías', '/admin/categories'],
|
||||
'adminapp.combos' => ['Combos', '/admin/combos'],
|
||||
'adminapp.event' => ['Eventos', '/admin/event'],
|
||||
'adminapp.staff' => ['Staff', '/admin/staff'],
|
||||
'adminapp.ventas' => ['Ventas', '/admin/ventas'],
|
||||
];
|
||||
|
||||
$adminApp = Menu::query()
|
||||
->with('children')
|
||||
->where('code', 'main.adminapp')
|
||||
->firstOrFail();
|
||||
|
||||
$this->assertSame('Administración', $adminApp->label);
|
||||
$this->assertSame(Menu::CONTENT_TYPE_DYNAMIC, $adminApp->content_type);
|
||||
$this->assertSame('/', $adminApp->route);
|
||||
$this->assertSame(
|
||||
array_keys($expectedMenus),
|
||||
$adminApp->children->pluck('code')->sort()->values()->all()
|
||||
);
|
||||
$this->assertTrue(
|
||||
$tenant->menues()->where('menues.code', 'main.adminapp')->exists()
|
||||
);
|
||||
|
||||
$adminMenus = Menu::query()
|
||||
->whereIn('code', array_keys($expectedMenus))
|
||||
->get()
|
||||
@@ -42,10 +58,28 @@ class MenuSeederTest extends TestCase
|
||||
foreach ($expectedMenus as $code => [$label, $route]) {
|
||||
$this->assertSame($label, $adminMenus->get($code)?->label);
|
||||
$this->assertSame($route, $adminMenus->get($code)?->route);
|
||||
$this->assertSame('main.adminapp', $adminMenus->get($code)?->parent_menu_code);
|
||||
$this->assertTrue(
|
||||
$tenant->menues()->where('menues.code', $code)->exists()
|
||||
);
|
||||
}
|
||||
|
||||
$this->assertFalse(
|
||||
Menu::query()->whereIn('code', [
|
||||
'admin.event',
|
||||
'admin.catalog',
|
||||
'admin.combos',
|
||||
'admin.categories',
|
||||
'admin.ventas',
|
||||
'admin.staff',
|
||||
'event',
|
||||
'catalog',
|
||||
'combos',
|
||||
'categories',
|
||||
'ventas',
|
||||
'staff',
|
||||
])->exists()
|
||||
);
|
||||
}
|
||||
|
||||
public function test_it_assigns_menus_to_the_expected_roles(): void
|
||||
@@ -57,8 +91,12 @@ class MenuSeederTest extends TestCase
|
||||
->orderBy('code')
|
||||
->pluck('code')
|
||||
->all();
|
||||
$adminAppMenuCodes = Menu::query()
|
||||
->where('code', 'main.adminapp')
|
||||
->orWhere('parent_menu_code', 'main.adminapp')
|
||||
->pluck('code');
|
||||
$userMenuCodes = Menu::query()
|
||||
->where('code', 'not like', 'admin.%')
|
||||
->whereNotIn('code', $adminAppMenuCodes)
|
||||
->orderBy('code')
|
||||
->pluck('code')
|
||||
->all();
|
||||
@@ -84,6 +122,8 @@ class MenuSeederTest extends TestCase
|
||||
->all();
|
||||
|
||||
$this->assertSame($userMenuCodes, $userRoleMenuCodes);
|
||||
$this->assertNotContains('main.adminapp', $userRoleMenuCodes);
|
||||
$this->assertNotContains('adminapp.catalog', $userRoleMenuCodes);
|
||||
$this->assertDatabaseCount(
|
||||
'roles_menues',
|
||||
(count($allMenuCodes) * 2) + count($userMenuCodes)
|
||||
|
||||
@@ -33,7 +33,7 @@ class WebsiteTypeSeederTest extends TestCase
|
||||
'darker_body_color' => '#333333',
|
||||
'surface_color' => '#ffffff',
|
||||
'background_color' => '#f8f8f8',
|
||||
'border_color' => '#f8f8f8',
|
||||
'border_color' => '#EAEAEA',
|
||||
];
|
||||
|
||||
$shopIt = WebsiteType::query()
|
||||
|
||||
Reference in New Issue
Block a user