feat(authorization): implement AuthorizationSeeder with roles and permissions, add tests
This commit is contained in:
49
tests/Feature/Seeders/AuthorizationSeederTest.php
Normal file
49
tests/Feature/Seeders/AuthorizationSeederTest.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Feature\Seeders;
|
||||
|
||||
use App\Domains\Authorization\Models\Permission;
|
||||
use App\Domains\Authorization\Models\Role;
|
||||
use Database\Seeders\AuthorizationSeeder;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Tests\TestCase;
|
||||
|
||||
class AuthorizationSeederTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
public function test_it_creates_the_initial_roles_and_permissions(): void
|
||||
{
|
||||
$this->seed(AuthorizationSeeder::class);
|
||||
|
||||
$this->assertSame(
|
||||
['admin', 'tenant_admin', 'user'],
|
||||
Role::query()->orderBy('codigo')->pluck('codigo')->all()
|
||||
);
|
||||
$this->assertCount(22, Permission::query()->get());
|
||||
}
|
||||
|
||||
public function test_it_assigns_the_expected_permissions_to_each_role(): void
|
||||
{
|
||||
$this->seed(AuthorizationSeeder::class);
|
||||
|
||||
$admin = Role::query()->where('codigo', 'admin')->firstOrFail();
|
||||
$tenantAdmin = Role::query()->where('codigo', 'tenant_admin')->firstOrFail();
|
||||
$user = Role::query()->where('codigo', 'user')->firstOrFail();
|
||||
|
||||
$this->assertCount(22, $admin->permissions);
|
||||
$this->assertCount(21, $tenantAdmin->permissions);
|
||||
$this->assertFalse($tenantAdmin->permissions->contains('codigo', 'roles.gestionar'));
|
||||
$this->assertCount(0, $user->permissions);
|
||||
}
|
||||
|
||||
public function test_it_can_run_more_than_once_without_creating_duplicates(): void
|
||||
{
|
||||
$this->seed(AuthorizationSeeder::class);
|
||||
$this->seed(AuthorizationSeeder::class);
|
||||
|
||||
$this->assertCount(3, Role::query()->get());
|
||||
$this->assertCount(22, Permission::query()->get());
|
||||
$this->assertDatabaseCount('roles_permisos', 43);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user