v1.0.0
This commit is contained in:
60
src/tests/Feature/AdminUserManagementTest.php
Normal file
60
src/tests/Feature/AdminUserManagementTest.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?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();
|
||||
});
|
||||
Reference in New Issue
Block a user