dishplanner/tests/Browser/Schedule/SchedulePageTest.php

109 lines
3 KiB
PHP
Raw Normal View History

<?php
namespace Tests\Browser\Schedule;
use Laravel\Dusk\Browser;
use Tests\Browser\LoginHelpers;
2026-08-17 13:30:49 +02:00
use Tests\Browser\Pages\SchedulePage;
use Tests\DuskTestCase;
class SchedulePageTest extends DuskTestCase
{
use LoginHelpers;
protected static $schedulePageTestPlanner = null;
2026-08-17 13:30:49 +02:00
protected static $schedulePageTestEmail = null;
protected function setUp(): void
{
parent::setUp();
self::$testPlanner = self::$schedulePageTestPlanner;
self::$testEmail = self::$schedulePageTestEmail;
}
protected function tearDown(): void
{
self::$schedulePageTestPlanner = self::$testPlanner;
self::$schedulePageTestEmail = self::$testEmail;
parent::tearDown();
}
2026-08-17 13:30:49 +02:00
public function test_can_access_schedule_page(): void
{
$this->browse(function (Browser $browser) {
$this->loginAndGoToSchedule($browser);
$browser->on(new SchedulePage)
2026-08-17 13:30:49 +02:00
->assertSee('SCHEDULE')
->assertSee('Generate Schedule');
});
}
2026-08-17 13:30:49 +02:00
public function test_schedule_page_has_month_navigation(): void
{
$this->browse(function (Browser $browser) {
$this->loginAndGoToSchedule($browser);
$browser->on(new SchedulePage)
2026-08-17 13:30:49 +02:00
->assertPresent('@previous-month')
->assertPresent('@next-month')
->assertSee(now()->format('F Y'));
});
}
2026-08-17 13:30:49 +02:00
public function test_can_navigate_to_next_month(): void
{
$this->browse(function (Browser $browser) {
$this->loginAndGoToSchedule($browser);
$nextMonth = now()->addMonth();
$browser->on(new SchedulePage)
2026-08-17 13:30:49 +02:00
->goToNextMonth()
->assertSee($nextMonth->format('F Y'));
});
}
2026-08-17 13:30:49 +02:00
public function test_can_navigate_to_previous_month(): void
{
$this->browse(function (Browser $browser) {
$this->loginAndGoToSchedule($browser);
$prevMonth = now()->subMonth();
$browser->on(new SchedulePage)
2026-08-17 13:30:49 +02:00
->goToPreviousMonth()
->assertSee($prevMonth->format('F Y'));
});
}
2026-08-17 13:30:49 +02:00
public function test_schedule_generator_shows_user_selection(): void
{
$this->browse(function (Browser $browser) {
$this->loginAndGoToSchedule($browser);
$browser->on(new SchedulePage)
2026-08-17 13:30:49 +02:00
->assertSee('Select Users')
->assertPresent('@generate-button')
->assertPresent('@clear-month-button');
});
}
2026-08-17 13:30:49 +02:00
public function test_calendar_displays_days_of_week(): void
{
$this->browse(function (Browser $browser) {
$this->loginAndGoToSchedule($browser);
$browser->on(new SchedulePage)
2026-08-17 13:30:49 +02:00
->assertSee('Mon')
->assertSee('Tue')
->assertSee('Wed')
->assertSee('Thu')
->assertSee('Fri')
->assertSee('Sat')
->assertSee('Sun');
});
}
}