eZ\Publish\Core\Repository\Tests\Service\Mock\RoleTest::testAddPolicyThrowsLimitationValidationException PHP Method

testAddPolicyThrowsLimitationValidationException() public method

Test for the addPolicy() method.
    public function testAddPolicyThrowsLimitationValidationException()
    {
        $limitationMock = $this->getMock('eZ\\Publish\\API\\Repository\\Values\\User\\Limitation\\RoleLimitation');
        $limitationTypeMock = $this->getMock('eZ\\Publish\\SPI\\Limitation\\Type');
        $limitationTypeMock->expects($this->once())->method('acceptValue')->with($this->equalTo($limitationMock));
        $limitationTypeMock->expects($this->once())->method('validate')->with($this->equalTo($limitationMock))->will($this->returnValue(array(42)));
        $limitationMock->expects($this->any())->method('getIdentifier')->will($this->returnValue('mockIdentifier'));
        $settings = array('policyMap' => array('mockModule' => array('mockFunction' => array('mockIdentifier' => true))), 'limitationTypes' => array('mockIdentifier' => $limitationTypeMock));
        $roleServiceMock = $this->getPartlyMockedRoleService(array('loadRole'), $settings);
        $repository = $this->getRepositoryMock();
        $roleMock = $this->getMock('eZ\\Publish\\API\\Repository\\Values\\User\\Role');
        $policyCreateStructMock = $this->getMock('eZ\\Publish\\API\\Repository\\Values\\User\\PolicyCreateStruct');
        $roleMock->expects($this->any())->method('__get')->with('id')->will($this->returnValue(42));
        /* @var \eZ\Publish\API\Repository\Values\User\PolicyCreateStruct $policyCreateStructMock */
        $policyCreateStructMock->module = 'mockModule';
        $policyCreateStructMock->function = 'mockFunction';
        $roleServiceMock->expects($this->once())->method('loadRole')->with($this->equalTo(42))->will($this->returnValue($roleMock));
        /* @var \PHPUnit_Framework_MockObject_MockObject $policyCreateStructMock */
        $policyCreateStructMock->expects($this->once())->method('getLimitations')->will($this->returnValue(array($limitationMock)));
        $repository->expects($this->once())->method('hasAccess')->with($this->equalTo('role'), $this->equalTo('update'))->will($this->returnValue(true));
        /* @var \eZ\Publish\API\Repository\Values\User\Role $roleMock */
        /* @var \eZ\Publish\API\Repository\Values\User\PolicyCreateStruct $policyCreateStructMock */
        $roleServiceMock->addPolicy($roleMock, $policyCreateStructMock);
    }