create(['name' => 'Old Name', 'email' => 'old@example.com', 'roles' => ['client']]); Livewire::actingAs($admin)->test(Panel::class) ->call('editUser', $target->id) ->assertSet('userForm.name', 'Old Name') ->assertSet('userForm.email', 'old@example.com') ->set('userForm.name', 'New Name') ->set('userForm.email', 'new@example.com') ->call('toggleUserFormRole', 'operator') ->call('submitUser') ->assertOk(); $target->refresh(); expect($target->name)->toBe('New Name') ->and($target->email)->toBe('new@example.com') ->and($target->roles)->toContain('client', 'operator'); }); test('editing a user does not trip the unique email rule against itself', function () { $admin = adminUser(); $target = User::query()->create(['name' => 'Someone', 'email' => 'someone@example.com', 'roles' => ['client']]); Livewire::actingAs($admin)->test(Panel::class) ->call('editUser', $target->id) ->set('userForm.name', 'Someone Else') ->call('submitUser') ->assertHasNoErrors(); }); test('admin can delete another user', function () { $admin = adminUser(); $target = User::query()->create(['name' => 'Delete Me', 'email' => 'deleteme@example.com', 'roles' => ['client']]); Livewire::actingAs($admin)->test(Panel::class) ->call('removeUser', $target->id) ->assertSet('pendingDeleteType', 'user') ->call('confirmPendingDelete') ->assertOk(); expect(User::query()->find($target->id))->toBeNull(); }); test('an admin cannot delete their own account', function () { $admin = adminUser(); Livewire::actingAs($admin)->test(Panel::class) ->call('removeUser', $admin->id) ->assertSet('pendingDeleteType', null); expect(User::query()->find($admin->id))->not->toBeNull(); });