refactor: derive the bus escort from the travel date

This commit is contained in:
fromme committed 2026-10-16 08:36:54 +02:00
1 parent 2fc9806c69
commit 0e2021e96d
9 files changed
+59 -50

No files matched your search

-3
View File
@@ -39,7 +39,6 @@ class StaffingRuleTest extends TestCase
yield 'split with more levels than guides' => [self::rule(1, beginner: true, advanced: true, split: true), ['split']];
yield 'split without a level' => [self::rule(2, split: true), ['split']];
yield 'guiding without a guide' => [self::rule(0, beginner: true, guiding: true), ['guiding']];
yield 'bus escort without a guide' => [self::rule(0, beginner: true, busEscort: true), ['busEscort']];
yield 'courses without guides' => [self::rule(0, beginner: true), []];
}
@@ -49,7 +48,6 @@ class StaffingRuleTest extends TestCase
bool $advanced = false,
bool $split = false,
bool $guiding = false,
bool $busEscort = false,
): StaffingRule {
return (new StaffingRule())
->setProductCode('DKIMP')
@@ -58,7 +56,6 @@ class StaffingRuleTest extends TestCase
->setSkiAdvanced($advanced)
->setSplit($split)
->setGuiding($guiding)
->setBusEscort($busEscort)
;
}
}
@@ -85,14 +85,14 @@ class AssignmentPlannerTest extends TestCase
['busProId' => 5, 'city' => 'Göttingen', 'street' => null, 'time' => '08.03.2024 22:00:00'],
]);
$planned = $this->plan(self::rule(guides: 2, busEscort: true), $destination);
$planned = $this->plan(self::rule(guides: 2), $destination);
$this->assertSame(5, $planned[0]->pickup);
}
public function testTheBusEscortIsSetOnExactlyOneAssignment(): void
{
$planned = $this->plan(self::rule(guides: 3, beginner: true, split: true, busEscort: true));
$planned = $this->plan(self::rule(guides: 3, beginner: true, split: true), self::busTravel());
$this->assertSame([
[StaffingRole::GUIDE, 2, 5, []],
@@ -102,7 +102,7 @@ class AssignmentPlannerTest extends TestCase
public function testWithoutAPlainReiseleitungTheFirstCombinedOneEscortsTheBus(): void
{
$planned = $this->plan(self::rule(guides: 2, beginner: true, advanced: true, split: true, busEscort: true));
$planned = $this->plan(self::rule(guides: 2, beginner: true, advanced: true, split: true), self::busTravel());
$this->assertSame(5, $planned[0]->pickup);
$this->assertNull($planned[1]->pickup);
@@ -110,16 +110,16 @@ class AssignmentPlannerTest extends TestCase
public function testNoBusEscortWithoutBoardingPoints(): void
{
$planned = $this->plan(self::rule(guides: 1, busEscort: true), self::destination([]));
$planned = $this->plan(self::rule(guides: 1));
$this->assertNull($planned[0]->pickup);
}
public function testNoBusEscortWhenTheMatrixSaysNo(): void
public function testWithoutAGuideNobodyEscortsTheBus(): void
{
$planned = $this->plan(self::rule(guides: 1));
$planned = $this->plan(self::rule(guides: 0, beginner: true), self::busTravel());
$this->assertNull($planned[0]->pickup);
$this->assertSame([[StaffingRole::SKI_BEGINNER, 1, null, [StaffingFee::COURSE]]], self::summarize($planned));
}
/**
@@ -127,9 +127,14 @@ class AssignmentPlannerTest extends TestCase
*/
private function plan(StaffingRule $rule, ?Destination $destination = null): array
{
return (new AssignmentPlanner())->plan($rule, $destination ?? self::destination([
return (new AssignmentPlanner())->plan($rule, $destination ?? self::destination([]));
}
private static function busTravel(): Destination
{
return self::destination([
['busProId' => 5, 'city' => 'Göttingen', 'street' => null, 'time' => '08.03.2024 22:00:00'],
]));
]);
}
/**
@@ -149,7 +154,6 @@ class AssignmentPlannerTest extends TestCase
bool $advanced = false,
bool $split = false,
bool $guiding = false,
bool $busEscort = false,
): StaffingRule {
return (new StaffingRule())
->setProductCode('DKIMP')
@@ -158,7 +162,6 @@ class AssignmentPlannerTest extends TestCase
->setSkiAdvanced($advanced)
->setSplit($split)
->setGuiding($guiding)
->setBusEscort($busEscort)
;
}
@@ -59,7 +59,6 @@ trait StaffingFixturesTrait
->setGuides(2)
->setSkiBeginner(true)
->setGuiding(true)
->setBusEscort(true)
->setEnabled($enabled)
;