62 lines
1.8 KiB
PHP
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!');
|
|
});
|