repo = app(EloquentRole::class); }); test('all', function () { $roles = Role::factory()->times(4)->create(); $this->assertEquals( $roles->toArray(), $this->repo->all()->toArray() ); }); test('get all with users count', function () { $roleA = RoleFactory::create(); $roleB = RoleFactory::create(); $roleC = RoleFactory::create(); UserFactory::role($roleA)->create(); UserFactory::role($roleA)->create(); UserFactory::role($roleB)->create(); $roleA->users_count = 2; $roleB->users_count = 1; $roleC->users_count = 0; $this->assertEquals( [$roleA->toArray(), $roleB->toArray(), $roleC->toArray()], $this->repo->getAllWithUsersCount()->toArray() ); }); test('create', function () { Event::fake([ Created::class, ]); $data = ['name' => 'foo', 'display_name' => 'Foo']; $role = $this->repo->create($data); $this->assertDatabaseHas('roles', $data + ['id' => $role->id]); Event::assertDispatched(Created::class); }); test('update', function () { Event::fake([ Updated::class, ]); $role = Role::factory()->create(); $data = ['name' => 'foo', 'display_name' => 'Foo']; $this->repo->update($role->id, $data); $this->assertDatabaseHas('roles', $data + ['id' => $role->id]); Event::assertDispatched(Updated::class); }); test('delete role', function () { Event::fake([ Deleted::class, ]); $role = Role::factory()->create(); $this->repo->delete($role->id); $this->assertDatabaseMissing('roles', ['id' => $role->id]); Event::assertDispatched(Deleted::class); }); test('update permissions', function () { $role = Role::factory()->create(); $permissions = Permission::factory()->times(2)->create(); $this->repo->updatePermissions($role->id, $permissions->pluck('id')->toArray()); $this->assertDatabaseHas('permission_role', ['role_id' => $role->id, 'permission_id' => $permissions[0]->id]); $this->assertDatabaseHas('permission_role', ['role_id' => $role->id, 'permission_id' => $permissions[1]->id]); }); test('lists', function () { $roles = Role::factory()->times(4)->create(); $roles = $roles->pluck('display_name', 'id'); $this->assertEquals($roles->toArray(), $this->repo->lists()->toArray()); });