/**
  * Test preSetData
  * It should add form fields for each translations
  *
  * @param array $options
  *
  * @dataProvider preSetDataProvider
  */
 public function testPreSetData(array $options)
 {
     $target = $this->getTargetedClass($options);
     $translatableEntity = $this->getTranslatableEntityMock();
     $event = $this->getEventMock($this->form, $translatableEntity, []);
     $locales = $options['locales'];
     $requiredLocales = $options['required_locale'];
     foreach ($locales as $index => $locale) {
         $this->formFactory->expects($this->at($index))->method('createNamed')->with($locale, $options['widget'], '', ['label' => $this->localeConfig['locales'][$locale]['label'], 'required' => in_array($locale, $requiredLocales), 'mapped' => false, 'auto_initialize' => false])->will($this->returnValue($field = $this->getFormMock()));
         $this->form->expects($this->any())->method('add')->with($this->equalTo($field));
     }
     $target->preSetData($event);
 }
 public function testProcessPrivileges()
 {
     $request = new Request();
     $request->setMethod('POST');
     $role = new AccountUserRole('TEST');
     $roleSecurityIdentity = new RoleSecurityIdentity($role);
     $appendForm = $this->getMock('Symfony\\Component\\Form\\FormInterface');
     $appendForm->expects($this->once())->method('getData')->willReturn([]);
     $removeForm = $this->getMock('Symfony\\Component\\Form\\FormInterface');
     $removeForm->expects($this->once())->method('getData')->willReturn([]);
     $firstEntityPrivilege = $this->createPrivilege('entity', 'entity:FirstClass', 'VIEW');
     $secondEntityPrivilege = $this->createPrivilege('entity', 'entity:SecondClass', 'VIEW');
     $entityForm = $this->getMock('Symfony\\Component\\Form\\FormInterface');
     $entityForm->expects($this->once())->method('getData')->willReturn([$firstEntityPrivilege, $secondEntityPrivilege]);
     $actionPrivilege = $this->createPrivilege('action', 'action', 'random_action');
     $actionForm = $this->getMock('Symfony\\Component\\Form\\FormInterface');
     $actionForm->expects($this->once())->method('getData')->willReturn([$actionPrivilege]);
     $form = $this->getMock('Symfony\\Component\\Form\\FormInterface');
     $form->expects($this->once())->method('submit')->with($request);
     $form->expects($this->once())->method('isValid')->willReturn(true);
     $form->expects($this->any())->method('get')->willReturnMap([['appendUsers', $appendForm], ['removeUsers', $removeForm], ['entity', $entityForm], ['action', $actionForm]]);
     $this->formFactory->expects($this->once())->method('create')->willReturn($form);
     $objectManager = $this->getMock('Doctrine\\Common\\Persistence\\ObjectManager');
     $this->managerRegistry->expects($this->any())->method('getManagerForClass')->with(get_class($role))->willReturn($objectManager);
     $expectedFirstEntityPrivilege = $this->createPrivilege('entity', 'entity:FirstClass', 'VIEW');
     $expectedFirstEntityPrivilege->setGroup(AccountUser::SECURITY_GROUP);
     $expectedSecondEntityPrivilege = $this->createPrivilege('entity', 'entity:SecondClass', 'VIEW');
     $expectedSecondEntityPrivilege->setGroup(AccountUser::SECURITY_GROUP);
     $expectedActionPrivilege = $this->createPrivilege('action', 'action', 'random_action');
     $expectedActionPrivilege->setGroup(AccountUser::SECURITY_GROUP);
     $this->privilegeRepository->expects($this->once())->method('savePrivileges')->with($roleSecurityIdentity, new ArrayCollection([$expectedFirstEntityPrivilege, $expectedSecondEntityPrivilege, $expectedActionPrivilege]));
     $this->aclManager->expects($this->any())->method('getSid')->with($role)->willReturn($roleSecurityIdentity);
     $this->chainMetadataProvider->expects($this->once())->method('startProviderEmulation')->with(FrontendOwnershipMetadataProvider::ALIAS);
     $this->chainMetadataProvider->expects($this->once())->method('stopProviderEmulation');
     $handler = new AccountUserRoleHandler($this->formFactory, $this->privilegeConfig);
     $handler->setManagerRegistry($this->managerRegistry);
     $handler->setAclPrivilegeRepository($this->privilegeRepository);
     $handler->setAclManager($this->aclManager);
     $handler->setChainMetadataProvider($this->chainMetadataProvider);
     $handler->setRequest($request);
     $handler->createForm($role);
     $handler->process($role);
 }
Beispiel #3
0
 /**
  * @dataProvider supportedMethods
  *
  * @param string $method
  */
 public function testProcessValidDataWithTargetEntity($method)
 {
     $this->entity->setPhoneNumber('phone1');
     $targetEntity = new TestTarget(123);
     $targetEntity1 = new TestTarget(456);
     $this->request->query->set('entityClass', get_class($targetEntity));
     $this->request->query->set('entityId', $targetEntity->getId());
     $this->formFactory->expects($this->once())->method('createNamed')->with('orocrm_call_form', 'orocrm_call_form', $this->entity, [])->will($this->returnValue($this->form));
     $this->form->expects($this->once())->method('submit')->with($this->request);
     $this->form->expects($this->once())->method('isValid')->will($this->returnValue(true));
     $this->phoneProvider->expects($this->never())->method('getPhoneNumber');
     $this->phoneProvider->expects($this->once())->method('getPhoneNumbers')->with($this->identicalTo($targetEntity))->will($this->returnValue([['phone1', $targetEntity], ['phone2', $targetEntity], ['phone1', $targetEntity1]]));
     $this->entityRoutingHelper->expects($this->once())->method('getEntity')->with(get_class($targetEntity), $targetEntity->getId())->will($this->returnValue($targetEntity));
     // phone1, $targetEntity
     $this->callActivityManager->expects($this->at(0))->method('addAssociation')->with($this->identicalTo($this->entity), $this->identicalTo($targetEntity));
     // phone2, $targetEntity
     $this->callActivityManager->expects($this->at(1))->method('addAssociation')->with($this->identicalTo($this->entity), $this->identicalTo($targetEntity));
     // phone1, $targetEntity1
     $this->callActivityManager->expects($this->at(2))->method('addAssociation')->with($this->identicalTo($this->entity), $this->identicalTo($targetEntity1));
     $this->manager->expects($this->once())->method('persist')->with($this->entity);
     $this->manager->expects($this->once())->method('flush');
     $this->request->setMethod($method);
     $this->assertTrue($this->handler->process($this->entity));
 }