Files
ppeasy_vg12/tests/Browser/Users/CrudTest.php
T
2026-10-09 08:21:06 +02:00

62 lines
1.8 KiB
PHP

<?php
use App\Models\User;
beforeEach(function () {
$this->artisan('db:seed');
});
it('creates a user', function () {
browserLogin();
visit('/users/create')
->assertNoJavaScriptErrors()
->assertSee('Create New User')
->assertSee('User Details')
->fill('#first_name', 'Ada')
->fill('#last_name', 'Lovelace')
->fill('#email', 'ada@vanguard.test')
->fill('#password', 'analytical-engine')
->fill('#password_confirmation', 'analytical-engine')
->click('button[type="submit"]')
->assertSee('ada@vanguard.test');
expect(User::where('email', 'ada@vanguard.test')->exists())->toBeTrue();
});
it('edits a user', function () {
browserLogin();
$user = User::factory()->create(['first_name' => 'Before']);
visit("/users/{$user->id}/edit")
->assertSee('User Details')
->fill('#first_name', 'After')
->click('button[type="submit"]')
->assertSee('User updated successfully.');
expect($user->fresh()->first_name)->toBe('After');
});
it('shows a user', function () {
browserLogin();
$user = User::factory()->create(['email' => 'shown@vanguard.test']);
visit("/users/{$user->id}")
->assertNoJavaScriptErrors()
->assertSee('Details')
->assertSee('shown@vanguard.test');
});
it('asks for confirmation before deleting', function () {
browserLogin();
$user = User::factory()->create(['username' => 'doomed']);
visit('/users')
->assertSee('doomed')
// Every row carries a Delete User button, so the click has to be scoped
// to this user's row or Playwright refuses the ambiguous locator.
->click('tr:has-text("doomed") [aria-label="Delete User"]')
->assertSee('Are you sure that you want to delete this user?')
->assertSee('Yes, delete him!');
});