dishplanner/tests/Browser/Users/CreateUserTest.php

105 lines
3 KiB
PHP
Raw Permalink Normal View History

<?php
namespace Tests\Browser\Users;
use Laravel\Dusk\Browser;
use Tests\Browser\LoginHelpers;
2026-08-17 13:30:49 +02:00
use Tests\Browser\Pages\UsersPage;
use Tests\DuskTestCase;
class CreateUserTest extends DuskTestCase
{
use LoginHelpers;
2026-08-17 13:30:49 +02:00
protected static $createUserTestPlanner = null;
2026-08-17 13:30:49 +02:00
protected static $createUserTestEmail = null;
2026-08-17 13:30:49 +02:00
protected function setUp(): void
{
parent::setUp();
// Reset static planner for this specific test class
self::$testPlanner = self::$createUserTestPlanner;
self::$testEmail = self::$createUserTestEmail;
}
2026-08-17 13:30:49 +02:00
protected function tearDown(): void
{
// Save the planner for next test method in this class
self::$createUserTestPlanner = self::$testPlanner;
self::$createUserTestEmail = self::$testEmail;
parent::tearDown();
}
2026-08-17 13:30:49 +02:00
public function test_can_access_users_page(): void
{
$this->browse(function (Browser $browser) {
$this->loginAndGoToUsers($browser);
2026-08-17 13:30:49 +02:00
$browser->on(new UsersPage)
2026-08-17 13:30:49 +02:00
->assertSee('MANAGE USERS')
->assertSee('Add User');
});
}
2026-08-17 13:30:49 +02:00
public function test_can_open_create_user_modal(): void
{
$this->browse(function (Browser $browser) {
$this->loginAndGoToUsers($browser);
$browser->on(new UsersPage)
2026-08-17 13:30:49 +02:00
->openCreateModal()
->assertSee('Add New User')
->assertSee('Name')
->assertSee('Cancel')
->assertSee('Create User');
});
}
2026-08-17 13:30:49 +02:00
public function test_create_user_form_validation(): void
{
$this->browse(function (Browser $browser) {
$this->loginAndGoToUsers($browser);
$browser->on(new UsersPage)
2026-08-17 13:30:49 +02:00
->openCreateModal()
->press('Create User')
->pause(self::PAUSE_MEDIUM)
->assertSee('The name field is required');
});
}
2026-08-17 13:30:49 +02:00
public function test_can_create_user(): void
{
$this->browse(function (Browser $browser) {
2026-08-17 13:30:49 +02:00
$userName = 'TestCreate_'.uniqid();
$this->loginAndGoToUsers($browser);
$browser->on(new UsersPage)
2026-08-17 13:30:49 +02:00
->openCreateModal()
->type('input[wire\\:model="name"]', $userName)
->press('Create User')
->pause(self::PAUSE_MEDIUM)
->assertSee('User created successfully')
->assertSee($userName);
});
}
2026-08-17 13:30:49 +02:00
public function test_can_cancel_user_creation(): void
{
$this->browse(function (Browser $browser) {
$this->loginAndGoToUsers($browser);
$browser->on(new UsersPage)
2026-08-17 13:30:49 +02:00
->openCreateModal()
->type('input[wire\\:model="name"]', 'Test Cancel User')
->press('Cancel')
->pause(self::PAUSE_SHORT)
// Modal should be closed, we should be back on users page
2026-08-17 13:30:49 +02:00
->assertSee('MANAGE USERS')
->assertDontSee('Add New User');
});
}
2026-08-17 13:30:49 +02:00
}