2 declare(strict_types = 1);
18 use Prophecy\Argument;
31 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
63 $this->resetSingletonInstances =
true;
64 $cacheManagerProphecy = $this->prophesize(CacheManager::class);
65 GeneralUtility::setSingletonInstance(CacheManager::class, $cacheManagerProphecy->reveal());
66 $cacheFrontendProphecy = $this->prophesize(FrontendInterface::class);
67 $cacheManagerProphecy->getCache(
'l10n')->willReturn($cacheFrontendProphecy->reveal());
68 $cacheFrontendProphecy->get(Argument::cetera())->willReturn(
false);
69 $cacheFrontendProphecy->set(Argument::cetera())->willReturn(
null);
71 $localizationFactory = $this->prophesize(LocalizationFactory::class);
73 ->getParsedData(
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf',
'default')
74 ->willReturn(include __DIR__ .
'/Fixtures/locallang_form.php');
76 ->getParsedData(
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf',
'de')
77 ->willReturn(include __DIR__ .
'/Fixtures/de.locallang_form.php');
79 ->getParsedData(
'EXT:form/Tests/Unit/Service/Fixtures/locallang_additional_text.xlf',
'default')
80 ->willReturn(include __DIR__ .
'/Fixtures/locallang_additional_text.php');
82 ->getParsedData(
'EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_01.xlf',
'default')
83 ->willReturn(include __DIR__ .
'/Fixtures/locallang_ceuid_suffix_01.php');
85 ->getParsedData(
'EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_02.xlf',
'default')
86 ->willReturn(include __DIR__ .
'/Fixtures/locallang_ceuid_suffix_02.php');
88 ->getParsedData(
'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf',
'default')
89 ->willReturn(include __DIR__ .
'/Fixtures/locallang_text.php');
91 GeneralUtility::setSingletonInstance(LocalizationFactory::class, $localizationFactory->reveal());
93 $this->mockConfigurationManager = $this->getAccessibleMock(ConfigurationManager::class, [
97 $this->mockTranslationService = $this->getAccessibleMock(TranslationService::class, [
98 'getConfigurationManager',
102 $this->mockTranslationService
103 ->expects($this->any())
104 ->method(
'getLanguageService')
105 ->willReturn(GeneralUtility::makeInstance(LanguageService::class));
107 $this->mockTranslationService
108 ->expects($this->any())
109 ->method(
'getConfigurationManager')
110 ->willReturn($this->mockConfigurationManager);
112 $this->store = GeneralUtility::makeInstance(LanguageStore::class);
113 $this->store->initialize();
121 $xlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
122 $expected =
'FORM EN';
124 $this->store->flushData($xlfPath);
125 $this->assertEquals($expected, $this->mockTranslationService->_call(
127 $xlfPath .
':element.Page.renderingOptions.nextButtonLabel'
136 $xlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
137 $expected =
'FORM EN';
139 $this->store->flushData($xlfPath);
140 $this->assertEquals($expected, $this->mockTranslationService->_call(
142 'LLL:' . $xlfPath .
':element.Page.renderingOptions.nextButtonLabel'
151 $xlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
152 $expected =
'FORM EN';
154 $this->store->flushData($xlfPath);
155 $this->assertEquals($expected, $this->mockTranslationService->_call(
157 $xlfPath .
':element.Page.renderingOptions.nextButtonLabel',
170 $xlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
171 $this->store->flushData($xlfPath);
174 $this->assertEquals($expected, $this->mockTranslationService->_call(
176 $xlfPath .
':element.Page.renderingOptions.nonExisting'
185 $xlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
186 $this->store->flushData($xlfPath);
188 $expected =
'defaultValue';
189 $this->assertEquals($expected, $this->mockTranslationService->_call(
191 $xlfPath .
':element.Page.renderingOptions.nonExisting',
204 $xlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
205 $expected =
'FORM DE';
207 $this->store->flushData($xlfPath);
208 $this->assertEquals($expected, $this->mockTranslationService->_call(
210 $xlfPath .
':element.Page.renderingOptions.nextButtonLabel',
222 $xlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
223 $expected =
'defaultValue';
225 $this->store->flushData($xlfPath);
226 $this->assertEquals($expected, $this->mockTranslationService->_call(
228 $xlfPath .
':element.Page.renderingOptions.nonExisting',
241 $xlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
244 $this->store->flushData($xlfPath);
245 $this->assertEquals($expected, $this->mockTranslationService->_call(
247 $xlfPath .
':element.Page.renderingOptions.nonExisting',
259 $xlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
260 $expected =
'FORM EN';
262 $this->store->flushData($xlfPath);
263 $this->assertEquals($expected, $this->mockTranslationService->_call(
265 'element.Page.renderingOptions.nextButtonLabel',
276 $xlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
277 $expected =
'FORM EN';
279 $this->store->flushData($xlfPath);
280 $this->assertEquals($expected, $this->mockTranslationService->_call(
282 'element.Page.renderingOptions.nextButtonLabel',
293 $xlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
301 'Klaus' =>
'element.Page.renderingOptions.nextButtonLabel'
317 $this->store->flushData($xlfPath);
318 $this->assertEquals($expected, $this->mockTranslationService->_call(
319 'translateValuesRecursive',
330 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
331 $textElementXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf';
333 $formRuntimeIdentifier =
'form-runtime-identifier';
334 $formElementIdentifier =
'form-element-identifier';
336 $formRuntimeRenderingOptions = [
338 'translationFile' => $formRuntimeXlfPath,
339 'translatePropertyValueIfEmpty' => true
343 $formElementRenderingOptions = [
345 'translationFile' => $textElementXlfPath,
346 'translatePropertyValueIfEmpty' => true
350 $expected =
'form-element-identifier LABEL EN';
352 $this->store->flushData($formRuntimeXlfPath);
353 $this->store->flushData($textElementXlfPath);
355 $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, [
'dummy'], [],
'',
false);
357 $mockFormElement->_set(
'type',
'Text');
358 $mockFormElement->_set(
'renderingOptions', $formElementRenderingOptions);
359 $mockFormElement->_set(
'identifier', $formElementIdentifier);
360 $mockFormElement->_set(
'label',
'some label');
362 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions'], [],
'',
false);
363 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
364 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
366 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementValue', $mockFormElement, [
'label'], $mockFormRuntime));
374 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
375 $textElementXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf';
377 $formRuntimeIdentifier =
'form-runtime-identifier';
378 $formElementIdentifier =
'form-element-identifier';
380 $formRuntimeRenderingOptions = [
382 'translationFile' => $formRuntimeXlfPath,
383 'translatePropertyValueIfEmpty' => true
387 $formElementRenderingOptions = [
389 'translationFile' => $textElementXlfPath,
390 'translatePropertyValueIfEmpty' => true
394 $expected =
'form-element-identifier LABEL EN';
396 $this->store->flushData($formRuntimeXlfPath);
397 $this->store->flushData($textElementXlfPath);
399 $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, [
'dummy'], [],
'',
false);
401 $mockFormElement->_set(
'type',
'Text');
402 $mockFormElement->_set(
'renderingOptions', $formElementRenderingOptions);
403 $mockFormElement->_set(
'identifier', $formElementIdentifier);
404 $mockFormElement->_set(
'label',
'');
406 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions'], [],
'',
false);
407 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
408 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
410 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementValue', $mockFormElement, [
'label'], $mockFormRuntime));
418 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
419 $textElementXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf';
421 $formRuntimeIdentifier =
'form-runtime-identifier';
422 $formElementIdentifier =
'form-element-identifier';
424 $formRuntimeRenderingOptions = [
426 'translationFile' => $formRuntimeXlfPath,
427 'translatePropertyValueIfEmpty' => true
431 $formElementRenderingOptions = [
433 'translationFile' => $textElementXlfPath,
434 'translatePropertyValueIfEmpty' => false
440 $this->store->flushData($formRuntimeXlfPath);
441 $this->store->flushData($textElementXlfPath);
443 $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, [
'dummy'], [],
'',
false);
445 $mockFormElement->_set(
'type',
'Text');
446 $mockFormElement->_set(
'renderingOptions', $formElementRenderingOptions);
447 $mockFormElement->_set(
'identifier', $formElementIdentifier);
448 $mockFormElement->_set(
'label',
'');
450 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions'], [],
'',
false);
451 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
452 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
454 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementValue', $mockFormElement, [
'label'], $mockFormRuntime));
462 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
463 $textElementXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf';
465 $formRuntimeIdentifier =
'another-form-runtime-identifier';
466 $formElementIdentifier =
'form-element-identifier';
468 $formRuntimeRenderingOptions = [
470 'translationFile' => $formRuntimeXlfPath,
471 'translatePropertyValueIfEmpty' => true
475 $formElementRenderingOptions = [
477 'translationFile' => $textElementXlfPath,
478 'translatePropertyValueIfEmpty' => true
482 $expected =
'form-element-identifier LABEL EN 1';
484 $this->store->flushData($formRuntimeXlfPath);
485 $this->store->flushData($textElementXlfPath);
487 $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, [
'dummy'], [],
'',
false);
489 $mockFormElement->_set(
'type',
'Text');
490 $mockFormElement->_set(
'renderingOptions', $formElementRenderingOptions);
491 $mockFormElement->_set(
'identifier', $formElementIdentifier);
492 $mockFormElement->_set(
'label',
'some label');
494 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions'], [],
'',
false);
495 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
496 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
498 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementValue', $mockFormElement, [
'label'], $mockFormRuntime));
506 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
507 $textElementXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf';
509 $formRuntimeIdentifier =
'another-form-runtime-identifier';
510 $formElementIdentifier =
'another-form-element-identifier';
512 $formRuntimeRenderingOptions = [
514 'translationFile' => $formRuntimeXlfPath,
515 'translatePropertyValueIfEmpty' => true
519 $formElementRenderingOptions = [
521 'translationFile' => $textElementXlfPath,
522 'translatePropertyValueIfEmpty' => true
526 $expected =
'form-element-identifier LABEL EN 2';
528 $this->store->flushData($formRuntimeXlfPath);
529 $this->store->flushData($textElementXlfPath);
531 $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, [
'dummy'], [],
'',
false);
533 $mockFormElement->_set(
'type',
'Text');
534 $mockFormElement->_set(
'renderingOptions', $formElementRenderingOptions);
535 $mockFormElement->_set(
'identifier', $formElementIdentifier);
536 $mockFormElement->_set(
'label',
'some label');
538 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions'], [],
'',
false);
539 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
540 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
542 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementValue', $mockFormElement, [
'label'], $mockFormRuntime));
550 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
551 $textElementXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf';
553 $formRuntimeIdentifier =
'form-runtime-identifier';
554 $formElementIdentifier =
'form-element-identifier';
556 $formRuntimeRenderingOptions = [
558 'translationFile' => $formRuntimeXlfPath,
559 'translatePropertyValueIfEmpty' => true
563 $formElementRenderingOptions = [
565 'translationFile' => $textElementXlfPath,
566 'translatePropertyValueIfEmpty' => true
569 $formElementProperties = [
570 'placeholder' =>
'placeholder',
573 $expected =
'form-element-identifier PLACEHOLDER EN';
575 $this->store->flushData($formRuntimeXlfPath);
576 $this->store->flushData($textElementXlfPath);
578 $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, [
'dummy'], [],
'',
false);
580 $mockFormElement->_set(
'type',
'Text');
581 $mockFormElement->_set(
'renderingOptions', $formElementRenderingOptions);
582 $mockFormElement->_set(
'identifier', $formElementIdentifier);
583 $mockFormElement->_set(
'properties', $formElementProperties);
585 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions'], [],
'',
false);
586 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
587 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
589 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementValue', $mockFormElement, [
'placeholder'], $mockFormRuntime));
597 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
598 $textElementXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf';
600 $formRuntimeIdentifier =
'another-form-runtime-identifier';
601 $formElementIdentifier =
'another-form-element-identifier';
603 $formRuntimeRenderingOptions = [
605 'translationFile' => $formRuntimeXlfPath,
606 'translatePropertyValueIfEmpty' => true
610 $formElementRenderingOptions = [
612 'translationFile' => $textElementXlfPath,
613 'translatePropertyValueIfEmpty' => true
616 $formElementProperties = [
617 'placeholder' =>
'placeholder',
620 $expected =
'placeholder';
622 $this->store->flushData($formRuntimeXlfPath);
623 $this->store->flushData($textElementXlfPath);
625 $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, [
'dummy'], [],
'',
false);
627 $mockFormElement->_set(
'type',
'Text');
628 $mockFormElement->_set(
'renderingOptions', $formElementRenderingOptions);
629 $mockFormElement->_set(
'identifier', $formElementIdentifier);
630 $mockFormElement->_set(
'properties', $formElementProperties);
632 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions'], [],
'',
false);
633 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
634 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
636 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementValue', $mockFormElement, [
'placeholder'], $mockFormRuntime));
644 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
645 $textElementXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf';
647 $formRuntimeIdentifier =
'form-runtime-identifier';
648 $formElementIdentifier =
'form-element-identifier-page';
650 $formRuntimeRenderingOptions = [
652 'translationFile' => $formRuntimeXlfPath,
653 'translatePropertyValueIfEmpty' => true
657 $formElementRenderingOptions = [
658 'nextButtonLabel' =>
'next button label',
660 'translationFile' => $textElementXlfPath,
661 'translatePropertyValueIfEmpty' => true
664 $formElementProperties = [
665 'placeholder' =>
'placeholder',
668 $expected =
'form-element-identifier nextButtonLabel EN';
670 $this->store->flushData($formRuntimeXlfPath);
671 $this->store->flushData($textElementXlfPath);
673 $mockFormElement = $this->getAccessibleMock(Page::class, [
'dummy'], [],
'',
false);
675 $mockFormElement->_set(
'type',
'Page');
676 $mockFormElement->_set(
'renderingOptions', $formElementRenderingOptions);
677 $mockFormElement->_set(
'identifier', $formElementIdentifier);
678 $mockFormElement->_set(
'properties', $formElementProperties);
680 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions'], [],
'',
false);
681 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
682 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
684 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementValue', $mockFormElement, [
'nextButtonLabel'], $mockFormRuntime));
692 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
693 $textElementXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf';
695 $formRuntimeIdentifier =
'form-runtime-identifier';
696 $formElementIdentifier =
'options-form-element-identifier';
698 $formRuntimeRenderingOptions = [
700 'translationFile' => $formRuntimeXlfPath,
701 'translatePropertyValueIfEmpty' => true
705 $formElementRenderingOptions = [
707 'translationFile' => $textElementXlfPath,
708 'translatePropertyValueIfEmpty' => true
711 $formElementProperties = [
713 'optionValue1' =>
'optionLabel1',
714 'optionValue2' =>
'optionLabel2'
719 'optionValue1' =>
'options-form-element-identifier option 1 EN',
720 'optionValue2' =>
'options-form-element-identifier option 2 EN'
723 $this->store->flushData($formRuntimeXlfPath);
724 $this->store->flushData($textElementXlfPath);
726 $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, [
'dummy'], [],
'',
false);
728 $mockFormElement->_set(
'type',
'Text');
729 $mockFormElement->_set(
'renderingOptions', $formElementRenderingOptions);
730 $mockFormElement->_set(
'identifier', $formElementIdentifier);
731 $mockFormElement->_set(
'properties', $formElementProperties);
733 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions'], [],
'',
false);
734 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
735 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
737 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementValue', $mockFormElement, [
'options'], $mockFormRuntime));
745 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
746 $textElementXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf';
748 $formRuntimeIdentifier =
'another-form-runtime-identifier';
749 $formElementIdentifier =
'options-form-element-identifier';
751 $formRuntimeRenderingOptions = [
753 'translationFile' => $formRuntimeXlfPath,
754 'translatePropertyValueIfEmpty' => true
758 $formElementRenderingOptions = [
760 'translationFile' => $textElementXlfPath,
761 'translatePropertyValueIfEmpty' => true
764 $formElementProperties = [
766 'optionValue1' =>
'optionLabel1',
767 'optionValue2' =>
'optionLabel2'
772 'optionValue1' =>
'options-form-element-identifier option 1 EN',
773 'optionValue2' =>
'options-form-element-identifier option 2 EN'
776 $this->store->flushData($formRuntimeXlfPath);
777 $this->store->flushData($textElementXlfPath);
779 $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, [
'dummy'], [],
'',
false);
781 $mockFormElement->_set(
'type',
'Text');
782 $mockFormElement->_set(
'renderingOptions', $formElementRenderingOptions);
783 $mockFormElement->_set(
'identifier', $formElementIdentifier);
784 $mockFormElement->_set(
'properties', $formElementProperties);
786 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions'], [],
'',
false);
787 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
788 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
790 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementValue', $mockFormElement, [
'options'], $mockFormRuntime));
798 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
799 $textElementXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf';
801 $formRuntimeIdentifier =
'form-runtime-identifier';
802 $finisherIdentifier =
'SaveToDatabaseFinisher';
804 $formRuntimeRenderingOptions = [
806 'translationFile' => $formRuntimeXlfPath,
807 'translatePropertyValueIfEmpty' => true
811 $finisherRenderingOptions = [
812 'translationFile' => $textElementXlfPath,
813 'translatePropertyValueIfEmpty' => true
816 $expected =
'form-element-identifier SaveToDatabase subject EN';
818 $this->store->flushData($formRuntimeXlfPath);
819 $this->store->flushData($textElementXlfPath);
821 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions'], [],
'',
false);
822 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
823 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
825 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFinisherOption', $mockFormRuntime, $finisherIdentifier,
'subject',
'subject value', $finisherRenderingOptions));
833 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
834 $textElementXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf';
836 $formRuntimeIdentifier =
'another-form-runtime-identifier';
837 $finisherIdentifier =
'SaveToDatabaseFinisher';
839 $formRuntimeRenderingOptions = [
841 'translationFile' => $formRuntimeXlfPath,
842 'translatePropertyValueIfEmpty' => true
846 $finisherRenderingOptions = [
847 'translationFile' => $textElementXlfPath,
848 'translatePropertyValueIfEmpty' => true
851 $expected =
'form-element-identifier SaveToDatabase subject EN 1';
853 $this->store->flushData($formRuntimeXlfPath);
854 $this->store->flushData($textElementXlfPath);
856 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions'], [],
'',
false);
857 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
858 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
860 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFinisherOption', $mockFormRuntime, $finisherIdentifier,
'subject',
'subject value', $finisherRenderingOptions));
868 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
869 $textElementXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf';
871 $formRuntimeIdentifier =
'my-form-runtime-identifier';
872 $formElementIdentifier =
'my-form-element-identifier';
874 $formRuntimeRenderingOptions = [
876 'translationFile' => $formRuntimeXlfPath,
877 'translatePropertyValueIfEmpty' => true
881 $formElementRenderingOptions = [];
883 $expected =
'my-form-runtime-identifier my-form-element-identifier LABEL EN';
885 $this->store->flushData($formRuntimeXlfPath);
886 $this->store->flushData($textElementXlfPath);
888 $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, [
'dummy'], [],
'',
false);
890 $mockFormElement->_set(
'type',
'Text');
891 $mockFormElement->_set(
'renderingOptions', $formElementRenderingOptions);
892 $mockFormElement->_set(
'identifier', $formElementIdentifier);
893 $mockFormElement->_set(
'label',
'some label');
895 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions'], [],
'',
false);
896 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
897 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
899 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementValue', $mockFormElement, [
'label'], $mockFormRuntime));
907 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
909 $this->store->flushData($formRuntimeXlfPath);
912 $formRuntime = $this->prophesize(FormRuntime::class);
913 $formRuntime->getIdentifier()->willReturn(
'my-form-runtime-identifier');
914 $formRuntime->getRenderingOptions()->willReturn([
916 'translationFile' => $formRuntimeXlfPath,
917 'translatePropertyValueIfEmpty' =>
true,
922 $element = $this->prophesize(RootRenderableInterface::class);
923 $element->getIdentifier()->willReturn(
'my-form-element-with-translation-arguments');
924 $element->getType()->willReturn(RootRenderableInterface::class);
925 $element->getLabel()->willReturn(
'See %s or %s');
926 $element->getRenderingOptions()->willReturn([
937 $expected =
'See this or that';
938 $result = $this->mockTranslationService->_call(
'translateFormElementValue', $element->reveal(), [
'label'], $formRuntime->reveal());
940 $this->assertEquals($expected, $result);
948 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
949 $textElementXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf';
951 $formRuntimeIdentifier =
'my-form-runtime-identifier';
952 $finisherIdentifier =
'SaveToDatabaseFinisher';
954 $formRuntimeRenderingOptions = [
956 'translationFile' => $formRuntimeXlfPath,
957 'translatePropertyValueIfEmpty' => true
961 $finisherRenderingOptions = [];
963 $expected =
'my-form-runtime-identifier form-element-identifier SaveToDatabase subject EN';
965 $this->store->flushData($formRuntimeXlfPath);
966 $this->store->flushData($textElementXlfPath);
968 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions'], [],
'',
false);
969 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
970 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
972 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFinisherOption', $mockFormRuntime, $finisherIdentifier,
'subject',
'subject value', $finisherRenderingOptions));
980 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
982 $this->store->flushData($formRuntimeXlfPath);
985 $formRuntime = $this->prophesize(FormRuntime::class);
986 $formRuntime->getIdentifier()->willReturn(
'my-form-runtime-identifier');
987 $formRuntime->getRenderingOptions()->willReturn([
989 'translationFile' => $formRuntimeXlfPath,
990 'translatePropertyValueIfEmpty' =>
true,
993 $renderingOptions = [
1001 $expected =
'My awesome subject';
1002 $result = $this->mockTranslationService->_call(
'translateFinisherOption', $formRuntime->reveal(),
'EmailToReceiverWithTranslationArguments',
'subject',
'My %s subject', $renderingOptions);
1004 $this->assertEquals($expected, $result);
1012 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
1013 $textElementXlfPaths = [
1014 10 =>
'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf',
1015 20 =>
'EXT:form/Tests/Unit/Service/Fixtures/locallang_additional_text.xlf'
1018 $formRuntimeIdentifier =
'form-runtime-identifier';
1019 $formElementIdentifier =
'form-element-identifier';
1021 $formRuntimeRenderingOptions = [
1023 'translationFile' => $formRuntimeXlfPath,
1024 'translatePropertyValueIfEmpty' => true
1028 $formElementRenderingOptions = [
1030 'translationFile' => $textElementXlfPaths,
1031 'translatePropertyValueIfEmpty' => true
1035 $expected =
'form-element-identifier ADDITIONAL LABEL EN';
1037 $this->store->flushData($formRuntimeXlfPath);
1039 foreach ($textElementXlfPaths as $textElementXlfPath) {
1040 $this->store->flushData($textElementXlfPath);
1043 $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, [
'dummy'], [],
'',
false);
1045 $mockFormElement->_set(
'type',
'Text');
1046 $mockFormElement->_set(
'renderingOptions', $formElementRenderingOptions);
1047 $mockFormElement->_set(
'identifier', $formElementIdentifier);
1048 $mockFormElement->_set(
'label',
'some label');
1050 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions'], [],
'',
false);
1051 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
1052 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1054 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementValue', $mockFormElement, [
'label'], $mockFormRuntime));
1062 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_01.xlf';
1064 $formRuntimeIdentifier =
'form-runtime-identifier-42';
1065 $formElementIdentifier =
'form-element-identifier';
1067 $formRuntimeRenderingOptions = [
1068 'submitButtonLabel' =>
'',
1070 'translationFile' => $formRuntimeXlfPath,
1071 'translatePropertyValueIfEmpty' => true
1075 $this->store->flushData($formRuntimeXlfPath);
1077 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions',
'getType'], [],
'',
false);
1079 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
1080 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1081 $mockFormRuntime->expects($this->any())->method(
'getType')->willReturn(
'Form');
1083 $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, [
'dummy'], [],
'',
false);
1085 $mockFormElement->_set(
'type',
'Text');
1086 $mockFormElement->_set(
'identifier', $formElementIdentifier);
1087 $mockFormElement->_set(
'label',
'');
1089 $expected =
'form-runtime-identifier-42 submitButtonLabel EN';
1090 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementValue', $mockFormRuntime, [
'submitButtonLabel'], $mockFormRuntime));
1092 $expected =
'form-runtime-identifier-42 form-element-identifierlabel EN';
1093 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementValue', $mockFormElement, [
'label'], $mockFormRuntime));
1101 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_02.xlf';
1103 $formRuntimeIdentifier =
'form-runtime-identifier-42';
1104 $formElementIdentifier =
'form-element-identifier';
1106 $formRuntimeRenderingOptions = [
1107 'submitButtonLabel' =>
'',
1108 '_originalIdentifier' =>
'form-runtime-identifier',
1110 'translationFile' => $formRuntimeXlfPath,
1111 'translatePropertyValueIfEmpty' => true
1115 $this->store->flushData($formRuntimeXlfPath);
1117 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions',
'getType'], [],
'',
false);
1119 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
1120 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1121 $mockFormRuntime->expects($this->any())->method(
'getType')->willReturn(
'Form');
1123 $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, [
'dummy'], [],
'',
false);
1125 $mockFormElement->_set(
'type',
'Text');
1126 $mockFormElement->_set(
'identifier', $formElementIdentifier);
1127 $mockFormElement->_set(
'label',
'');
1129 $expected =
'form-runtime-identifier submitButtonLabel EN';
1130 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementValue', $mockFormRuntime, [
'submitButtonLabel'], $mockFormRuntime));
1132 $expected =
'form-runtime-identifier form-element-identifierlabel EN';
1133 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementValue', $mockFormElement, [
'label'], $mockFormRuntime));
1141 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_01.xlf';
1143 $formRuntimeIdentifier =
'form-runtime-identifier-42';
1144 $formElementIdentifier =
'form-element-identifier';
1146 $formRuntimeRenderingOptions = [
1148 'translationFile' => $formRuntimeXlfPath,
1149 'translatePropertyValueIfEmpty' => true
1153 $this->store->flushData($formRuntimeXlfPath);
1155 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions',
'getType',
'getProperties'], [],
'',
false);
1157 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
1158 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1159 $mockFormRuntime->expects($this->any())->method(
'getType')->willReturn(
'Form');
1160 $mockFormRuntime->expects($this->any())->method(
'getProperties')->willReturn([]);
1162 $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, [
'dummy'], [],
'',
false);
1164 $mockFormElement->_set(
'type',
'Text');
1165 $mockFormElement->_set(
'identifier', $formElementIdentifier);
1166 $mockFormElement->_set(
'label',
'');
1167 $mockFormElement->_set(
'properties', []);
1169 $expected =
'form-runtime-identifier-42 error 123 EN';
1170 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementError', $mockFormRuntime, 123, [],
'default value', $mockFormRuntime));
1172 $expected =
'form-runtime-identifier-42 form-element-identifier error 123 EN';
1173 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementError', $mockFormElement, 123, [],
'default value', $mockFormRuntime));
1181 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_02.xlf';
1183 $formRuntimeIdentifier =
'form-runtime-identifier-42';
1184 $formElementIdentifier =
'form-element-identifier';
1186 $formRuntimeRenderingOptions = [
1187 '_originalIdentifier' =>
'form-runtime-identifier',
1189 'translationFile' => $formRuntimeXlfPath,
1190 'translatePropertyValueIfEmpty' => true
1194 $this->store->flushData($formRuntimeXlfPath);
1196 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions',
'getType',
'getProperties'], [],
'',
false);
1198 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
1199 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1200 $mockFormRuntime->expects($this->any())->method(
'getType')->willReturn(
'Form');
1201 $mockFormRuntime->expects($this->any())->method(
'getProperties')->willReturn([]);
1203 $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, [
'dummy'], [],
'',
false);
1205 $mockFormElement->_set(
'type',
'Text');
1206 $mockFormElement->_set(
'identifier', $formElementIdentifier);
1207 $mockFormElement->_set(
'label',
'');
1208 $mockFormElement->_set(
'properties', []);
1210 $expected =
'form-runtime-identifier error 123 EN';
1211 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementError', $mockFormRuntime, 123, [],
'default value', $mockFormRuntime));
1213 $expected =
'form-runtime-identifier form-element-identifier error 123 EN';
1214 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFormElementError', $mockFormElement, 123, [],
'default value', $mockFormRuntime));
1222 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_01.xlf';
1224 $formRuntimeIdentifier =
'form-runtime-identifier-42';
1226 $formRuntimeRenderingOptions = [
1228 'translationFile' => $formRuntimeXlfPath,
1229 'translatePropertyValueIfEmpty' => true
1233 $this->store->flushData($formRuntimeXlfPath);
1235 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions',
'getType',
'getProperties'], [],
'',
false);
1237 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
1238 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1239 $mockFormRuntime->expects($this->any())->method(
'getType')->willReturn(
'Form');
1240 $mockFormRuntime->expects($this->any())->method(
'getProperties')->willReturn([]);
1242 $expected =
'form-runtime-identifier-42 FooFinisher test EN';
1243 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFinisherOption', $mockFormRuntime,
'Foo',
'test',
'value', []));
1251 $formRuntimeXlfPath =
'EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_02.xlf';
1253 $formRuntimeIdentifier =
'form-runtime-identifier-42';
1255 $formRuntimeRenderingOptions = [
1256 '_originalIdentifier' =>
'form-runtime-identifier',
1258 'translationFile' => $formRuntimeXlfPath,
1259 'translatePropertyValueIfEmpty' => true
1263 $this->store->flushData($formRuntimeXlfPath);
1265 $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, [
'getIdentifier',
'getRenderingOptions',
'getType',
'getProperties'], [],
'',
false);
1267 $mockFormRuntime->expects($this->any())->method(
'getIdentifier')->willReturn($formRuntimeIdentifier);
1268 $mockFormRuntime->expects($this->any())->method(
'getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1269 $mockFormRuntime->expects($this->any())->method(
'getType')->willReturn(
'Form');
1270 $mockFormRuntime->expects($this->any())->method(
'getProperties')->willReturn([]);
1272 $expected =
'form-runtime-identifier FooFinisher test EN';
1273 $this->assertEquals($expected, $this->mockTranslationService->_call(
'translateFinisherOption', $mockFormRuntime,
'Foo',
'test',
'value', []));