user role edit

This commit is contained in:
2026-05-11 12:28:38 +08:00
parent b0eef8fca1
commit 8c909adf62
7 changed files with 120 additions and 3 deletions

View File

@@ -1,5 +1,6 @@
<?php
use App\Models\Role;
use App\Models\User;
test('user edit page requires authentication', function () {
@@ -11,6 +12,8 @@ test('user edit page requires authentication', function () {
test('authenticated users can view the user edit page', function () {
$actingUser = User::factory()->create();
$user = User::factory()->create();
$role = Role::query()->create(['name' => 'Admin']);
$user->roles()->attach($role->id);
$response = $this
->actingAs($actingUser)
@@ -20,18 +23,24 @@ test('authenticated users can view the user edit page', function () {
->assertSuccessful()
->assertSee('Edit User')
->assertSee($user->name)
->assertSee($user->email);
->assertSee($user->email)
->assertSee('Roles')
->assertSee('Admin')
->assertSee('checked', false);
});
test('authenticated users can update a user', function () {
$actingUser = User::factory()->create();
$user = User::factory()->create();
$adminRole = Role::query()->create(['name' => 'Admin']);
$editorRole = Role::query()->create(['name' => 'Editor']);
$response = $this
->actingAs($actingUser)
->patch("/user/{$user->id}", [
'name' => 'Updated User',
'email' => 'updated@example.com',
'roles' => [$adminRole->id, $editorRole->id],
]);
$response
@@ -41,4 +50,25 @@ test('authenticated users can update a user', function () {
$this->assertSame('Updated User', $user->name);
$this->assertSame('updated@example.com', $user->email);
expect($user->roles()->pluck('roles.id')->all())
->toMatchArray([$adminRole->id, $editorRole->id]);
});
test('user roles can be cleared by submitting no roles', function () {
$actingUser = User::factory()->create();
$user = User::factory()->create();
$role = Role::query()->create(['name' => 'Admin']);
$user->roles()->attach($role->id);
$response = $this
->actingAs($actingUser)
->patch("/user/{$user->id}", [
'name' => $user->name,
'email' => $user->email,
]);
$response->assertRedirect("/user/{$user->id}/edit");
expect($user->refresh()->roles()->count())->toBe(0);
});