PermissionUnitTest.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace Tests\Unit\Permissions;
  3. use App\Shop\Permissions\Permission;
  4. use App\Shop\Permissions\Repositories\PermissionRepository;
  5. use App\Shop\Roles\Repositories\RoleRepository;
  6. use App\Shop\Roles\Role;
  7. use Illuminate\Support\Collection;
  8. use Tests\TestCase;
  9. class PermissionUnitTest extends TestCase
  10. {
  11. /** @test */
  12. public function it_can_attach_permission_to_role()
  13. {
  14. $role = factory(Role::class)->create();
  15. $permission = factory(Permission::class)->create();
  16. $roleRepo = new RoleRepository($role);
  17. $roleRepo->attachToPermission($permission);
  18. $attachedPermissions = $roleRepo->listPermissions();
  19. $attachedPermissions->each(function (Permission $item) use ($permission) {
  20. $this->assertEquals($permission->name, $item->name);
  21. });
  22. }
  23. /** @test */
  24. public function it_can_list_all_permissions()
  25. {
  26. factory(Permission::class, 5)->create();
  27. $permissionRepo = new PermissionRepository(new Permission);
  28. $list = $permissionRepo->listPermissions();
  29. $this->assertInstanceOf(Collection::class, $list);
  30. $this->assertCount(9, $list->all());
  31. }
  32. /** @test */
  33. public function it_can_delete_permission()
  34. {
  35. $permission = factory(Permission::class)->create();
  36. $permissionRepo = new PermissionRepository($permission);
  37. $deleted = $permissionRepo->deletePermissionById($permission->id);
  38. $this->assertTrue($deleted);
  39. }
  40. /** @test */
  41. public function it_can_update_the_permission()
  42. {
  43. $permission = factory(Permission::class)->create();
  44. $data = [
  45. 'name' => 'can-view',
  46. 'display_name' => 'Can View'
  47. ];
  48. $permissionRepo = new PermissionRepository($permission);
  49. $updated = $permissionRepo->updatePermission($data);
  50. $found = $permissionRepo->findPermissionById($permission->id);
  51. $this->assertTrue($updated);
  52. $this->assertEquals($data['name'], $found->name);
  53. $this->assertEquals($data['display_name'], $found->display_name);
  54. }
  55. /** @test */
  56. public function it_can_show_the_permission()
  57. {
  58. $permission = factory(Permission::class)->create();
  59. $permissionRepo = new PermissionRepository(new Permission);
  60. $found = $permissionRepo->findPermissionById($permission->id);
  61. $this->assertInstanceOf(Permission::class, $found);
  62. $this->assertEquals($permission->name, $found->name);
  63. $this->assertEquals($permission->display_name, $found->display_name);
  64. }
  65. /** @test */
  66. public function it_can_create_permission()
  67. {
  68. $data = [
  69. 'name' => 'can-view-employee-list',
  70. 'display_name' => 'Can View',
  71. 'description' => 'can view permission'
  72. ];
  73. $permissionRepo = new PermissionRepository(new Permission);
  74. $permission = $permissionRepo->createPermission($data);
  75. $this->assertInstanceOf(Permission::class, $permission);
  76. $this->assertEquals($data['name'], $permission->name);
  77. $this->assertEquals($data['display_name'], $permission->display_name);
  78. $this->assertEquals($data['description'], $permission->description);
  79. }
  80. }