RoleTest.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace Tests\Feature\API;
  3. use App\Models\Permission;
  4. use App\Models\Role;
  5. use Illuminate\Foundation\Testing\RefreshDatabase;
  6. use Illuminate\Foundation\Testing\WithFaker;
  7. use Illuminate\Support\Facades\Auth;
  8. use Tests\Feature\TestCase;
  9. class RoleTest extends TestCase
  10. {
  11. public function test_role_list()
  12. {
  13. Role::factory(30)->create();
  14. $response = $this->get(route('role.index'));
  15. $response->assertStatus(200)
  16. ->assertJsonStructure([
  17. 'data' => [
  18. '*' => [
  19. 'id',
  20. 'name',
  21. 'description',
  22. ]
  23. ]
  24. ]);
  25. }
  26. public function test_role_create(): void
  27. {
  28. $form = Role::factory()->make();
  29. $response = $this->post(route('role.store'), $form->toArray());
  30. $response->assertStatus(201);
  31. }
  32. public function test_role_update(): void
  33. {
  34. $role = Role::factory()->create();
  35. $form = Role::factory()->make();
  36. $response = $this->put(route('role.update', ['role' => $role->id]), $form->toArray());
  37. $response->assertStatus(204);
  38. $newRole = Role::find($role->id);
  39. $this->assertEquals($form->name, $newRole->name);
  40. }
  41. public function test_role_delete(): void
  42. {
  43. $role = Role::factory()->create();
  44. $response = $this->delete(route('role.destroy', ['role' => $role->id]));
  45. $response->assertStatus(204);
  46. $this->assertNull(Role::find($role->id));
  47. }
  48. public function test_role_permission_list(): void
  49. {
  50. $response = $this->get(route('role.permissions', ['role' => Auth::user()->role_id]));
  51. $response->assertStatus(200)->assertJsonCount(Permission::query()->count(), 'data');
  52. }
  53. public function test_role_assign_permission(): void
  54. {
  55. $role = Role::factory()->create();
  56. $permissions = Permission::pluck('name')->toArray();
  57. $response = $this->put(route('role.assign-permissions', ['role' => $role->id]), [
  58. 'permissions' => $permissions
  59. ]);
  60. $response->assertStatus(204);
  61. $this->assertCount(count($permissions), $role->refresh()->permissions);
  62. }
  63. }