public function it_clear_data_if_translatable_and_in_different_locale(TranslatableFormHelper $translatableFormHelper, FormEvent $event, FormInterface $form, FormInterface $parentForm)
 {
     $translatableFormHelper->isFormPropertyPathTranslatable($form)->willReturn(true);
     $translatableFormHelper->isFormDataInCurrentLocale($parentForm)->willReturn(false);
     $event->setData(Argument::any())->shouldBeCalled();
     $this->onPreSetData($event);
 }
 function it_sets_not_translated_attribute_when_property_no_translation(FSiFilePathResolver $filePathResolver, File $uploadableFile, FormInterface $form, FormInterface $parentForm, TranslatableFormHelper $translatableFormHelper)
 {
     $view = new FormView();
     $fileView = new FormView($view);
     $removeView = new FormView($view);
     $view->children['translatable_property'] = $fileView;
     $view->children['remove'] = $removeView;
     $translatableFormHelper->getFirstTranslatableParent($form)->willReturn($parentForm);
     $translatableFormHelper->isFormPropertyPathTranslatable($form)->willReturn(true);
     $translatableFormHelper->isFormDataInCurrentLocale($parentForm)->willReturn(false);
     $translatableFormHelper->getFormNormDataLocale($parentForm)->willReturn('en');
     $form->getName()->willReturn('translatable_property');
     $data = new \stdClass();
     $view->vars['value'] = $data;
     $fileView->vars['value'] = $uploadableFile->getWrappedObject();
     $fileView->vars['data'] = $uploadableFile->getWrappedObject();
     $filePathResolver->fileBasename($uploadableFile->getWrappedObject())->willReturn('default-locale-filename');
     $filePathResolver->fileUrl($uploadableFile->getWrappedObject())->willReturn('default-locale-url');
     $this->finishView($view, $form, array('remove_name' => 'remove'));
     expect($view->vars['translatable'])->toBe(true);
     expect($view->vars['not_translated'])->toBe(true);
     expect($view->vars['label_attr']['data-default-locale'])->toBe('en');
     expect($view->vars['label_attr']['data-default-locale-value'])->toBe('default-locale-filename');
     expect($view->vars['label_attr']['data-default-locale-url'])->toBe('default-locale-url');
     expect($fileView->vars['value'])->toBe(null);
     expect($fileView->vars['data'])->toBe(null);
     expect($removeView->vars['checked'])->toBe(true);
 }
 public function onPreSetData(FormEvent $event)
 {
     $form = $event->getForm();
     $parent = $this->translatableFormHelper->getFirstTranslatableParent($form);
     if ($this->translatableFormHelper->isFormPropertyPathTranslatable($form) && !$this->translatableFormHelper->isFormDataInCurrentLocale($parent)) {
         $event->setData(null);
     }
 }
 function it_sets_not_translated_attribute_when_property_no_translation(FormInterface $form, FormInterface $parentForm, TranslatableFormHelper $translatableFormHelper)
 {
     $translatableFormHelper->getFirstTranslatableParent($form)->willReturn($parentForm);
     $translatableFormHelper->isFormPropertyPathTranslatable($form)->willReturn(true);
     $translatableFormHelper->isFormDataInCurrentLocale($parentForm)->willReturn(false);
     $translatableFormHelper->getFormNormDataLocale($parentForm)->willReturn('en');
     $view = new FormView();
     $view->vars['value'] = 'default-locale-value';
     $this->finishView($view, $form, array());
     expect($view->vars['translatable'])->toBe(true);
     expect($view->vars['not_translated'])->toBe(true);
     expect($view->vars['label_attr']['data-default-locale'])->toBe('en');
     expect($view->vars['label_attr']['data-default-locale-value'])->toBe('default-locale-value');
     expect($view->vars['value'])->toBe(null);
 }
 /**
  * {@inheritdoc}
  */
 public function finishView(FormView $view, FormInterface $form, array $options)
 {
     $view->vars['translatable'] = false;
     $view->vars['not_translated'] = false;
     if (!$this->translatableFormHelper->isFormPropertyPathTranslatable($form)) {
         return;
     }
     $parent = $this->translatableFormHelper->getFirstTranslatableParent($form);
     if (!$parent) {
         return;
     }
     $view->vars['translatable'] = true;
     if (!$this->hasCurrentValue($view, $form, $options) || $this->translatableFormHelper->isFormDataInCurrentLocale($parent)) {
         return;
     }
     $view->vars['not_translated'] = true;
     $view->vars['label_attr']['data-default-locale'] = $this->translatableFormHelper->getFormNormDataLocale($parent);
     $this->moveCurrentValueToDefaultLocaleValue($view, $form, $options);
 }