feat(authorization): establish many-to-many relationship between roles and menus, add migration and seeder updates
This commit is contained in:
@@ -4,8 +4,10 @@ namespace Tests\Feature\Seeders;
|
||||
|
||||
use App\Domains\Attachable\Enums\AttachmentType;
|
||||
use App\Domains\Attachable\Models\Attachment;
|
||||
use App\Domains\Authorization\Models\Role;
|
||||
use App\Domains\Menu\Models\Menu;
|
||||
use App\Domains\Tenant\Models\Tenant;
|
||||
use Database\Seeders\AuthorizationSeeder;
|
||||
use Database\Seeders\MenuSeeder;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Tests\TestCase;
|
||||
@@ -45,6 +47,48 @@ class MenuSeederTest extends TestCase
|
||||
}
|
||||
}
|
||||
|
||||
public function test_it_assigns_menus_to_the_expected_roles(): void
|
||||
{
|
||||
$this->seed(AuthorizationSeeder::class);
|
||||
$this->seed(MenuSeeder::class);
|
||||
|
||||
$allMenuCodes = Menu::query()
|
||||
->orderBy('code')
|
||||
->pluck('code')
|
||||
->all();
|
||||
$userMenuCodes = Menu::query()
|
||||
->where('code', 'not like', 'admin.%')
|
||||
->orderBy('code')
|
||||
->pluck('code')
|
||||
->all();
|
||||
|
||||
foreach (['admin', 'adminapp'] as $roleCode) {
|
||||
$roleMenuCodes = Role::query()
|
||||
->where('codigo', $roleCode)
|
||||
->firstOrFail()
|
||||
->menus()
|
||||
->orderBy('menues.code')
|
||||
->pluck('menues.code')
|
||||
->all();
|
||||
|
||||
$this->assertSame($allMenuCodes, $roleMenuCodes);
|
||||
}
|
||||
|
||||
$userRoleMenuCodes = Role::query()
|
||||
->where('codigo', 'user')
|
||||
->firstOrFail()
|
||||
->menus()
|
||||
->orderBy('menues.code')
|
||||
->pluck('menues.code')
|
||||
->all();
|
||||
|
||||
$this->assertSame($userMenuCodes, $userRoleMenuCodes);
|
||||
$this->assertDatabaseCount(
|
||||
'menues_roles',
|
||||
(count($allMenuCodes) * 2) + count($userMenuCodes)
|
||||
);
|
||||
}
|
||||
|
||||
public function test_it_seeds_the_account_menu_hierarchy(): void
|
||||
{
|
||||
$tenant = $this->createTenant('account_tenant');
|
||||
|
||||
Reference in New Issue
Block a user