Files
SIRH/tests/Service/WorkHours/AbsenceSegmentsResolverTest.php
2026-02-19 22:06:54 +01:00

62 lines
1.8 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Tests\Service\WorkHours;
use App\Entity\Absence;
use App\Enum\HalfDay;
use App\Service\WorkHours\AbsenceSegmentsResolver;
use DateTime;
use PHPUnit\Framework\TestCase;
/**
* @internal
*/
final class AbsenceSegmentsResolverTest extends TestCase
{
public function testResolveForSameDayMorningOnly(): void
{
$absence = new Absence()
->setStartDate(new DateTime('2026-02-16'))
->setEndDate(new DateTime('2026-02-16'))
->setStartHalf(HalfDay::AM)
->setEndHalf(HalfDay::AM)
;
$resolver = new AbsenceSegmentsResolver();
self::assertSame([true, false], $resolver->resolveForDate($absence, '2026-02-16'));
}
public function testResolveForSameDayAfternoonOnly(): void
{
$absence = new Absence()
->setStartDate(new DateTime('2026-02-16'))
->setEndDate(new DateTime('2026-02-16'))
->setStartHalf(HalfDay::PM)
->setEndHalf(HalfDay::PM)
;
$resolver = new AbsenceSegmentsResolver();
self::assertSame([false, true], $resolver->resolveForDate($absence, '2026-02-16'));
}
public function testResolveForMultiDayBoundaries(): void
{
$absence = new Absence()
->setStartDate(new DateTime('2026-02-16'))
->setEndDate(new DateTime('2026-02-18'))
->setStartHalf(HalfDay::PM)
->setEndHalf(HalfDay::AM)
;
$resolver = new AbsenceSegmentsResolver();
self::assertSame([false, true], $resolver->resolveForDate($absence, '2026-02-16'));
self::assertSame([true, true], $resolver->resolveForDate($absence, '2026-02-17'));
self::assertSame([true, false], $resolver->resolveForDate($absence, '2026-02-18'));
}
}