new_malcomm_oline/tests/Feature/UserSoftDeleteTest.php

66 lines
2.1 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']);
$admin = User::factory()->create();
$adminRole = Role::firstOrCreate(['name' => 'admin']);
$admin->assignRole($adminRole);
$admin->givePermissionTo('users_access');
$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']);
$admin = User::factory()->create();
$adminRole = Role::firstOrCreate(['name' => 'admin']);
$admin->assignRole($adminRole);
$admin->givePermissionTo('users_access');
$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']);
$admin = User::factory()->create();
$adminRole = Role::firstOrCreate(['name' => 'admin']);
$admin->assignRole($adminRole);
$admin->givePermissionTo('users_access');
$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
);
});