‪TYPO3CMS  11.5
TranslationServiceTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\MockObject\MockObject;
21 use Prophecy\Argument;
22 use Prophecy\PhpUnit\ProphecyTrait;
29 use TYPO3\CMS\Core\Package\PackageManager;
37 use TYPO3\TestingFramework\Core\AccessibleObjectInterface;
38 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
39 
40 class ‪TranslationServiceTest extends UnitTestCase
41 {
42  use ProphecyTrait;
43 
47  protected ‪$resetSingletonInstances = true;
48 
53 
58 
62  protected ‪$store;
63 
67  public function ‪setUp(): void
68  {
69  $packageManagerProphecy = $this->prophesize(PackageManager::class);
70  parent::setUp();
71  $cacheManagerProphecy = $this->prophesize(CacheManager::class);
72  GeneralUtility::setSingletonInstance(CacheManager::class, $cacheManagerProphecy->reveal());
73  $cacheFrontendProphecy = $this->prophesize(FrontendInterface::class);
74  $cacheManagerProphecy->getCache('l10n')->willReturn($cacheFrontendProphecy->reveal());
75  $cacheFrontendProphecy->get(Argument::cetera())->willReturn(false);
76  $cacheFrontendProphecy->set(Argument::cetera())->willReturn(null);
77 
78  $localizationFactory = $this->prophesize(LocalizationFactory::class);
79  $localizationFactory
80  ->getParsedData('EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf', 'default')
81  ->willReturn(include __DIR__ . '/Fixtures/locallang_form.php');
82  $localizationFactory
83  ->getParsedData('EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf', 'de')
84  ->willReturn(include __DIR__ . '/Fixtures/de.locallang_form.php');
85  $localizationFactory
86  ->getParsedData('EXT:form/Tests/Unit/Service/Fixtures/locallang_additional_text.xlf', 'default')
87  ->willReturn(include __DIR__ . '/Fixtures/locallang_additional_text.php');
88  $localizationFactory
89  ->getParsedData('EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_01.xlf', 'default')
90  ->willReturn(include __DIR__ . '/Fixtures/locallang_ceuid_suffix_01.php');
91  $localizationFactory
92  ->getParsedData('EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_02.xlf', 'default')
93  ->willReturn(include __DIR__ . '/Fixtures/locallang_ceuid_suffix_02.php');
94  $localizationFactory
95  ->getParsedData('EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf', 'default')
96  ->willReturn(include __DIR__ . '/Fixtures/locallang_text.php');
97 
98  GeneralUtility::setSingletonInstance(LocalizationFactory::class, $localizationFactory->reveal());
99 
100  $this->mockConfigurationManager = $this->getAccessibleMock(ConfigurationManager::class, ['getConfiguration'], [], '', false);
101 
102  $this->mockTranslationService = $this->getAccessibleMock(TranslationService::class, [
103  'getConfigurationManager',
104  'getLanguageService',
105  ], [], '', false);
106 
107  $languageService = new ‪LanguageService(new ‪Locales(), new ‪LocalizationFactory(new ‪LanguageStore($packageManagerProphecy->reveal()), $cacheManagerProphecy->reveal()), $cacheFrontendProphecy->reveal());
108  $this->mockTranslationService
109  ->method('getLanguageService')
110  ->willReturn($languageService);
111 
112  $this->mockTranslationService->_set('configurationManager', $this->mockConfigurationManager);
113 
114  $this->store = GeneralUtility::makeInstance(LanguageStore::class, $packageManagerProphecy->reveal());
115  $this->store->initialize();
116  }
117 
122  {
123  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
124  $expected = 'FORM EN';
125 
126  $this->store->flushData($xlfPath);
127  self::assertEquals($expected, $this->mockTranslationService->_call(
128  'translate',
129  $xlfPath . ':element.Page.renderingOptions.nextButtonLabel'
130  ));
131  }
132 
137  {
138  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
139  $expected = 'FORM EN';
140 
141  $this->store->flushData($xlfPath);
142  self::assertEquals($expected, $this->mockTranslationService->_call(
143  'translate',
144  'LLL:' . $xlfPath . ':element.Page.renderingOptions.nextButtonLabel'
145  ));
146  }
147 
152  {
153  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
154  $expected = 'FORM EN';
155 
156  $this->store->flushData($xlfPath);
157  self::assertEquals($expected, $this->mockTranslationService->_call(
158  'translate',
159  $xlfPath . ':element.Page.renderingOptions.nextButtonLabel',
160  null,
161  null,
162  null,
163  'defaultValue'
164  ));
165  }
166 
171  {
172  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
173  $this->store->flushData($xlfPath);
174 
175  $expected = '';
176  self::assertEquals($expected, $this->mockTranslationService->_call(
177  'translate',
178  $xlfPath . ':element.Page.renderingOptions.nonExisting'
179  ));
180  }
181 
186  {
187  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
188  $this->store->flushData($xlfPath);
189 
190  $expected = 'defaultValue';
191  self::assertEquals($expected, $this->mockTranslationService->_call(
192  'translate',
193  $xlfPath . ':element.Page.renderingOptions.nonExisting',
194  null,
195  null,
196  null,
197  'defaultValue'
198  ));
199  }
200 
205  {
206  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
207  $expected = 'FORM DE';
208 
209  $this->store->flushData($xlfPath);
210  self::assertEquals($expected, $this->mockTranslationService->_call(
211  'translate',
212  $xlfPath . ':element.Page.renderingOptions.nextButtonLabel',
213  null,
214  null,
215  'de'
216  ));
217  }
218 
223  {
224  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
225  $expected = 'defaultValue';
226 
227  $this->store->flushData($xlfPath);
228  self::assertEquals($expected, $this->mockTranslationService->_call(
229  'translate',
230  $xlfPath . ':element.Page.renderingOptions.nonExisting',
231  null,
232  null,
233  'de',
234  'defaultValue'
235  ));
236  }
237 
242  {
243  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
244  $expected = '';
245 
246  $this->store->flushData($xlfPath);
247  self::assertEquals($expected, $this->mockTranslationService->_call(
248  'translate',
249  $xlfPath . ':element.Page.renderingOptions.nonExisting',
250  null,
251  null,
252  'de'
253  ));
254  }
255 
260  {
261  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
262  $expected = 'FORM EN';
263 
264  $this->store->flushData($xlfPath);
265  self::assertEquals($expected, $this->mockTranslationService->_call(
266  'translate',
267  'element.Page.renderingOptions.nextButtonLabel',
268  null,
269  $xlfPath
270  ));
271  }
272 
277  {
278  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
279  $expected = 'FORM EN';
280 
281  $this->store->flushData($xlfPath);
282  self::assertEquals($expected, $this->mockTranslationService->_call(
283  'translate',
284  'element.Page.renderingOptions.nextButtonLabel',
285  null,
286  'LLL:' . $xlfPath
287  ));
288  }
289 
293  public function ‪translateValuesRecursiveTranslateRecursive(): void
294  {
295  $xlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
296 
297  $input = [
298  'Stan' => [
299  'Steve' => 'Roger',
300  ],
301  [
302  'Francine' => [
303  'Klaus' => 'element.Page.renderingOptions.nextButtonLabel',
304  ],
305  ],
306  ];
307 
308  $expected = [
309  'Stan' => [
310  'Steve' => 'Roger',
311  ],
312  [
313  'Francine' => [
314  'Klaus' => 'FORM EN',
315  ],
316  ],
317  ];
318 
319  $this->store->flushData($xlfPaths);
320  self::assertEquals($expected, $this->mockTranslationService->_call(
321  'translateValuesRecursive',
322  $input,
323  $xlfPaths
324  ));
325  }
326 
331  {
332  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
333  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
334 
335  $formRuntimeIdentifier = 'form-runtime-identifier';
336  $formElementIdentifier = 'form-element-identifier';
337 
338  $formRuntimeRenderingOptions = [
339  'translation' => [
340  'translationFiles' => $formRuntimeXlfPaths,
341  'translatePropertyValueIfEmpty' => true,
342  ],
343  ];
344 
345  $formElementRenderingOptions = [
346  'translation' => [
347  'translationFiles' => $textElementXlfPaths,
348  'translatePropertyValueIfEmpty' => true,
349  ],
350  ];
351 
352  $expected = 'form-element-identifier LABEL EN';
353 
354  $this->store->flushData($formRuntimeXlfPaths);
355  $this->store->flushData($textElementXlfPaths);
356 
357  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
358 
359  $mockFormElement->_set('type', 'Text');
360  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
361  $mockFormElement->_set('identifier', $formElementIdentifier);
362  $mockFormElement->_set('label', 'some label');
363 
364  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
365  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
366  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
367 
368  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
369  }
370 
375  {
376  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
377  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
378 
379  $formRuntimeIdentifier = 'form-runtime-identifier';
380  $formElementIdentifier = 'form-element-identifier';
381 
382  $formRuntimeRenderingOptions = [
383  'translation' => [
384  'translationFiles' => $formRuntimeXlfPaths,
385  'translatePropertyValueIfEmpty' => true,
386  ],
387  ];
388 
389  $formElementRenderingOptions = [
390  'translation' => [
391  'translationFiles' => $textElementXlfPaths,
392  'translatePropertyValueIfEmpty' => true,
393  ],
394  ];
395 
396  $expected = 'form-element-identifier LABEL EN';
397 
398  $this->store->flushData($formRuntimeXlfPaths);
399  $this->store->flushData($textElementXlfPaths);
400 
401  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
402 
403  $mockFormElement->_set('type', 'Text');
404  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
405  $mockFormElement->_set('identifier', $formElementIdentifier);
406  $mockFormElement->_set('label', '');
407 
408  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
409  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
410  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
411 
412  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
413  }
414 
419  {
420  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
421  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
422 
423  $formRuntimeIdentifier = 'form-runtime-identifier';
424  $formElementIdentifier = 'form-element-identifier';
425 
426  $formRuntimeRenderingOptions = [
427  'translation' => [
428  'translationFiles' => $formRuntimeXlfPaths,
429  'translatePropertyValueIfEmpty' => true,
430  ],
431  ];
432 
433  $formElementRenderingOptions = [
434  'translation' => [
435  'translationFiles' => $textElementXlfPaths,
436  'translatePropertyValueIfEmpty' => false,
437  ],
438  ];
439 
440  $expected = '';
441 
442  $this->store->flushData($formRuntimeXlfPaths);
443  $this->store->flushData($textElementXlfPaths);
444 
445  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
446 
447  $mockFormElement->_set('type', 'Text');
448  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
449  $mockFormElement->_set('identifier', $formElementIdentifier);
450  $mockFormElement->_set('label', '');
451 
452  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
453  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
454  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
455 
456  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
457  }
458 
463  {
464  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
465  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
466 
467  $formRuntimeIdentifier = 'another-form-runtime-identifier';
468  $formElementIdentifier = 'form-element-identifier';
469 
470  $formRuntimeRenderingOptions = [
471  'translation' => [
472  'translationFiles' => $formRuntimeXlfPaths,
473  'translatePropertyValueIfEmpty' => true,
474  ],
475  ];
476 
477  $formElementRenderingOptions = [
478  'translation' => [
479  'translationFiles' => $textElementXlfPaths,
480  'translatePropertyValueIfEmpty' => true,
481  ],
482  ];
483 
484  $expected = 'form-element-identifier LABEL EN 1';
485 
486  $this->store->flushData($formRuntimeXlfPaths);
487  $this->store->flushData($textElementXlfPaths);
488 
489  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
490 
491  $mockFormElement->_set('type', 'Text');
492  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
493  $mockFormElement->_set('identifier', $formElementIdentifier);
494  $mockFormElement->_set('label', 'some label');
495 
496  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
497  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
498  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
499 
500  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
501  }
502 
507  {
508  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
509  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
510 
511  $formRuntimeIdentifier = 'another-form-runtime-identifier';
512  $formElementIdentifier = 'another-form-element-identifier';
513 
514  $formRuntimeRenderingOptions = [
515  'translation' => [
516  'translationFiles' => $formRuntimeXlfPaths,
517  'translatePropertyValueIfEmpty' => true,
518  ],
519  ];
520 
521  $formElementRenderingOptions = [
522  'translation' => [
523  'translationFiles' => $textElementXlfPaths,
524  'translatePropertyValueIfEmpty' => true,
525  ],
526  ];
527 
528  $expected = 'form-element-identifier LABEL EN 2';
529 
530  $this->store->flushData($formRuntimeXlfPaths);
531  $this->store->flushData($textElementXlfPaths);
532 
533  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
534 
535  $mockFormElement->_set('type', 'Text');
536  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
537  $mockFormElement->_set('identifier', $formElementIdentifier);
538  $mockFormElement->_set('label', 'some label');
539 
540  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
541  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
542  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
543 
544  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
545  }
546 
551  {
552  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
553  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
554 
555  $formRuntimeIdentifier = 'form-runtime-identifier';
556  $formElementIdentifier = 'form-element-identifier';
557 
558  $formRuntimeRenderingOptions = [
559  'translation' => [
560  'translationFiles' => $formRuntimeXlfPaths,
561  'translatePropertyValueIfEmpty' => true,
562  ],
563  ];
564 
565  $formElementRenderingOptions = [
566  'translation' => [
567  'translationFiles' => $textElementXlfPaths,
568  'translatePropertyValueIfEmpty' => true,
569  ],
570  ];
571  $formElementProperties = [
572  'placeholder' => 'placeholder',
573  ];
574 
575  $expected = 'form-element-identifier PLACEHOLDER EN';
576 
577  $this->store->flushData($formRuntimeXlfPaths);
578  $this->store->flushData($textElementXlfPaths);
579 
580  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
581 
582  $mockFormElement->_set('type', 'Text');
583  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
584  $mockFormElement->_set('identifier', $formElementIdentifier);
585  $mockFormElement->_set('properties', $formElementProperties);
586 
587  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
588  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
589  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
590 
591  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['placeholder'], $mockFormRuntime));
592  }
593 
598  {
599  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
600  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
601 
602  $formRuntimeIdentifier = 'another-form-runtime-identifier';
603  $formElementIdentifier = 'another-form-element-identifier';
604 
605  $formRuntimeRenderingOptions = [
606  'translation' => [
607  'translationFiles' => $formRuntimeXlfPaths,
608  'translatePropertyValueIfEmpty' => true,
609  ],
610  ];
611 
612  $formElementRenderingOptions = [
613  'translation' => [
614  'translationFiles' => $textElementXlfPaths,
615  'translatePropertyValueIfEmpty' => true,
616  ],
617  ];
618  $formElementProperties = [
619  'placeholder' => 'placeholder',
620  ];
621 
622  $expected = 'placeholder';
623 
624  $this->store->flushData($formRuntimeXlfPaths);
625  $this->store->flushData($textElementXlfPaths);
626 
627  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
628 
629  $mockFormElement->_set('type', 'Text');
630  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
631  $mockFormElement->_set('identifier', $formElementIdentifier);
632  $mockFormElement->_set('properties', $formElementProperties);
633 
634  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
635  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
636  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
637 
638  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['placeholder'], $mockFormRuntime));
639  }
640 
645  {
646  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
647  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
648 
649  $formRuntimeIdentifier = 'form-runtime-identifier';
650  $formElementIdentifier = 'form-element-identifier-page';
651 
652  $formRuntimeRenderingOptions = [
653  'translation' => [
654  'translationFiles' => $formRuntimeXlfPaths,
655  'translatePropertyValueIfEmpty' => true,
656  ],
657  ];
658 
659  $formElementRenderingOptions = [
660  'nextButtonLabel' => 'next button label',
661  'translation' => [
662  'translationFiles' => $textElementXlfPaths,
663  'translatePropertyValueIfEmpty' => true,
664  ],
665  ];
666 
667  $expected = 'form-element-identifier nextButtonLabel EN';
668 
669  $this->store->flushData($formRuntimeXlfPaths);
670  $this->store->flushData($textElementXlfPaths);
671 
672  $mockFormElement = $this->getAccessibleMock(Page::class, ['dummy'], [], '', false);
673 
674  $mockFormElement->_set('type', 'Page');
675  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
676  $mockFormElement->_set('identifier', $formElementIdentifier);
677 
678  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
679  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
680  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
681 
682  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['nextButtonLabel'], $mockFormRuntime));
683  }
684 
689  {
690  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
691  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
692 
693  $formRuntimeIdentifier = 'form-runtime-identifier';
694  $formElementIdentifier = 'options-form-element-identifier';
695 
696  $formRuntimeRenderingOptions = [
697  'translation' => [
698  'translationFiles' => $formRuntimeXlfPaths,
699  'translatePropertyValueIfEmpty' => true,
700  ],
701  ];
702 
703  $formElementRenderingOptions = [
704  'translation' => [
705  'translationFiles' => $textElementXlfPaths,
706  'translatePropertyValueIfEmpty' => true,
707  ],
708  ];
709  $formElementProperties = [
710  'options' => [
711  'optionValue1' => 'optionLabel1',
712  'optionValue2' => 'optionLabel2',
713  ],
714  ];
715 
716  $expected = [
717  'optionValue1' => 'options-form-element-identifier option 1 EN',
718  'optionValue2' => 'options-form-element-identifier option 2 EN',
719  ];
720 
721  $this->store->flushData($formRuntimeXlfPaths);
722  $this->store->flushData($textElementXlfPaths);
723 
724  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
725 
726  $mockFormElement->_set('type', 'Text');
727  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
728  $mockFormElement->_set('identifier', $formElementIdentifier);
729  $mockFormElement->_set('properties', $formElementProperties);
730 
731  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
732  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
733  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
734 
735  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['options'], $mockFormRuntime));
736  }
737 
742  {
743  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
744  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
745 
746  $formRuntimeIdentifier = 'another-form-runtime-identifier';
747  $formElementIdentifier = 'options-form-element-identifier';
748 
749  $formRuntimeRenderingOptions = [
750  'translation' => [
751  'translationFiles' => $formRuntimeXlfPaths,
752  'translatePropertyValueIfEmpty' => true,
753  ],
754  ];
755 
756  $formElementRenderingOptions = [
757  'translation' => [
758  'translationFiles' => $textElementXlfPaths,
759  'translatePropertyValueIfEmpty' => true,
760  ],
761  ];
762  $formElementProperties = [
763  'options' => [
764  'optionValue1' => 'optionLabel1',
765  'optionValue2' => 'optionLabel2',
766  ],
767  ];
768 
769  $expected = [
770  'optionValue1' => 'options-form-element-identifier option 1 EN',
771  'optionValue2' => 'options-form-element-identifier option 2 EN',
772  ];
773 
774  $this->store->flushData($formRuntimeXlfPaths);
775  $this->store->flushData($textElementXlfPaths);
776 
777  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
778 
779  $mockFormElement->_set('type', 'Text');
780  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
781  $mockFormElement->_set('identifier', $formElementIdentifier);
782  $mockFormElement->_set('properties', $formElementProperties);
783 
784  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
785  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
786  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
787 
788  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['options'], $mockFormRuntime));
789  }
790 
795  {
796  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
797  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
798 
799  $formRuntimeIdentifier = 'form-runtime-identifier';
800  $finisherIdentifier = 'SaveToDatabaseFinisher';
801 
802  $formRuntimeRenderingOptions = [
803  'translation' => [
804  'translationFiles' => $formRuntimeXlfPaths,
805  'translatePropertyValueIfEmpty' => true,
806  ],
807  ];
808 
809  $finisherRenderingOptions = [
810  'translationFiles' => $textElementXlfPaths,
811  'translatePropertyValueIfEmpty' => true,
812  ];
813 
814  $expected = 'form-element-identifier SaveToDatabase subject EN';
815 
816  $this->store->flushData($formRuntimeXlfPaths);
817  $this->store->flushData($textElementXlfPaths);
818 
819  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
820  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
821  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
822 
823  self::assertEquals($expected, $this->mockTranslationService->_call('translateFinisherOption', $mockFormRuntime, $finisherIdentifier, 'subject', 'subject value', $finisherRenderingOptions));
824  }
825 
830  {
831  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
832  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
833 
834  $formRuntimeIdentifier = 'another-form-runtime-identifier';
835  $finisherIdentifier = 'SaveToDatabaseFinisher';
836 
837  $formRuntimeRenderingOptions = [
838  'translation' => [
839  'translationFiles' => $formRuntimeXlfPaths,
840  'translatePropertyValueIfEmpty' => true,
841  ],
842  ];
843 
844  $finisherRenderingOptions = [
845  'translationFiles' => $textElementXlfPaths,
846  'translatePropertyValueIfEmpty' => true,
847  ];
848 
849  $expected = 'form-element-identifier SaveToDatabase subject EN 1';
850 
851  $this->store->flushData($formRuntimeXlfPaths);
852  $this->store->flushData($textElementXlfPaths);
853 
854  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
855  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
856  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
857 
858  self::assertEquals($expected, $this->mockTranslationService->_call('translateFinisherOption', $mockFormRuntime, $finisherIdentifier, 'subject', 'subject value', $finisherRenderingOptions));
859  }
860 
865  {
866  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
867  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
868 
869  $formRuntimeIdentifier = 'my-form-runtime-identifier';
870  $formElementIdentifier = 'my-form-element-identifier';
871 
872  $formRuntimeRenderingOptions = [
873  'translation' => [
874  'translationFiles' => $formRuntimeXlfPaths,
875  'translatePropertyValueIfEmpty' => true,
876  ],
877  ];
878 
879  $formElementRenderingOptions = [];
880 
881  $expected = 'my-form-runtime-identifier my-form-element-identifier LABEL EN';
882 
883  $this->store->flushData($formRuntimeXlfPaths);
884  $this->store->flushData($textElementXlfPaths);
885 
886  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
887 
888  $mockFormElement->_set('type', 'Text');
889  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
890  $mockFormElement->_set('identifier', $formElementIdentifier);
891  $mockFormElement->_set('label', 'some label');
892 
893  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
894  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
895  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
896 
897  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
898  }
899 
904  {
905  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
906 
907  $this->store->flushData($formRuntimeXlfPaths);
908 
909  $formRuntime = $this->prophesize(FormRuntime::class);
910  $formRuntime->getIdentifier()->willReturn('my-form-runtime-identifier');
911  $formRuntime->getRenderingOptions()->willReturn([
912  'translation' => [
913  'translationFiles' => $formRuntimeXlfPaths,
914  'translatePropertyValueIfEmpty' => true,
915  ],
916  ]);
917 
918  $element = $this->prophesize(RootRenderableInterface::class);
919  $element->getIdentifier()->willReturn('my-form-element-with-translation-arguments');
920  $element->getType()->willReturn(RootRenderableInterface::class);
921  $element->getLabel()->willReturn('See %s or %s');
922  $element->getRenderingOptions()->willReturn([
923  'translation' => [
924  'arguments' => [
925  'label' => [
926  'this',
927  'that',
928  ],
929  ],
930  ],
931  ]);
932 
933  $expected = 'See this or that';
934  $result = $this->mockTranslationService->_call('translateFormElementValue', $element->reveal(), ['label'], $formRuntime->reveal());
935 
936  self::assertEquals($expected, $result);
937  }
938 
943  {
944  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
945  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
946 
947  $formRuntimeIdentifier = 'my-form-runtime-identifier';
948  $finisherIdentifier = 'SaveToDatabaseFinisher';
949 
950  $formRuntimeRenderingOptions = [
951  'translation' => [
952  'translationFiles' => $formRuntimeXlfPaths,
953  'translatePropertyValueIfEmpty' => true,
954  ],
955  ];
956 
957  $finisherRenderingOptions = [];
958 
959  $expected = 'my-form-runtime-identifier form-element-identifier SaveToDatabase subject EN';
960 
961  $this->store->flushData($formRuntimeXlfPaths);
962  $this->store->flushData($textElementXlfPaths);
963 
964  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
965  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
966  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
967 
968  self::assertEquals($expected, $this->mockTranslationService->_call('translateFinisherOption', $mockFormRuntime, $finisherIdentifier, 'subject', 'subject value', $finisherRenderingOptions));
969  }
970 
975  {
976  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
977 
978  $this->store->flushData($formRuntimeXlfPaths);
979 
980  $formRuntime = $this->prophesize(FormRuntime::class);
981  $formRuntime->getIdentifier()->willReturn('my-form-runtime-identifier');
982  $formRuntime->getRenderingOptions()->willReturn([
983  'translation' => [
984  'translationFiles' => $formRuntimeXlfPaths,
985  'translatePropertyValueIfEmpty' => true,
986  ],
987  ]);
988  $renderingOptions = [
989  'arguments' => [
990  'subject' => [
991  'awesome',
992  ],
993  ],
994  ];
995 
996  $expected = 'My awesome subject';
997  $result = $this->mockTranslationService->_call('translateFinisherOption', $formRuntime->reveal(), 'EmailToReceiverWithTranslationArguments', 'subject', 'My %s subject', $renderingOptions);
998 
999  self::assertEquals($expected, $result);
1000  }
1001 
1006  {
1007  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
1008  $textElementXlfPaths = [
1009  10 => 'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf',
1010  20 => 'EXT:form/Tests/Unit/Service/Fixtures/locallang_additional_text.xlf',
1011  ];
1012 
1013  $formRuntimeIdentifier = 'form-runtime-identifier';
1014  $formElementIdentifier = 'form-element-identifier';
1015 
1016  $formRuntimeRenderingOptions = [
1017  'translation' => [
1018  'translationFiles' => $formRuntimeXlfPaths,
1019  'translatePropertyValueIfEmpty' => true,
1020  ],
1021  ];
1022 
1023  $formElementRenderingOptions = [
1024  'translation' => [
1025  'translationFiles' => $textElementXlfPaths,
1026  'translatePropertyValueIfEmpty' => true,
1027  ],
1028  ];
1029 
1030  $expected = 'form-element-identifier ADDITIONAL LABEL EN';
1031 
1032  $this->store->flushData($formRuntimeXlfPaths[0]);
1033 
1034  foreach ($textElementXlfPaths as $textElementXlfPath) {
1035  $this->store->flushData($textElementXlfPath);
1036  }
1037 
1038  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
1039 
1040  $mockFormElement->_set('type', 'Text');
1041  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
1042  $mockFormElement->_set('identifier', $formElementIdentifier);
1043  $mockFormElement->_set('label', 'some label');
1044 
1045  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
1046  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
1047  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1048 
1049  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
1050  }
1051 
1056  {
1057  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_01.xlf'];
1058 
1059  $formRuntimeIdentifier = 'form-runtime-identifier-42';
1060  $formElementIdentifier = 'form-element-identifier';
1061 
1062  $formRuntimeRenderingOptions = [
1063  'submitButtonLabel' => '',
1064  'translation' => [
1065  'translationFiles' => $formRuntimeXlfPaths,
1066  'translatePropertyValueIfEmpty' => true,
1067  ],
1068  ];
1069 
1070  $this->store->flushData($formRuntimeXlfPaths);
1071 
1072  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType'], [], '', false);
1073 
1074  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
1075  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1076  $mockFormRuntime->method('getType')->willReturn('Form');
1077 
1078  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
1079 
1080  $mockFormElement->_set('type', 'Text');
1081  $mockFormElement->_set('identifier', $formElementIdentifier);
1082  $mockFormElement->_set('label', '');
1083 
1084  $expected = 'form-runtime-identifier-42 submitButtonLabel EN';
1085  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormRuntime, ['submitButtonLabel'], $mockFormRuntime));
1086 
1087  $expected = 'form-runtime-identifier-42 form-element-identifierlabel EN';
1088  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
1089  }
1090 
1095  {
1096  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_02.xlf'];
1097 
1098  $formRuntimeIdentifier = 'form-runtime-identifier-42';
1099  $formElementIdentifier = 'form-element-identifier';
1100 
1101  $formRuntimeRenderingOptions = [
1102  'submitButtonLabel' => '',
1103  '_originalIdentifier' => 'form-runtime-identifier',
1104  'translation' => [
1105  'translationFiles' => $formRuntimeXlfPaths,
1106  'translatePropertyValueIfEmpty' => true,
1107  ],
1108  ];
1109 
1110  $this->store->flushData($formRuntimeXlfPaths);
1111 
1112  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType'], [], '', false);
1113 
1114  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
1115  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1116  $mockFormRuntime->method('getType')->willReturn('Form');
1117 
1118  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
1119 
1120  $mockFormElement->_set('type', 'Text');
1121  $mockFormElement->_set('identifier', $formElementIdentifier);
1122  $mockFormElement->_set('label', '');
1123 
1124  $expected = 'form-runtime-identifier submitButtonLabel EN';
1125  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormRuntime, ['submitButtonLabel'], $mockFormRuntime));
1126 
1127  $expected = 'form-runtime-identifier form-element-identifierlabel EN';
1128  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
1129  }
1130 
1135  {
1136  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_01.xlf'];
1137 
1138  $formRuntimeIdentifier = 'form-runtime-identifier-42';
1139  $formElementIdentifier = 'form-element-identifier';
1140 
1141  $formRuntimeRenderingOptions = [
1142  'translation' => [
1143  'translationFiles' => $formRuntimeXlfPaths,
1144  'translatePropertyValueIfEmpty' => true,
1145  ],
1146  ];
1147 
1148  $this->store->flushData($formRuntimeXlfPaths);
1149 
1150  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType', 'getProperties'], [], '', false);
1151 
1152  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
1153  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1154  $mockFormRuntime->method('getType')->willReturn('Form');
1155  $mockFormRuntime->method('getProperties')->willReturn([]);
1156 
1157  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
1158 
1159  $mockFormElement->_set('type', 'Text');
1160  $mockFormElement->_set('identifier', $formElementIdentifier);
1161  $mockFormElement->_set('label', '');
1162  $mockFormElement->_set('properties', []);
1163 
1164  $expected = 'form-runtime-identifier-42 error 123 EN';
1165  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementError', $mockFormRuntime, 123, [], 'default value', $mockFormRuntime));
1166 
1167  $expected = 'form-runtime-identifier-42 form-element-identifier error 123 EN';
1168  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementError', $mockFormElement, 123, [], 'default value', $mockFormRuntime));
1169  }
1170 
1175  {
1176  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_02.xlf'];
1177 
1178  $formRuntimeIdentifier = 'form-runtime-identifier-42';
1179  $formElementIdentifier = 'form-element-identifier';
1180 
1181  $formRuntimeRenderingOptions = [
1182  '_originalIdentifier' => 'form-runtime-identifier',
1183  'translation' => [
1184  'translationFiles' => $formRuntimeXlfPaths,
1185  'translatePropertyValueIfEmpty' => true,
1186  ],
1187  ];
1188 
1189  $this->store->flushData($formRuntimeXlfPaths);
1190 
1191  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType', 'getProperties'], [], '', false);
1192 
1193  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
1194  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1195  $mockFormRuntime->method('getType')->willReturn('Form');
1196  $mockFormRuntime->method('getProperties')->willReturn([]);
1197 
1198  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
1199 
1200  $mockFormElement->_set('type', 'Text');
1201  $mockFormElement->_set('identifier', $formElementIdentifier);
1202  $mockFormElement->_set('label', '');
1203  $mockFormElement->_set('properties', []);
1204 
1205  $expected = 'form-runtime-identifier error 123 EN';
1206  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementError', $mockFormRuntime, 123, [], 'default value', $mockFormRuntime));
1207 
1208  $expected = 'form-runtime-identifier form-element-identifier error 123 EN';
1209  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementError', $mockFormElement, 123, [], 'default value', $mockFormRuntime));
1210  }
1211 
1216  {
1217  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_01.xlf'];
1218 
1219  $formRuntimeIdentifier = 'form-runtime-identifier-42';
1220 
1221  $formRuntimeRenderingOptions = [
1222  'translation' => [
1223  'translationFiles' => $formRuntimeXlfPaths,
1224  'translatePropertyValueIfEmpty' => true,
1225  ],
1226  ];
1227 
1228  $this->store->flushData($formRuntimeXlfPaths);
1229 
1230  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType', 'getProperties'], [], '', false);
1231 
1232  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
1233  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1234  $mockFormRuntime->method('getType')->willReturn('Form');
1235  $mockFormRuntime->method('getProperties')->willReturn([]);
1236 
1237  $expected = 'form-runtime-identifier-42 FooFinisher test EN';
1238  self::assertEquals($expected, $this->mockTranslationService->_call('translateFinisherOption', $mockFormRuntime, 'Foo', 'test', 'value', []));
1239  }
1240 
1245  {
1246  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_02.xlf'];
1247 
1248  $formRuntimeIdentifier = 'form-runtime-identifier-42';
1249 
1250  $formRuntimeRenderingOptions = [
1251  '_originalIdentifier' => 'form-runtime-identifier',
1252  'translation' => [
1253  'translationFiles' => $formRuntimeXlfPaths,
1254  'translatePropertyValueIfEmpty' => true,
1255  ],
1256  ];
1257 
1258  $this->store->flushData($formRuntimeXlfPaths);
1259 
1260  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType', 'getProperties'], [], '', false);
1261 
1262  $mockFormRuntime->method('getIdentifier')->willReturn($formRuntimeIdentifier);
1263  $mockFormRuntime->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1264  $mockFormRuntime->method('getType')->willReturn('Form');
1265  $mockFormRuntime->method('getProperties')->willReturn([]);
1266 
1267  $expected = 'form-runtime-identifier FooFinisher test EN';
1268  self::assertEquals($expected, $this->mockTranslationService->_call('translateFinisherOption', $mockFormRuntime, 'Foo', 'test', 'value', []));
1269  }
1270 }
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\$mockTranslationService
‪TranslationService MockObject AccessibleObjectInterface $mockTranslationService
Definition: TranslationServiceTest.php:53
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementErrorTranslateErrorFromFormWithContentElementUidIfFormContainsNoOriginalIdentifier
‪translateFormElementErrorTranslateErrorFromFormWithContentElementUidIfFormContainsNoOriginalIdentifier()
Definition: TranslationServiceTest.php:1129
‪TYPO3\CMS\Form\Service\TranslationService
Definition: TranslationService.php:45
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\supportsArgumentsForFinisherOptionTranslations
‪supportsArgumentsForFinisherOptionTranslations()
Definition: TranslationServiceTest.php:969
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsExistingDefaultLanguageKeyIfDefaultLanguageKeyIsRequestedAndExtFilePathIsGiven
‪translateReturnsExistingDefaultLanguageKeyIfDefaultLanguageKeyIsRequestedAndExtFilePathIsGiven()
Definition: TranslationServiceTest.php:254
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\setUp
‪setUp()
Definition: TranslationServiceTest.php:62
‪TYPO3\CMS\Core\Localization\LocalizationFactory
Definition: LocalizationFactory.php:31
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateLabelForConcreteFormElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateLabelForConcreteFormElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:457
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsExistingDefaultLanguageKeyIfDefaultLanguageKeyIsRequestedAndLLLExtFilePathIsGiven
‪translateReturnsExistingDefaultLanguageKeyIfDefaultLanguageKeyIsRequestedAndLLLExtFilePathIsGiven()
Definition: TranslationServiceTest.php:271
‪TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement
Definition: GenericFormElement.php:29
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsExistingDefaultLanguageKeyIfFullLLLExtDefaultLanguageKeyIsRequested
‪translateReturnsExistingDefaultLanguageKeyIfFullLLLExtDefaultLanguageKeyIsRequested()
Definition: TranslationServiceTest.php:131
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsExistingLanguageKeyForLanguageIfExtPathLanguageKeyIsRequested
‪translateReturnsExistingLanguageKeyForLanguageIfExtPathLanguageKeyIsRequested()
Definition: TranslationServiceTest.php:199
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFinisherOptionTranslateOptionFromFormWithContentElementUidIfFormContainsOriginalIdentifier
‪translateFinisherOptionTranslateOptionFromFormWithContentElementUidIfFormContainsOriginalIdentifier()
Definition: TranslationServiceTest.php:1239
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementTranslateFormWithContentElementUidIfFormContainsNoOriginalIdentifier
‪translateFormElementTranslateFormWithContentElementUidIfFormContainsNoOriginalIdentifier()
Definition: TranslationServiceTest.php:1050
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementTranslateFormWithContentElementUidIfFormContainsOriginalIdentifier
‪translateFormElementTranslateFormWithContentElementUidIfFormContainsOriginalIdentifier()
Definition: TranslationServiceTest.php:1089
‪TYPO3\CMS\Core\Localization\Locales
Definition: Locales.php:30
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsDefaultValueIfNonExistingDefaultLanguageKeyIsRequestedAndDefaultValueIsGiven
‪translateReturnsDefaultValueIfNonExistingDefaultLanguageKeyIsRequestedAndDefaultValueIsGiven()
Definition: TranslationServiceTest.php:180
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateLabelFromAdditionalTranslationForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateLabelFromAdditionalTranslationForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:1000
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFinisherOptionTranslateOptionIfFinisherTranslationOptionsContainsATranslationFilesAndFinisherOptionIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFinisherOptionTranslateOptionIfFinisherTranslationOptionsContainsATranslationFilesAndFinisherOptionIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:824
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueNotTranslatePropertyForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementPropertyIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationNotExists
‪translateFormElementValueNotTranslatePropertyForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementPropertyIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationNotExists()
Definition: TranslationServiceTest.php:592
‪TYPO3\CMS\Form\Domain\Model\FormElements\Page
Definition: Page.php:44
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFinisherOptionTranslateOptionForConcreteFormIfFinisherTranslationOptionsContainsATranslationFilesAndFinisherOptionIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFinisherOptionTranslateOptionForConcreteFormIfFinisherTranslationOptionsContainsATranslationFilesAndFinisherOptionIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:789
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateLabelForConcreteFormAndConcreteElementFromFormRuntimeTranslationFilesIfElementRenderingOptionsContainsNoTranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateLabelForConcreteFormAndConcreteElementFromFormRuntimeTranslationFilesIfElementRenderingOptionsContainsNoTranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:859
‪TYPO3\CMS\Core\Localization\LanguageStore
Definition: LanguageStore.php:29
‪TYPO3\CMS\Extbase\Configuration\ConfigurationManager
Definition: ConfigurationManager.php:33
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\$resetSingletonInstances
‪bool $resetSingletonInstances
Definition: TranslationServiceTest.php:45
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFinisherOptionTranslateOptionForConcreteFormFromFormRuntimeIfFinisherTranslationOptionsContainsNoTranslationFilesAndFinisherOptionIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFinisherOptionTranslateOptionForConcreteFormFromFormRuntimeIfFinisherTranslationOptionsContainsNoTranslationFilesAndFinisherOptionIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:937
‪TYPO3\CMS\Form\Domain\Model\Renderable\RootRenderableInterface
Definition: RootRenderableInterface.php:31
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueNotTranslateLabelForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsEmptyAndPropertyShouldNotBeTranslatedAndTranslationExists
‪translateFormElementValueNotTranslateLabelForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsEmptyAndPropertyShouldNotBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:413
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsExistingDefaultLanguageKeyIfFullExtDefaultLanguageKeyIsRequested
‪translateReturnsExistingDefaultLanguageKeyIfFullExtDefaultLanguageKeyIsRequested()
Definition: TranslationServiceTest.php:116
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\$store
‪LanguageStore $store
Definition: TranslationServiceTest.php:57
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateOptionsPropertyForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementOptionsPropertyIsAnArrayAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateOptionsPropertyForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementOptionsPropertyIsAnArrayAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:683
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateLabelForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateLabelForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:369
‪TYPO3\CMS\Core\Cache\CacheManager
Definition: CacheManager.php:36
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsExistingDefaultLanguageKeyIfDefaultLanguageKeyIsRequestedAndDefaultValueIsGiven
‪translateReturnsExistingDefaultLanguageKeyIfDefaultLanguageKeyIsRequestedAndDefaultValueIsGiven()
Definition: TranslationServiceTest.php:146
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateLabelForFormElementTypeIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateLabelForFormElementTypeIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:501
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementErrorTranslateErrorFromFormWithContentElementUidIfFormContainsOriginalIdentifier
‪translateFormElementErrorTranslateErrorFromFormWithContentElementUidIfFormContainsOriginalIdentifier()
Definition: TranslationServiceTest.php:1169
‪TYPO3\CMS\Core\Cache\Frontend\FrontendInterface
Definition: FrontendInterface.php:22
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\supportsArgumentsForFormElementValueTranslations
‪supportsArgumentsForFormElementValueTranslations()
Definition: TranslationServiceTest.php:898
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateRenderingOptionForConcreteFormAndConcreteSectionElementIfElementRenderingOptionsContainsATranslationFilesAndElementRenderingOptionIsNotEmptyAndRenderingOptionShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateRenderingOptionForConcreteFormAndConcreteSectionElementIfElementRenderingOptionsContainsATranslationFilesAndElementRenderingOptionIsNotEmptyAndRenderingOptionShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:639
‪TYPO3\CMS\Form\Domain\Runtime\FormRuntime
Definition: FormSession.php:18
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFinisherOptionTranslateOptionFromFormWithContentElementUidIfFormContainsNoOriginalIdentifier
‪translateFinisherOptionTranslateOptionFromFormWithContentElementUidIfFormContainsNoOriginalIdentifier()
Definition: TranslationServiceTest.php:1210
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsEmptyStringIfNonExistingLanguageKeyForLanguageIsRequested
‪translateReturnsEmptyStringIfNonExistingLanguageKeyForLanguageIsRequested()
Definition: TranslationServiceTest.php:236
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:42
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsEmptyStringIfNonExistingDefaultLanguageKeyIsRequested
‪translateReturnsEmptyStringIfNonExistingDefaultLanguageKeyIsRequested()
Definition: TranslationServiceTest.php:165
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateValuesRecursiveTranslateRecursive
‪translateValuesRecursiveTranslateRecursive()
Definition: TranslationServiceTest.php:288
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\$mockConfigurationManager
‪ConfigurationManager MockObject AccessibleObjectInterface $mockConfigurationManager
Definition: TranslationServiceTest.php:49
‪TYPO3\CMS\Form\Tests\Unit\Service
Definition: TranslationServiceTest.php:18
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslatePropertyForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementPropertyIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslatePropertyForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementPropertyIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:545
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsDefaultValueIfNonExistingLanguageKeyForLanguageIsRequestedAndDefaultValueIsGiven
‪translateReturnsDefaultValueIfNonExistingLanguageKeyForLanguageIsRequestedAndDefaultValueIsGiven()
Definition: TranslationServiceTest.php:217
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateLabelForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateLabelForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:325
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest
Definition: TranslationServiceTest.php:41
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateOptionsPropertyForConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementOptionsPropertyIsAnArrayAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateOptionsPropertyForConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementOptionsPropertyIsAnArrayAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:736