new_malcomm_oline/tests/Feature/UserSoftDeleteTest.php
Tomasz Boruc fcf4684ca9 Poprawki w rolach
Extended view widzi wszystko
2026-09-04 22:09:18 +02:00

69 lines
2.3 KiB
PHP

<?php
use App\Models\User;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
test('user can be soft deleted and hidden from the list', function () {
Permission::firstOrCreate(['name' => 'users_access']);
Permission::firstOrCreate(['name' => 'extended_view']);
$admin = User::factory()->create();
$adminRole = Role::firstOrCreate(['name' => 'admin']);
$admin->assignRole($adminRole);
$admin->givePermissionTo(['users_access', 'extended_view']);
$user = User::factory()->create();
$response = $this
->actingAs($admin)
->delete('/users/' . $user->id);
$response->assertRedirect(route('users.index'));
$this->assertSoftDeleted($user);
$this->assertNotNull($user->fresh()->deleted_at);
});
test('deleted users can be listed and restored', function () {
Permission::firstOrCreate(['name' => 'users_access']);
Permission::firstOrCreate(['name' => 'extended_view']);
$admin = User::factory()->create();
$adminRole = Role::firstOrCreate(['name' => 'admin']);
$admin->assignRole($adminRole);
$admin->givePermissionTo(['users_access', 'extended_view']);
$user = User::factory()->create();
$user->delete();
$indexResponse = $this->actingAs($admin)->get('/users/deleted');
$indexResponse->assertOk();
$indexResponse->assertSee($user->email);
$restoreResponse = $this->actingAs($admin)->post('/users/' . $user->id . '/restore');
$restoreResponse->assertRedirect(route('users.deleted'));
$this->assertNull($user->fresh()->deleted_at);
});
test('edit page does not render nested forms for user actions', function () {
Permission::firstOrCreate(['name' => 'users_access']);
Permission::firstOrCreate(['name' => 'extended_view']);
$admin = User::factory()->create();
$adminRole = Role::firstOrCreate(['name' => 'admin']);
$admin->assignRole($adminRole);
$admin->givePermissionTo(['users_access', 'extended_view']);
$user = User::factory()->create();
$response = $this->actingAs($admin)->get('/users/' . $user->id . '/edit');
$response->assertOk();
$html = $response->getContent();
$this->assertDoesNotMatchRegularExpression(
'/<form[^>]*action="[^"]*\/users\/' . preg_quote((string) $user->id, '/') . '[^"]*"[^>]*>(?:(?!<\/form>).)*<form\b/s',
$html
);
});