public function testAssignRoleToUserGroupThrowsLimitationValidationException()
{
$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->once())->method('getIdentifier')->will($this->returnValue('testIdentifier'));
$settings = array('limitationTypes' => array('testIdentifier' => $limitationTypeMock));
$roleServiceMock = $this->getPartlyMockedRoleService(null, $settings);
$repository = $this->getRepositoryMock();
/** @var \eZ\Publish\API\Repository\Values\User\Role $roleMock */
$roleMock = $this->getMock('eZ\\Publish\\API\\Repository\\Values\\User\\Role');
/** @var \eZ\Publish\API\Repository\Values\User\UserGroup $userGroupMock */
$userGroupMock = $this->getMock('eZ\\Publish\\API\\Repository\\Values\\User\\UserGroup');
$repository->expects($this->once())->method('canUser')->with($this->equalTo('role'), $this->equalTo('assign'), $this->equalTo($userGroupMock), $this->equalTo($roleMock))->will($this->returnValue(true));
/* @var \eZ\Publish\API\Repository\Values\User\Limitation\RoleLimitation $limitationMock */
$roleServiceMock->assignRoleToUserGroup($roleMock, $userGroupMock, $limitationMock);
}