createDisposition($assignment, $teamer); $this->assertSame($disposition, $assignment->getActiveDispositionByTeamer($teamer)); } public function testACalledOffDispositionIsNotReturned(): void { $assignment = new Assignment(); $teamer = new Teamer(); $this ->createDisposition($assignment, $teamer) ->setStatus(Disposition::STATUS_CALLED_OFF) ; $this->assertNull($assignment->getActiveDispositionByTeamer($teamer)); } public function testTheDispositionOfAnotherTeamerIsNotReturned(): void { $assignment = new Assignment(); $this->createDisposition($assignment, new Teamer()); $this->assertNull($assignment->getActiveDispositionByTeamer(new Teamer())); } /** * A teamer can be called off and disposed again on the same assignment, so both dispositions * live side by side - the active one has to win. */ public function testTheActiveDispositionWinsOverACalledOffOne(): void { $assignment = new Assignment(); $teamer = new Teamer(); $this ->createDisposition($assignment, $teamer) ->setStatus(Disposition::STATUS_CALLED_OFF) ; $disposition = $this->createDisposition($assignment, $teamer); $this->assertSame($disposition, $assignment->getActiveDispositionByTeamer($teamer)); } private function createDisposition(Assignment $assignment, Teamer $teamer): Disposition { $disposition = new Disposition(new Application($assignment, $teamer)); $assignment->addDisposition($disposition); return $disposition; } }