51 lines
1.4 KiB
PHP
51 lines
1.4 KiB
PHP
<?php
|
|
|
|
use App\Http\Resources\RoleResource;
|
|
use App\Models\Permission;
|
|
use App\Models\Role;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Illuminate\Http\Request;
|
|
use Spatie\QueryBuilder\AllowedInclude;
|
|
|
|
uses(RefreshDatabase::class);
|
|
|
|
beforeEach(function () {
|
|
$this->artisan('db:seed');
|
|
});
|
|
|
|
test('resource includes permissions when loaded', function () {
|
|
$role = Role::factory()->create();
|
|
$perm = Permission::factory()->create();
|
|
$role->attachPermission($perm);
|
|
$role->load('permissions');
|
|
|
|
$array = (new RoleResource($role))->toArray(new Request);
|
|
|
|
$this->assertNotEmpty($array['permissions']);
|
|
});
|
|
|
|
test('users count is int when present', function () {
|
|
$role = Role::factory()->create();
|
|
$role->users_count = '5';
|
|
|
|
$array = (new RoleResource($role))->toArray(new Request);
|
|
|
|
$this->assertSame(5, $array['users_count']);
|
|
});
|
|
|
|
test('users count is null when not set', function () {
|
|
$role = Role::factory()->create();
|
|
|
|
$array = (new RoleResource($role))->toArray(new Request);
|
|
|
|
$this->assertNull($array['users_count']);
|
|
});
|
|
|
|
test('allowed includes returns permissions and users count', function () {
|
|
$includes = RoleResource::allowedIncludes();
|
|
|
|
$this->assertContains('permissions', $includes);
|
|
$this->assertCount(2, $includes);
|
|
$this->assertTrue(collect($includes)->contains(fn ($i) => $i instanceof AllowedInclude || $i === 'permissions'));
|
|
});
|