public function testFindLocationsWithPermission()
{
$repositoryMock = $this->getRepositoryMock();
/** @var \eZ\Publish\SPI\Search\Handler $searchHandlerMock */
$searchHandlerMock = $this->getSPIMockHandler('Search\\Handler');
$domainMapperMock = $this->getDomainMapperMock();
$permissionsCriterionHandlerMock = $this->getPermissionsCriterionHandlerMock();
$service = new SearchService($repositoryMock, $searchHandlerMock, $domainMapperMock, $permissionsCriterionHandlerMock, array());
$criterionMock = $this->getMockBuilder('eZ\\Publish\\API\\Repository\\Values\\Content\\Query\\Criterion')->disableOriginalConstructor()->getMock();
$query = new LocationQuery(array('filter' => $criterionMock, 'limit' => 10));
$spiLocation = new SPILocation();
$locationMock = $this->getMockForAbstractClass('eZ\\Publish\\API\\Repository\\Values\\Content\\Location');
/* @var \PHPUnit_Framework_MockObject_MockObject $searchHandlerMock */
$searchHandlerMock->expects($this->once())->method('findLocations')->with($this->equalTo($query))->will($this->returnValue(new SearchResult(array('searchHits' => array(new SearchHit(array('valueObject' => $spiLocation))), 'totalCount' => 1))));
$domainMapperMock->expects($this->once())->method('buildLocationDomainObject')->with($this->equalTo($spiLocation))->will($this->returnValue($locationMock));
$permissionsCriterionHandlerMock->expects($this->once())->method('addPermissionsCriterion')->with($criterionMock)->will($this->returnValue(true));
$result = $service->findLocations($query, array(), true);
$this->assertEquals(new SearchResult(array('searchHits' => array(new SearchHit(array('valueObject' => $locationMock))), 'totalCount' => 1)), $result);
}