public function testRole() { $name = 'test role#$%'; $role = new AccountUserRole(); $account = new Account(); $organization = new Organization(); $this->assertEmpty($role->getId()); $this->assertEmpty($role->getLabel()); $this->assertEmpty($role->getRole()); $this->assertEmpty($role->getOrganization()); $this->assertEmpty($role->getAccount()); $role->setAccount($account); $role->setOrganization($organization); $this->assertEquals($organization, $role->getOrganization()); $this->assertEquals($account, $role->getAccount()); $role->setLabel($name); $this->assertEquals($name, $role->getLabel()); $this->assertEquals(AccountUserRole::PREFIX_ROLE, $role->getPrefix()); $role->setRole($name); $this->assertStringStartsWith(AccountUserRole::PREFIX_ROLE . 'TEST_ROLE_', $role->getRole()); $this->assertEquals($name, (string) $role); }
/** * @param AccountUserRole $role * @param Account|null $newAccount * @param AccountUser[] $appendUsers * @param AccountUser[] $removedUsers * @param AccountUser[] $assignedUsers * @param AccountUser[] $expectedUsersWithRole * @param AccountUser[] $expectedUsersWithoutRole * @param bool $changeAccountProcessed * @dataProvider processWithAccountProvider */ public function testProcessWithAccount(AccountUserRole $role, $newAccount, array $appendUsers, array $removedUsers, array $assignedUsers, array $expectedUsersWithRole, array $expectedUsersWithoutRole, $changeAccountProcessed = true) { // Array of persisted users /** @var AccountUser[] $persistedUsers */ $persistedUsers = []; $request = new Request(); $request->setMethod('POST'); $appendForm = $this->getMock('Symfony\\Component\\Form\\FormInterface'); $appendForm->expects($this->once())->method('getData')->willReturn($appendUsers); $removeForm = $this->getMock('Symfony\\Component\\Form\\FormInterface'); $removeForm->expects($this->once())->method('getData')->willReturn($removedUsers); $form = $this->getMock('Symfony\\Component\\Form\\FormInterface'); $form->expects($this->once())->method('submit')->with($request)->willReturnCallback(function () use($role, $newAccount) { $role->setAccount($newAccount); $role->setOrganization($newAccount->getOrganization()); }); $form->expects($this->once())->method('isValid')->willReturn(true); $form->expects($this->any())->method('get')->willReturnMap([['appendUsers', $appendForm], ['removeUsers', $removeForm]]); $this->formFactory->expects($this->once())->method('create')->willReturn($form); $objectManager = $this->getMock('Doctrine\\Common\\Persistence\\ObjectManager'); $objectManager->expects($this->any())->method('persist')->willReturnCallback(function ($entity) use(&$persistedUsers) { if ($entity instanceof AccountUser) { $persistedUsers[spl_object_hash($entity)] = $entity; } }); $this->managerRegistry->expects($this->any())->method('getManagerForClass')->with(get_class($role))->willReturn($objectManager); $this->roleRepository->expects($changeAccountProcessed ? $this->once() : $this->never())->method('getAssignedUsers')->with($role)->willReturn($assignedUsers); /** @var \PHPUnit_Framework_MockObject_MockObject|AccountUserRoleUpdateHandler $handler */ $handler = $this->getMockBuilder('\\OroB2B\\Bundle\\AccountBundle\\Form\\Handler\\AccountUserRoleUpdateHandler')->setMethods(['processPrivileges'])->setConstructorArgs([$this->formFactory, $this->privilegeConfig])->getMock(); $this->setRequirementsForHandler($handler); $handler->setRequest($request); $handler->createForm($role); $handler->process($role); foreach ($expectedUsersWithRole as $expectedUser) { $this->assertEquals($persistedUsers[spl_object_hash($expectedUser)]->getRole($role->getRole()), $role); } foreach ($expectedUsersWithoutRole as $expectedUser) { $this->assertEquals($persistedUsers[spl_object_hash($expectedUser)]->getRole($role->getRole()), null); } }
/** * @param ObjectManager $manager * @param string $roleLabel */ protected function loadRoleWithoutAccount(ObjectManager $manager, $roleLabel) { $entity = new AccountUserRole(); $entity->setLabel($roleLabel); $entity->setOrganization($this->getDefaultOrganization($manager)); $this->setReference($entity->getLabel(), $entity); $manager->persist($entity); }