categoryGateway = $this->createMock(CategoryGateway::class); $this->userGateway = $this->createMock(UserGateway::class); $this->autoassigner = new Autoassigner($this->categoryGateway, $this->userGateway); $this->heskSettings = array( 'autoassign' => 1 ); } function testItReturnsNullWhenAutoassignIsDisabled() { //-- Arrange $this->heskSettings['autoassign'] = 0; //-- Act $owner = $this->autoassigner->getNextUserForTicket(0, $this->heskSettings); //-- Assert self::assertThat($owner, self::isNull()); } function testItReturnsTheUsersWithLeastOpenTickets() { //-- Arrange $userWithNoOpenTickets = new UserContext(); $userWithNoOpenTickets->id = 1; $userWithNoOpenTickets->categories = array(1); $userWithOneOpenTicket = new UserContext(); $userWithOneOpenTicket->id = 2; $userWithOneOpenTicket->categories = array(1); $usersToReturn = array( $userWithNoOpenTickets, $userWithOneOpenTicket ); $this->userGateway->method('getUsersByNumberOfOpenTickets') ->with($this->heskSettings) ->willReturn($usersToReturn); //-- Act $actual = $this->autoassigner->getNextUserForTicket(1, $this->heskSettings); //-- Assert self::assertThat($actual, self::equalTo($userWithNoOpenTickets)); } }