app/tests/Browser/CreateDishTest.php

91 lines
No EOL
3.1 KiB
PHP

<?php
namespace Tests\Browser;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;
class CreateDishTest extends DuskTestCase
{
use LoginHelpers;
public function testCanAccessDishesPage(): void
{
$this->browse(function (Browser $browser) {
$this->loginAndGoToDishes($browser)
->assertPathIs('/dishes')
->assertSee('MANAGE DISHES')
->assertSee('Add Dish');
});
}
public function testCanOpenCreateDishModal(): void
{
$this->browse(function (Browser $browser) {
$this->loginAndGoToDishes($browser)
->waitFor('button[wire\\:click="create"]', 5)
->click('button[wire\\:click="create"]')
->pause(1000)
->assertSee('Add New Dish')
->assertSee('Dish Name')
->assertSee('Create Dish')
->assertSee('Cancel');
// Check if users exist or show "no users" message
try {
$browser->assertSee('No users available to assign');
$browser->assertSee('Add users');
} catch (\Exception $e) {
// If "No users" text not found, check for user assignment section
$browser->assertSee('Assign to Users');
}
});
}
public function testCreateDishFormValidation(): void
{
$this->browse(function (Browser $browser) {
$this->loginAndGoToDishes($browser)
->waitFor('button[wire\\:click="create"]', 5)
->click('button[wire\\:click="create"]')
->pause(1000)
->waitFor('input[wire\\:model="name"]', 5)
->clear('input[wire\\:model="name"]')
->press('Create Dish')
->pause(2000)
->assertSee('required');
});
}
public function testCanCancelDishCreation(): void
{
$this->browse(function (Browser $browser) {
$this->loginAndGoToDishes($browser)
->waitFor('button[wire\\:click="create"]', 5)
->click('button[wire\\:click="create"]')
->pause(1000)
->assertSee('Add New Dish')
->press('Cancel')
->pause(1000)
->assertDontSee('Add New Dish');
});
}
public function testCanCreateDishSuccessfully(): void
{
$this->browse(function (Browser $browser) {
$dishName = 'Test Dish ' . uniqid();
$this->loginAndGoToDishes($browser)
->waitFor('button[wire\\:click="create"]', 5)
->click('button[wire\\:click="create"]')
->pause(1000)
->waitFor('input[wire\\:model="name"]', 5)
->type('input[wire\\:model="name"]', $dishName)
->press('Create Dish')
->pause(3000) // Wait for Livewire to process
->assertSee($dishName) // Should see the dish in the list
->assertSee('Dish created successfully'); // Flash message
});
}
}