create(); $this->get("/user/{$user->id}/edit")->assertRedirect('/login'); }); 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) ->get("/user/{$user->id}/edit"); $response ->assertSuccessful() ->assertSee('Edit User') ->assertSee($user->name) ->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 ->assertRedirect("/user/{$user->id}/edit"); $user->refresh(); $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); });