RolesTest.php 3.6 KB

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