public function providerForTestEvaluate()
{
// Mocks for testing Content & VersionInfo objects, should only be used once because of expect rules.
$contentMock = $this->getMock('eZ\\Publish\\API\\Repository\\Values\\Content\\Content', array(), array(), '', false);
$versionInfoMock = $this->getMock('eZ\\Publish\\API\\Repository\\Values\\Content\\VersionInfo', array(), array(), '', false);
$contentMock->expects($this->once())->method('getVersionInfo')->will($this->returnValue($versionInfoMock));
$versionInfoMock->expects($this->once())->method('getContentInfo')->will($this->returnValue(new ContentInfo(array('published' => true))));
$versionInfoMock2 = $this->getMock('eZ\\Publish\\API\\Repository\\Values\\Content\\VersionInfo', array(), array(), '', false);
$versionInfoMock2->expects($this->once())->method('getContentInfo')->will($this->returnValue(new ContentInfo(array('published' => true))));
return array(array('limitation' => new SubtreeLimitation(), 'object' => new ContentInfo(array('published' => true)), 'targets' => array(new Location()), 'persistence' => array(), 'expected' => LimitationType::ACCESS_DENIED), array('limitation' => new SubtreeLimitation(array('limitationValues' => array('/1/2/'))), 'object' => new ContentInfo(array('published' => true)), 'targets' => array(new Location(array('pathString' => '/1/55/'))), 'persistence' => array(), 'expected' => LimitationType::ACCESS_DENIED), array('limitation' => new SubtreeLimitation(array('limitationValues' => array('/1/2/'))), 'object' => new ContentInfo(array('published' => true)), 'targets' => array(new Location(array('pathString' => '/1/2/'))), 'persistence' => array(), 'expected' => LimitationType::ACCESS_GRANTED), array('limitation' => new SubtreeLimitation(array('limitationValues' => array('/1/2/'))), 'object' => new ContentInfo(array('published' => true)), 'targets' => null, 'persistence' => array(new Location(array('pathString' => '/1/2/'))), 'expected' => LimitationType::ACCESS_GRANTED), array('limitation' => new SubtreeLimitation(array('limitationValues' => array('/1/2/', '/1/43/'))), 'object' => new ContentInfo(array('published' => true)), 'targets' => null, 'persistence' => array(new Location(array('pathString' => '/1/55/'))), 'expected' => LimitationType::ACCESS_DENIED), array('limitation' => new SubtreeLimitation(array('limitationValues' => array('/1/2/'))), 'object' => new ContentInfo(array('published' => false)), 'targets' => null, 'persistence' => array(new Location(array('pathString' => '/1/2/'))), 'expected' => LimitationType::ACCESS_GRANTED), array('limitation' => new SubtreeLimitation(array('limitationValues' => array('/1/2/', '/1/43/'))), 'object' => new ContentInfo(array('published' => false)), 'targets' => null, 'persistence' => array(new Location(array('pathString' => '/1/55/'))), 'expected' => LimitationType::ACCESS_DENIED), array('limitation' => new SubtreeLimitation(array('limitationValues' => array('/1/2/'))), 'object' => $contentMock, 'targets' => array(new Location(array('pathString' => '/1/2/'))), 'persistence' => array(), 'expected' => LimitationType::ACCESS_GRANTED), array('limitation' => new SubtreeLimitation(array('limitationValues' => array('/1/2/'))), 'object' => $versionInfoMock2, 'targets' => array(new Location(array('pathString' => '/1/2/'))), 'persistence' => array(), 'expected' => LimitationType::ACCESS_GRANTED), array('limitation' => new SubtreeLimitation(array('limitationValues' => array('/1/2/'))), 'object' => new ContentCreateStruct(), 'targets' => array(), 'persistence' => array(), 'expected' => LimitationType::ACCESS_DENIED), array('limitation' => new SubtreeLimitation(array('limitationValues' => array('/1/2/', '/1/43/'))), 'object' => new ContentCreateStruct(), 'targets' => array(new LocationCreateStruct(array('parentLocationId' => 55))), 'persistence' => array(new Location(array('pathString' => '/1/55/'))), 'expected' => LimitationType::ACCESS_DENIED), array('limitation' => new SubtreeLimitation(array('limitationValues' => array('/1/2/', '/1/43/'))), 'object' => new ContentCreateStruct(), 'targets' => array(new LocationCreateStruct(array('parentLocationId' => 43))), 'persistence' => array(new Location(array('pathString' => '/1/43/'))), 'expected' => LimitationType::ACCESS_GRANTED), array('limitation' => new SubtreeLimitation(), 'object' => new ObjectStateLimitation(), 'targets' => array(new LocationCreateStruct(array('parentLocationId' => 43))), 'persistence' => array(), 'expected' => LimitationType::ACCESS_ABSTAIN), array('limitation' => new SubtreeLimitation(), 'object' => new ContentInfo(array('published' => true)), 'targets' => array(new ObjectStateLimitation()), 'persistence' => array(), 'expected' => LimitationType::ACCESS_ABSTAIN));
}