repository = $this->prophesize(PersonTicketACLAwareRepositoryInterface::class); } private function buildSuggestPersonForTicket(): SuggestPersonForTicket { return new SuggestPersonForTicket($this->repository->reveal()); } public function testSuggestPersonNoCaller() { $ticket = new Ticket(); assert(null === $ticket->getCaller()); $this->repository->findPersonPreviouslyAssociatedWithCaller(Argument::any())->shouldNotBeCalled(); $suggester = $this->buildSuggestPersonForTicket(); self::assertEquals([], $suggester->suggestPerson($ticket)); } public function testSuggestPersonCaller() { $ticket = new Ticket(); new CallerHistory($person = new Person(), $ticket); assert($person === $ticket->getCaller()); $this->repository->findPersonPreviouslyAssociatedWithCaller($person, 0, 20) ->willReturn($result = [new Person(), new Person()]) ->shouldBeCalledOnce(); $suggester = $this->buildSuggestPersonForTicket(); self::assertEquals($result, $suggester->suggestPerson($ticket, 0, 20)); } }