public function testAssignRoleToUserGroup()
{
$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()));
$limitationMock->expects($this->exactly(2))->method('getIdentifier')->will($this->returnValue('testIdentifier'));
$settings = array('limitationTypes' => array('testIdentifier' => $limitationTypeMock));
$roleServiceMock = $this->getPartlyMockedRoleService(array('checkAssignmentAndFilterLimitationValues'), $settings);
$repository = $this->getRepositoryMock();
$roleMock = $this->getMock('eZ\\Publish\\API\\Repository\\Values\\User\\Role');
$userGroupMock = $this->getMock('eZ\\Publish\\API\\Repository\\Values\\User\\UserGroup');
$userServiceMock = $this->getMock('eZ\\Publish\\API\\Repository\\UserService');
$userHandlerMock = $this->getPersistenceMockHandler('User\\Handler');
$repository->expects($this->once())->method('getUserService')->will($this->returnValue($userServiceMock));
$userGroupMock->expects($this->any())->method('__get')->with('id')->will($this->returnValue(24));
$repository->expects($this->once())->method('canUser')->with($this->equalTo('role'), $this->equalTo('assign'), $this->equalTo($userGroupMock), $this->equalTo($roleMock))->will($this->returnValue(true));
$roleMock->expects($this->any())->method('__get')->with('id')->will($this->returnValue(42));
$userHandlerMock->expects($this->once())->method('loadRole')->with($this->equalTo(42))->will($this->returnValue(new SPIRole(array('id' => 42))));
$userServiceMock->expects($this->once())->method('loadUserGroup')->with($this->equalTo(24))->will($this->returnValue($userGroupMock));
$roleServiceMock->expects($this->once())->method('checkAssignmentAndFilterLimitationValues')->with(24, $this->isInstanceOf('\\eZ\\Publish\\SPI\\Persistence\\User\\Role'), array('testIdentifier' => array()))->will($this->returnValue(array('testIdentifier' => array())));
$repository->expects($this->once())->method('beginTransaction');
$userHandlerMock = $this->getPersistenceMockHandler('User\\Handler');
$userHandlerMock->expects($this->once())->method('assignRole')->with($this->equalTo(24), $this->equalTo(42), $this->equalTo(array('testIdentifier' => array())));
$repository->expects($this->once())->method('commit');
/* @var \eZ\Publish\API\Repository\Values\User\Role $roleMock */
/* @var \eZ\Publish\API\Repository\Values\User\UserGroup $userGroupMock */
/* @var \eZ\Publish\API\Repository\Values\User\Limitation\RoleLimitation $limitationMock */
$roleServiceMock->assignRoleToUserGroup($roleMock, $userGroupMock, $limitationMock);
}