RoleUnitTest.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. namespace Tests\Unit\Roles;
  3. use App\Shop\Roles\Exceptions\CreateRoleErrorException;
  4. use App\Shop\Roles\Repositories\RoleRepository;
  5. use App\Shop\Roles\Role;
  6. use Illuminate\Support\Collection;
  7. use Tests\TestCase;
  8. class RoleUnitTest extends TestCase
  9. {
  10. /** @test */
  11. public function it_can_list_all_roles()
  12. {
  13. factory(Role::class, 5)->create();
  14. $roleRepo = new RoleRepository(new Role);
  15. $roles = $roleRepo->listRoles();
  16. $this->assertInstanceOf(Collection::class, $roles);
  17. $this->assertCount(6, $roles->all()); // +1 in the TestCase
  18. }
  19. /** @test */
  20. public function it_can_delete_the_role()
  21. {
  22. $role = factory(Role::class)->create();
  23. $roleRepo = new RoleRepository($role);
  24. $deleted = $roleRepo->deleteRoleById();
  25. $this->assertTrue($deleted);
  26. }
  27. /** @test */
  28. public function it_can_update_the_role()
  29. {
  30. $role = factory(Role::class)->create();
  31. $data = [
  32. 'name' => 'user',
  33. 'display_name' => 'Website user'
  34. ];
  35. $roleRepo = new RoleRepository($role);
  36. $updated = $roleRepo->updateRole($data);
  37. $role = $roleRepo->findRoleById($role->id);
  38. $this->assertTrue($updated);
  39. $this->assertEquals($data['name'], $role->name);
  40. $this->assertEquals($data['display_name'], $role->display_name);
  41. }
  42. /** @test */
  43. public function it_can_return_the_created_role()
  44. {
  45. $roleFactory = factory(Role::class)->create();
  46. $roleRepo = new RoleRepository(new Role);
  47. $role = $roleRepo->findRoleById($roleFactory->id);
  48. $this->assertInstanceOf(Role::class, $role);
  49. $this->assertEquals($roleFactory->name, $role->name);
  50. $this->assertEquals($roleFactory->display_name, $role->display_name);
  51. }
  52. /** @test */
  53. public function it_can_create_a_role()
  54. {
  55. $data = [
  56. 'name' => 'user',
  57. 'display_name' => 'Website user'
  58. ];
  59. $roleRepo = new RoleRepository(new Role);
  60. $role = $roleRepo->createRole($data);
  61. $this->assertInstanceOf(Role::class, $role);
  62. $this->assertEquals($data['name'], $role->name);
  63. $this->assertEquals($data['display_name'], $role->display_name);
  64. }
  65. /** @test */
  66. public function it_errors_creating_the_role()
  67. {
  68. $this->expectException(CreateRoleErrorException::class);
  69. $roleRepo = new RoleRepository(new Role());
  70. $roleRepo->createRole([]);
  71. }
  72. }