function it_passes_locale_from_request_to_translatable_listener(TranslatableListener $translatableListener, GetResponseEvent $event, Request $request)
 {
     $event->getRequest()->willReturn($request);
     $request->getLocale()->willReturn('some_locale');
     $translatableListener->setLocale('some_locale')->shouldBeCalled();
     $this->onKernelRequest($event);
 }
 function let(ManagerRegistry $managerRegistry, TranslatableListener $translatableListener, ObjectManager $manager, ClassMetadata $translatableMetadata)
 {
     $managerRegistry->getManagerForClass(Argument::type('string'))->willReturn($manager);
     $translatableListener->getExtendedMetadata($manager, Argument::type('string'))->willReturn($translatableMetadata);
     $translatableListener->getLocale()->willReturn('en');
     $this->beConstructedWith($managerRegistry, $translatableListener, new PropertyAccessor());
 }
 function it_should_return_map_in_current_locale(TranslatableListener $translatableListener)
 {
     $translatableListener->getLocale()->willReturn('en');
     $map = $this->getMap();
     $map['resource_group']['resource_block']['resource_a']->shouldHaveType('FSi\\Bundle\\ResourceRepositoryBundle\\Repository\\Resource\\Type\\TextType');
     $map['resource_group']['resource_block']['resource_a']->getName()->shouldReturn('resource_group.resource_block.resource_a.en');
     $map['resource_group']['resource_block']['resource_b']->shouldHaveType('FSi\\Bundle\\ResourceRepositoryBundle\\Repository\\Resource\\Type\\TextType');
     $map['resource_group']['resource_block']['resource_b']->getName()->shouldReturn('resource_group.resource_block.resource_b');
 }
 public function let(ManagerRegistry $managerRegistry, ObjectManager $objectManager, ClassMetadataFactory $metadataFactory, ClassMetadata $classMetadata, TranslatableListener $translatableListener, TranslatableMetadata $translatableMetadata, EntityRepository $entityRepository, TranslatableRepository $translatableRepository, ParamConverter $paramConverter)
 {
     $managerRegistry->getManagerForClass(Argument::type('string'))->willReturn($objectManager);
     $metadataFactory->isTransient(Argument::type('string'))->willReturn(false);
     $objectManager->getMetadataFactory()->willReturn($metadataFactory);
     $objectManager->getClassMetadata(Argument::type('string'))->willReturn($classMetadata);
     $objectManager->getRepository('NonTranslatableEntity')->willReturn($entityRepository);
     $objectManager->getRepository('TranslatableEntity')->willReturn($translatableRepository);
     $translatableListener->getExtendedMetadata($objectManager, Argument::type('string'))->willReturn($translatableMetadata);
     $paramConverter->getOptions()->willReturn(array());
     $paramConverter->getName()->willReturn('object');
     $this->beConstructedWith($managerRegistry, $translatableListener);
 }
 /**
  * @param \FSi\Component\DataGrid\Column\CellViewInterface $view
  * @param string $propertyPath
  * @return bool
  */
 private function isPropertyPathTranslated(CellViewInterface $view, $propertyPath)
 {
     if (!($propertyPath = $this->validatePropertyPath($propertyPath))) {
         return false;
     }
     return $this->getObjectLocale($view, $propertyPath) !== $this->translatableListener->getLocale();
 }
 function it_does_nothing_if_forms_property_is_not_translatable_in_first_translatable_parent(ManagerRegistry $managerRegistry, ObjectManager $manager, TranslatableListener $translatableListener, ClassMetadata $translatableMetadata, PropertyPath $propertyPath, FormView $view, FormInterface $form, FormConfigInterface $formConfig, FormInterface $parentForm, FormConfigInterface $parentFormConfig, FormInterface $grandParentForm, FormConfigInterface $grandParentFormConfig)
 {
     $propertyPath->__toString()->willReturn('translatable_property');
     $form->getPropertyPath()->willReturn($propertyPath);
     $form->getConfig()->willReturn($formConfig);
     $form->getParent()->willReturn($parentForm);
     $parentForm->getConfig()->willReturn($parentFormConfig);
     $parentFormConfig->getInheritData()->willReturn(true);
     $parentForm->getParent()->willReturn($grandParentForm);
     $grandParentForm->getConfig()->willReturn($grandParentFormConfig);
     $grandParentFormConfig->getInheritData()->willReturn(false);
     $grandParentFormConfig->getDataClass()->willReturn('translatable_class');
     $managerRegistry->getManagerForClass('translatable_class')->willReturn($manager);
     $translatableListener->getExtendedMetadata($manager, 'translatable_class')->willReturn($translatableMetadata);
     $translatableMetadata->hasTranslatableProperties()->willReturn(true);
     $translatableMetadata->getTranslatableProperties()->willReturn(array());
     $this->finishView($view, $form, array());
     expect($view->vars['translatable'])->toBe(false);
     expect($view->vars['not_translated'])->toBe(false);
 }
 function it_does_nothing_when_form_data_has_no_translatable_properties(ManagerRegistry $managerRegistry, ObjectManager $objectManager, TranslatableListener $translatableListener, FormEvent $event, FormInterface $form, FormConfigInterface $formConfig, ClassMetadata $translatableClassMetadata)
 {
     $translatableListener->getLocale()->willReturn('en');
     $event->getForm()->willReturn($form);
     $form->getConfig()->willReturn($formConfig);
     $formConfig->getOption('data_class')->willReturn('TranslatableEntity');
     $managerRegistry->getManagerForClass('TranslatableEntity')->willReturn($objectManager);
     $translatableListener->getExtendedMetadata($objectManager, 'TranslatableEntity')->willReturn($translatableClassMetadata);
     $translatableClassMetadata->hasTranslatableProperties()->willReturn(false);
     $event->getData()->shouldNotBeCalled();
     $this->setTranslatableLocale($event);
 }
 /**
  * @return string
  */
 private function getCurrentLocale()
 {
     return $this->translatableListener->getLocale() ?: $this->translatableListener->getDefaultLocale();
 }
 /**
  * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event
  */
 public function onKernelRequest(GetResponseEvent $event)
 {
     $this->translatableListener->setLocale($event->getRequest()->getLocale());
 }
 /**
  * @param string $class
  * @return ClassMetadata
  */
 private function getTranslatableMetadata($class)
 {
     return $this->translatableListener->getExtendedMetadata($this->getManagerForClass($class), $class);
 }
 /**
  * @param FormEvent $event
  * @return ClassMetadata
  */
 private function getFormDataTranslatableMetadata(FormEvent $event)
 {
     return $this->translatableListener->getExtendedMetadata($this->getManagerForDataClass($event), $this->getFormDataClass($event));
 }
 /**
  * @param \Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter $configuration
  * @return \FSi\DoctrineExtensions\Translatable\Mapping\ClassMetadata $translatableMetadata
  */
 private function getTranslatableMetadata(ParamConverter $configuration)
 {
     return $this->translatableListener->getExtendedMetadata($this->getManager($configuration), $configuration->getClass());
 }
 function it_gets_deafult_locale(TranslatableListener $translatableListener)
 {
     $translatableListener->getDefaultLocale()->willReturn('en');
     $this->getDefaultLocale()->shouldReturn('en');
 }