feat: expose winter placements to n8n over an api endpoint
This commit is contained in:
1 parent
4ff963d1e2
commit
0bc77b7463
17 files changed
+977
-18
No files matched your search
@@ -83,6 +83,82 @@ class AssignmentTest extends TestCase
|
||||
yield 'pickup' => [4711, true];
|
||||
}
|
||||
|
||||
public function testTheFirstPlacementTakesPlaceOne(): void
|
||||
{
|
||||
$this->assertSame(1, $this->createDisposition(new Assignment(), new Teamer())->getSlot());
|
||||
}
|
||||
|
||||
/**
|
||||
* The n8n feed hangs the Wechselpass off the place number: a replacement takes the number the
|
||||
* called-off teamer freed, and whoever stays keeps theirs.
|
||||
*/
|
||||
public function testAReplacementTakesTheFreedPlaceAndTheStayerKeepsTheirs(): void
|
||||
{
|
||||
$assignment = (new Assignment())->setAvailableDispositions(2);
|
||||
$first = $this->createDisposition($assignment, new Teamer());
|
||||
$second = $this->createDisposition($assignment, new Teamer());
|
||||
|
||||
$first->setStatus(Disposition::STATUS_CALLED_OFF);
|
||||
$replacement = $this->createDisposition($assignment, new Teamer());
|
||||
|
||||
$this->assertSame(1, $replacement->getSlot());
|
||||
$this->assertSame(2, $second->getSlot());
|
||||
$this->assertSame([1 => $replacement, 2 => $second], $assignment->getPlaces());
|
||||
}
|
||||
|
||||
public function testACalledOffPlacementLeavesAnOpenPlace(): void
|
||||
{
|
||||
$assignment = (new Assignment())->setAvailableDispositions(2);
|
||||
$calledOff = $this->createDisposition($assignment, new Teamer());
|
||||
$stayer = $this->createDisposition($assignment, new Teamer());
|
||||
$calledOff->setStatus(Disposition::STATUS_CALLED_OFF);
|
||||
|
||||
$this->assertSame([1 => null, 2 => $stayer], $assignment->getPlaces());
|
||||
}
|
||||
|
||||
public function testUnfilledPlacesAreOpen(): void
|
||||
{
|
||||
$assignment = (new Assignment())->setAvailableDispositions(3);
|
||||
$disposition = $this->createDisposition($assignment, new Teamer());
|
||||
|
||||
$this->assertSame([1 => $disposition, 2 => null, 3 => null], $assignment->getPlaces());
|
||||
}
|
||||
|
||||
/**
|
||||
* Striking a place while a high number is still held drops an open low one, not the person.
|
||||
*/
|
||||
public function testLoweringTheCountKeepsTheHeldPlace(): void
|
||||
{
|
||||
$assignment = (new Assignment())->setAvailableDispositions(2);
|
||||
$calledOff = $this->createDisposition($assignment, new Teamer());
|
||||
$stayer = $this->createDisposition($assignment, new Teamer());
|
||||
$calledOff->setStatus(Disposition::STATUS_CALLED_OFF);
|
||||
|
||||
$assignment->setAvailableDispositions(1);
|
||||
|
||||
$this->assertSame([2 => $stayer], $assignment->getPlaces());
|
||||
}
|
||||
|
||||
public function testAPlaceHeldBeyondTheCountIsStillListed(): void
|
||||
{
|
||||
$assignment = (new Assignment())->setAvailableDispositions(2);
|
||||
$first = $this->createDisposition($assignment, new Teamer());
|
||||
$second = $this->createDisposition($assignment, new Teamer());
|
||||
|
||||
$assignment->setAvailableDispositions(1);
|
||||
|
||||
$this->assertSame([1 => $first, 2 => $second], $assignment->getPlaces());
|
||||
}
|
||||
|
||||
public function testAnUnnumberedPlacementTakesAFreeNumberAfterTheNumberedOnes(): void
|
||||
{
|
||||
$assignment = (new Assignment())->setAvailableDispositions(2);
|
||||
$unnumbered = $this->createDisposition($assignment, new Teamer())->setSlot(null);
|
||||
$numbered = $this->createDisposition($assignment, new Teamer())->setSlot(1);
|
||||
|
||||
$this->assertSame([1 => $numbered, 2 => $unnumbered], $assignment->getPlaces());
|
||||
}
|
||||
|
||||
private function createDisposition(Assignment $assignment, Teamer $teamer): Disposition
|
||||
{
|
||||
$disposition = new Disposition(new Application($assignment, $teamer));
|
||||
|
||||
Reference in new issue
Block a user