public function findByHostInvokesTheDomainMatchingStrategyToFindDomainsMatchingTheGivenHost()
{
$mockDomains = array();
$mockDomains[] = $this->getMockBuilder(Domain::class)->disableOriginalConstructor()->getMock();
$mockDomains[] = $this->getMockBuilder(Domain::class)->disableOriginalConstructor()->getMock();
$mockDomains[] = $this->getMockBuilder(Domain::class)->disableOriginalConstructor()->getMock();
$expectedDomains = array($mockDomains[0], $mockDomains[2]);
$mockDomainMatchingStrategy = $this->getMockBuilder(DomainMatchingStrategy::class)->disableOriginalConstructor()->getMock();
$mockDomainMatchingStrategy->expects($this->any())->method('getSortedMatches')->with('myhost', $mockDomains)->will($this->returnValue($expectedDomains));
$mockResult = $this->createMock(QueryResultInterface::class);
$mockResult->expects($this->once())->method('toArray')->will($this->returnValue($mockDomains));
$domainRepository = $this->getAccessibleMock(DomainRepository::class, array('findAll'), array(), '', false);
$domainRepository->expects($this->once())->method('findAll')->will($this->returnValue($mockResult));
$domainRepository->_set('domainMatchingStrategy', $mockDomainMatchingStrategy);
$actualDomains = $domainRepository->findByHost('myhost');
$this->assertSame($expectedDomains, $actualDomains);
}