12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php
- namespace Tests\Feature\API;
- use App\Models\Permission;
- use App\Models\Role;
- use Illuminate\Foundation\Testing\RefreshDatabase;
- use Illuminate\Foundation\Testing\WithFaker;
- use Illuminate\Support\Facades\Auth;
- use Tests\Feature\TestCase;
- class RoleTest extends TestCase
- {
- public function test_role_list()
- {
- Role::factory(30)->create();
- $response = $this->get(route('role.index'));
- $response->assertStatus(200)
- ->assertJsonStructure([
- 'data' => [
- '*' => [
- 'id',
- 'name',
- 'description',
- ]
- ]
- ]);
- }
- public function test_role_create(): void
- {
- $form = Role::factory()->make();
- $response = $this->post(route('role.store'), $form->toArray());
- $response->assertStatus(201);
- }
- public function test_role_update(): void
- {
- $role = Role::factory()->create();
- $form = Role::factory()->make();
- $response = $this->put(route('role.update', ['role' => $role->id]), $form->toArray());
- $response->assertStatus(204);
- $newRole = Role::find($role->id);
- $this->assertEquals($form->name, $newRole->name);
- }
- public function test_role_delete(): void
- {
- $role = Role::factory()->create();
- $response = $this->delete(route('role.destroy', ['role' => $role->id]));
- $response->assertStatus(204);
- $this->assertNull(Role::find($role->id));
- }
- public function test_role_permission_list(): void
- {
- $response = $this->get(route('role.permissions', ['role' => Auth::user()->role_id]));
- $response->assertStatus(200)->assertJsonCount(Permission::query()->count(), 'data');
- }
- public function test_role_assign_permission(): void
- {
- $role = Role::factory()->create();
- $permissions = Permission::pluck('name')->toArray();
- $response = $this->put(route('role.assign-permissions', ['role' => $role->id]), [
- 'permissions' => $permissions
- ]);
- $response->assertStatus(204);
- $this->assertCount(count($permissions), $role->refresh()->permissions);
- }
- }
|