refactor(night-contingent) : NightHoursCalculator readonly + tests de bornes
This commit is contained in:
@@ -13,7 +13,7 @@ use App\Entity\WorkHour;
|
|||||||
* (21:00-24:00). On projette sur J+1 pour les shifts qui traversent minuit.
|
* (21:00-24:00). On projette sur J+1 pour les shifts qui traversent minuit.
|
||||||
* Source de verite unique partagee par les ecrans Heures et les exports.
|
* Source de verite unique partagee par les ecrans Heures et les exports.
|
||||||
*/
|
*/
|
||||||
final class NightHoursCalculator
|
final readonly class NightHoursCalculator
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Minutes de nuit d'un WorkHour. Conducteurs : champ manuel nightHoursMinutes.
|
* Minutes de nuit d'un WorkHour. Conducteurs : champ manuel nightHoursMinutes.
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ final class NightHoursCalculatorTest extends TestCase
|
|||||||
$calc = new NightHoursCalculator();
|
$calc = new NightHoursCalculator();
|
||||||
self::assertSame(0, $calc->nightIntervalMinutes(null, null));
|
self::assertSame(0, $calc->nightIntervalMinutes(null, null));
|
||||||
self::assertSame(0, $calc->nightIntervalMinutes('08:00', null));
|
self::assertSame(0, $calc->nightIntervalMinutes('08:00', null));
|
||||||
|
self::assertSame(0, $calc->nightIntervalMinutes(null, '17:00'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testPureDayRangeHasNoNight(): void
|
public function testPureDayRangeHasNoNight(): void
|
||||||
@@ -28,6 +29,15 @@ final class NightHoursCalculatorTest extends TestCase
|
|||||||
self::assertSame(0, $calc->nightIntervalMinutes('08:00', '17:00'));
|
self::assertSame(0, $calc->nightIntervalMinutes('08:00', '17:00'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testWindowBoundariesAreRightExclusive(): void
|
||||||
|
{
|
||||||
|
$calc = new NightHoursCalculator();
|
||||||
|
// 06:00 -> 21:00 : pile entre les deux fenetres de nuit, 0 min.
|
||||||
|
self::assertSame(0, $calc->nightIntervalMinutes('06:00', '21:00'));
|
||||||
|
// 22:00 -> 06:00 : 22-24 (120) + 00-06 (360) = 480, borne 06:00 exclue.
|
||||||
|
self::assertSame(480, $calc->nightIntervalMinutes('22:00', '06:00'));
|
||||||
|
}
|
||||||
|
|
||||||
public function testEveningWindowCounts(): void
|
public function testEveningWindowCounts(): void
|
||||||
{
|
{
|
||||||
$calc = new NightHoursCalculator();
|
$calc = new NightHoursCalculator();
|
||||||
|
|||||||
Reference in New Issue
Block a user