create(); $response = $this->get(route('role.index')); $response->assertStatus(200) ->assertJsonStructure([ 'data' => [ '*' => [ 'id', 'name', 'description', ] ] ]); } public function test_role_create(): void { $form = Role::factory()->make(); $response = $this->post(route('role.store'), $form->toArray()); $response->assertStatus(201); } public function test_role_update(): void { $role = Role::factory()->create(); $form = Role::factory()->make(); $response = $this->put(route('role.update', ['role' => $role->id]), $form->toArray()); $response->assertStatus(204); $newRole = Role::find($role->id); $this->assertEquals($form->name, $newRole->name); } public function test_role_delete(): void { $role = Role::factory()->create(); $response = $this->delete(route('role.destroy', ['role' => $role->id])); $response->assertStatus(204); $this->assertNull(Role::find($role->id)); } public function test_role_permission_list(): void { $response = $this->get(route('role.permissions', ['role' => Auth::user()->role_id])); $response->assertStatus(200)->assertJsonCount(Permission::query()->count(), 'data'); } public function test_role_assign_permission(): void { $role = Role::factory()->create(); $permissions = Permission::pluck('name')->toArray(); $response = $this->put(route('role.assign-permissions', ['role' => $role->id]), [ 'permissions' => $permissions ]); $response->assertStatus(204); $this->assertCount(count($permissions), $role->refresh()->permissions); } }