RolesTest.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace Tests\Feature;
  3. use Dcat\Admin\Models\Administrator;
  4. use Dcat\Admin\Models\Role;
  5. use Tests\TestCase;
  6. class RolesTest extends TestCase
  7. {
  8. public function testRolesIndex()
  9. {
  10. $this->visit('admin/auth/roles')
  11. ->see('Roles')
  12. ->see('administrator');
  13. }
  14. public function testAddRole()
  15. {
  16. $this->visit('admin/auth/roles/create')
  17. ->see('Roles')
  18. ->submitForm('Submit', ['slug' => 'developer', 'name' => 'Developer...'])
  19. ->seePageIs('admin/auth/roles')
  20. ->seeInDatabase(config('admin.database.roles_table'), ['slug' => 'developer', 'name' => 'Developer...'])
  21. ->assertEquals(2, Role::count());
  22. }
  23. public function testAddRoleToUser()
  24. {
  25. $user = [
  26. 'username' => 'Test',
  27. 'name' => 'Name',
  28. 'password' => '123456',
  29. 'password_confirmation' => '123456',
  30. ];
  31. $this->visit('admin/auth/users/create')
  32. ->see('Create')
  33. ->submitForm('Submit', $user)
  34. ->seePageIs('admin/auth/users')
  35. ->seeInDatabase(config('admin.database.users_table'), ['username' => 'Test']);
  36. $this->assertEquals(1, Role::count());
  37. $this->visit('admin/auth/roles/create')
  38. ->see('Roles')
  39. ->submitForm('Submit', ['slug' => 'developer', 'name' => 'Developer...'])
  40. ->seePageIs('admin/auth/roles')
  41. ->seeInDatabase(config('admin.database.roles_table'), ['slug' => 'developer', 'name' => 'Developer...'])
  42. ->assertEquals(2, Role::count());
  43. $this->assertFalse(Administrator::find(2)->isRole('developer'));
  44. $this->visit('admin/auth/users/2/edit')
  45. ->see('Edit')
  46. ->submitForm('Submit', ['roles' => [2]])
  47. ->seePageIs('admin/auth/users')
  48. ->seeInDatabase(config('admin.database.role_users_table'), ['user_id' => 2, 'role_id' => 2]);
  49. $this->assertTrue(Administrator::find(2)->isRole('developer'));
  50. $this->assertFalse(Administrator::find(2)->inRoles(['editor', 'operator']));
  51. $this->assertTrue(Administrator::find(2)->inRoles(['developer', 'operator', 'editor']));
  52. }
  53. public function testDeleteRole()
  54. {
  55. $this->assertEquals(1, Role::count());
  56. $this->visit('admin/auth/roles/create')
  57. ->see('Roles')
  58. ->submitForm('Submit', ['slug' => 'developer', 'name' => 'Developer...'])
  59. ->seePageIs('admin/auth/roles')
  60. ->seeInDatabase(config('admin.database.roles_table'), ['slug' => 'developer', 'name' => 'Developer...']);
  61. // ->assertEquals(2, Role::count());
  62. $this->delete('admin/auth/roles/2');
  63. $this->assertEquals(1, Role::count());
  64. // $this->delete('admin/auth/roles/1');
  65. // $this->assertEquals(0, Role::count());
  66. }
  67. public function testEditRole()
  68. {
  69. $this->visit('admin/auth/roles/create')
  70. ->see('Roles')
  71. ->submitForm('Submit', ['slug' => 'developer', 'name' => 'Developer...'])
  72. ->seePageIs('admin/auth/roles')
  73. ->seeInDatabase(config('admin.database.roles_table'), ['slug' => 'developer', 'name' => 'Developer...'])
  74. ->assertEquals(2, Role::count());
  75. $this->visit('admin/auth/roles/2/edit')
  76. ->see('Roles')
  77. ->submitForm('Submit', ['name' => 'blablabla'])
  78. ->seePageIs('admin/auth/roles')
  79. ->seeInDatabase(config('admin.database.roles_table'), ['name' => 'blablabla'])
  80. ->assertEquals(2, Role::count());
  81. }
  82. }