Files
servicedesk/src/tests/Feature/AdminUserManagementTest.php
2026-07-21 23:39:19 +02:00

61 lines
2.0 KiB
PHP

<?php
use App\Livewire\Admin\Panel;
use App\Models\User;
use Livewire\Livewire;
test('admin can edit a users name, email and roles', function () {
$admin = adminUser();
$target = User::query()->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();
});