44 lines
1.8 KiB
PHP
44 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit\Enums;
|
|
|
|
use App\Enums\ShiftDayEnum;
|
|
use Carbon\Carbon;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class ShiftDayEnumTest extends TestCase
|
|
{
|
|
public function test_carbon_day_maps_each_case_to_carbon_constant(): void
|
|
{
|
|
$this->assertSame(Carbon::SATURDAY, ShiftDayEnum::Saturday->carbonDay());
|
|
$this->assertSame(Carbon::SUNDAY, ShiftDayEnum::Sunday->carbonDay());
|
|
$this->assertSame(Carbon::MONDAY, ShiftDayEnum::Monday->carbonDay());
|
|
$this->assertSame(Carbon::TUESDAY, ShiftDayEnum::Tuesday->carbonDay());
|
|
$this->assertSame(Carbon::WEDNESDAY, ShiftDayEnum::Wednesday->carbonDay());
|
|
$this->assertSame(Carbon::THURSDAY, ShiftDayEnum::Thursday->carbonDay());
|
|
$this->assertSame(Carbon::FRIDAY, ShiftDayEnum::Friday->carbonDay());
|
|
}
|
|
|
|
public function test_from_date_resolves_weekday_of_given_date(): void
|
|
{
|
|
$this->assertSame(ShiftDayEnum::Saturday, ShiftDayEnum::fromDate(Carbon::parse('2026-09-26')));
|
|
$this->assertSame(ShiftDayEnum::Sunday, ShiftDayEnum::fromDate(Carbon::parse('2026-09-20')));
|
|
$this->assertSame(ShiftDayEnum::Monday, ShiftDayEnum::fromDate(Carbon::parse('2026-09-21')));
|
|
$this->assertSame(ShiftDayEnum::Friday, ShiftDayEnum::fromDate(Carbon::parse('2026-09-25')));
|
|
}
|
|
|
|
public function test_from_date_and_carbon_day_round_trip_for_every_case(): void
|
|
{
|
|
foreach (ShiftDayEnum::cases() as $day) {
|
|
$date = Carbon::parse('2026-09-21')->next($day->carbonDay());
|
|
|
|
$this->assertSame($day, ShiftDayEnum::fromDate($date));
|
|
}
|
|
}
|
|
|
|
public function test_values_follow_persian_week_order_starting_saturday(): void
|
|
{
|
|
$this->assertSame(['شنبه', 'یکشنبه', 'دوشنبه', 'سهشنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه'], ShiftDayEnum::values());
|
|
}
|
|
}
|