79 lines
2.3 KiB
PHP
79 lines
2.3 KiB
PHP
<?php
|
|
|
|
use App\Models\Role;
|
|
use App\Models\User;
|
|
|
|
test('user edit page requires authentication', function () {
|
|
$user = User::factory()->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->username)
|
|
->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',
|
|
'username' => '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-user', $user->username);
|
|
$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,
|
|
'username' => $user->username,
|
|
'email' => $user->email,
|
|
]);
|
|
|
|
$response->assertRedirect("/user/{$user->id}/edit");
|
|
|
|
expect($user->refresh()->roles()->count())->toBe(0);
|
|
});
|