2025-12-29 23:36:15 +01:00
|
|
|
<?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;
|
2025-12-29 23:36:15 +01:00
|
|
|
|
|
|
|
|
class SchedulePageTest extends DuskTestCase
|
|
|
|
|
{
|
|
|
|
|
use LoginHelpers;
|
|
|
|
|
|
|
|
|
|
protected static $schedulePageTestPlanner = null;
|
2026-08-17 13:30:49 +02:00
|
|
|
|
2025-12-29 23:36:15 +01: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
|
2025-12-29 23:36:15 +01:00
|
|
|
{
|
|
|
|
|
$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');
|
2025-12-29 23:36:15 +01:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2026-08-17 13:30:49 +02:00
|
|
|
public function test_schedule_page_has_month_navigation(): void
|
2025-12-29 23:36:15 +01:00
|
|
|
{
|
|
|
|
|
$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'));
|
2025-12-29 23:36:15 +01:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2026-08-17 13:30:49 +02:00
|
|
|
public function test_can_navigate_to_next_month(): void
|
2025-12-29 23:36:15 +01:00
|
|
|
{
|
|
|
|
|
$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'));
|
2025-12-29 23:36:15 +01:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2026-08-17 13:30:49 +02:00
|
|
|
public function test_can_navigate_to_previous_month(): void
|
2025-12-29 23:36:15 +01:00
|
|
|
{
|
|
|
|
|
$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'));
|
2025-12-29 23:36:15 +01:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2026-08-17 13:30:49 +02:00
|
|
|
public function test_schedule_generator_shows_user_selection(): void
|
2025-12-29 23:36:15 +01:00
|
|
|
{
|
|
|
|
|
$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');
|
2025-12-29 23:36:15 +01:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2026-08-17 13:30:49 +02:00
|
|
|
public function test_calendar_displays_days_of_week(): void
|
2025-12-29 23:36:15 +01:00
|
|
|
{
|
|
|
|
|
$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');
|
2025-12-29 23:36:15 +01:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|