/**
  * {@inheritdoc}
  */
 public function finishView(FormView $view, FormInterface $form, array $options)
 {
     $permissionForm = $form->getParent();
     if (!$permissionForm) {
         return;
     }
     $permissionsForm = $permissionForm->getParent();
     if (!$permissionsForm) {
         return;
     }
     $privilegeForm = $permissionsForm->getParent();
     if (!$privilegeForm) {
         return;
     }
     $privilegesForm = $privilegeForm->getParent();
     if (!$privilegesForm) {
         return;
     }
     $roleForm = $privilegesForm->getParent();
     if (!$roleForm) {
         return;
     }
     if (in_array($roleForm->getConfig()->getType()->getName(), [AccountUserRoleType::NAME, FrontendAccountUserRoleType::NAME])) {
         //uses on edit page for rendering preloaded string (role permission name)
         $view->vars['translation_prefix'] = $this->roleTranslationPrefixResolver->getPrefix();
     }
 }
 /**
  * @dataProvider getPrefixDataProvider
  *
  * @param UserInterface|string|null $loggedUser
  * @param string|null $expectedPrefix
  */
 public function testGetPrefix($loggedUser, $expectedPrefix = null)
 {
     $this->securityFacade->expects($this->once())->method('getLoggedUser')->willReturn($loggedUser);
     if (!$expectedPrefix) {
         $this->setExpectedException('\\RuntimeException', 'This method must be called only for logged User or AccountUser');
     }
     $this->assertEquals($expectedPrefix, $this->resolver->getPrefix());
 }
 /**
  * {@inheritdoc}
  */
 public function buildView(FormView $view, FormInterface $form, array $options)
 {
     $parent = $form->getParent()->getParent()->getParent();
     $parentData = $parent->getData();
     if ($parentData instanceof AclPrivilege) {
         $view->vars['identity'] = $parentData->getIdentity()->getId();
         $view->vars['level_label'] = AccessLevel::getAccessLevelName($form->getData());
     }
     //uses on view page for rendering preloaded string (role permission name)
     $view->vars['translation_prefix'] = $this->roleTranslationPrefixResolver->getPrefix();
 }
 /**
  * @param bool $hasPermissionForm
  * @param bool $hasPermissionsForm
  * @param bool $hasPrivilegeForm
  * @param bool $hasPrivilegesForm
  * @param bool $hasRoleForm
  * @param string|null $roleFormName
  * @param string|null $expectedPrefix
  * @dataProvider finishViewDataProvider
  *
  * @SuppressWarnings(PHPMD.NPathComplexity)
  */
 public function testFinishView($hasPermissionForm = false, $hasPermissionsForm = false, $hasPrivilegeForm = false, $hasPrivilegesForm = false, $hasRoleForm = false, $roleFormName = null, $expectedPrefix = null)
 {
     $this->roleTranslationPrefixResolver->expects($expectedPrefix ? $this->once() : $this->never())->method('getPrefix')->willReturn($expectedPrefix);
     $roleForm = null;
     if ($hasRoleForm) {
         $type = $this->getMock('Symfony\\Component\\Form\\ResolvedFormTypeInterface');
         $type->expects($this->once())->method('getName')->willReturn($roleFormName);
         $formConfig = $this->getMock('Symfony\\Component\\Form\\FormConfigInterface');
         $formConfig->expects($this->once())->method('getType')->willReturn($type);
         $roleForm = $this->getMock('Symfony\\Component\\Form\\FormInterface');
         $roleForm->expects($this->once())->method('getConfig')->willReturn($formConfig);
     }
     $privilegesForm = null;
     if ($hasPrivilegesForm) {
         $privilegesForm = $this->getMock('Symfony\\Component\\Form\\FormInterface');
         $privilegesForm->expects($this->once())->method('getParent')->willReturn($roleForm);
     }
     $privilegeForm = null;
     if ($hasPrivilegeForm) {
         $privilegeForm = $this->getMock('Symfony\\Component\\Form\\FormInterface');
         $privilegeForm->expects($this->once())->method('getParent')->willReturn($privilegesForm);
     }
     $permissionsForm = null;
     if ($hasPermissionsForm) {
         $permissionsForm = $this->getMock('Symfony\\Component\\Form\\FormInterface');
         $permissionsForm->expects($this->once())->method('getParent')->willReturn($privilegeForm);
     }
     $permissionForm = null;
     if ($hasPermissionForm) {
         $permissionForm = $this->getMock('Symfony\\Component\\Form\\FormInterface');
         $permissionForm->expects($this->once())->method('getParent')->willReturn($permissionsForm);
     }
     /** @var FormInterface|\PHPUnit_Framework_MockObject_MockObject $form */
     $form = $this->getMock('Symfony\\Component\\Form\\FormInterface');
     $form->expects($this->once())->method('getParent')->willReturn($permissionForm);
     $formView = new FormView();
     $this->extension->finishView($formView, $form, []);
     if ($expectedPrefix) {
         $this->assertArrayHasKey('translation_prefix', $formView->vars);
         $this->assertEquals($expectedPrefix, $formView->vars['translation_prefix']);
     } else {
         $this->assertArrayNotHasKey('translation_prefix', $formView->vars);
     }
 }