‪TYPO3CMS  10.4
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 Prophecy\Argument;
34 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
35 
39 class ‪TranslationServiceTest extends UnitTestCase
40 {
44  protected ‪$resetSingletonInstances = true;
45 
50 
55 
59  protected ‪$store;
60 
64  public function ‪setUp(): void
65  {
66  parent::setUp();
67  $this->resetSingletonInstances = true;
68  $cacheManagerProphecy = $this->prophesize(CacheManager::class);
69  GeneralUtility::setSingletonInstance(CacheManager::class, $cacheManagerProphecy->reveal());
70  $cacheFrontendProphecy = $this->prophesize(FrontendInterface::class);
71  $cacheManagerProphecy->getCache('l10n')->willReturn($cacheFrontendProphecy->reveal());
72  $cacheFrontendProphecy->get(Argument::cetera())->willReturn(false);
73  $cacheFrontendProphecy->set(Argument::cetera())->willReturn(null);
74 
75  $localizationFactory = $this->prophesize(LocalizationFactory::class);
76  $localizationFactory
77  ->getParsedData('EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf', 'default')
78  ->willReturn(include __DIR__ . '/Fixtures/locallang_form.php');
79  $localizationFactory
80  ->getParsedData('EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf', 'de')
81  ->willReturn(include __DIR__ . '/Fixtures/de.locallang_form.php');
82  $localizationFactory
83  ->getParsedData('EXT:form/Tests/Unit/Service/Fixtures/locallang_additional_text.xlf', 'default')
84  ->willReturn(include __DIR__ . '/Fixtures/locallang_additional_text.php');
85  $localizationFactory
86  ->getParsedData('EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_01.xlf', 'default')
87  ->willReturn(include __DIR__ . '/Fixtures/locallang_ceuid_suffix_01.php');
88  $localizationFactory
89  ->getParsedData('EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_02.xlf', 'default')
90  ->willReturn(include __DIR__ . '/Fixtures/locallang_ceuid_suffix_02.php');
91  $localizationFactory
92  ->getParsedData('EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf', 'default')
93  ->willReturn(include __DIR__ . '/Fixtures/locallang_text.php');
94 
95  GeneralUtility::setSingletonInstance(LocalizationFactory::class, $localizationFactory->reveal());
96 
97  $this->mockConfigurationManager = $this->getAccessibleMock(ConfigurationManager::class, [
98  'getConfiguration'
99  ], [], '', false);
100 
101  $this->mockTranslationService = $this->getAccessibleMock(TranslationService::class, [
102  'getConfigurationManager',
103  'getLanguageService'
104  ], [], '', false);
105 
106  $languageService = new ‪LanguageService(new ‪Locales(), new ‪LocalizationFactory(new ‪LanguageStore(), $cacheManagerProphecy->reveal()));
107  $this->mockTranslationService
108  ->expects(self::any())
109  ->method('getLanguageService')
110  ->willReturn($languageService);
111 
112  $this->mockTranslationService
113  ->expects(self::any())
114  ->method('getConfigurationManager')
115  ->willReturn($this->mockConfigurationManager);
116 
117  $this->store = GeneralUtility::makeInstance(LanguageStore::class);
118  $this->store->initialize();
119  }
120 
125  {
126  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
127  $expected = 'FORM EN';
128 
129  $this->store->flushData($xlfPath);
130  self::assertEquals($expected, $this->mockTranslationService->_call(
131  'translate',
132  $xlfPath . ':element.Page.renderingOptions.nextButtonLabel'
133  ));
134  }
135 
140  {
141  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
142  $expected = 'FORM EN';
143 
144  $this->store->flushData($xlfPath);
145  self::assertEquals($expected, $this->mockTranslationService->_call(
146  'translate',
147  'LLL:' . $xlfPath . ':element.Page.renderingOptions.nextButtonLabel'
148  ));
149  }
150 
155  {
156  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
157  $expected = 'FORM EN';
158 
159  $this->store->flushData($xlfPath);
160  self::assertEquals($expected, $this->mockTranslationService->_call(
161  'translate',
162  $xlfPath . ':element.Page.renderingOptions.nextButtonLabel',
163  null,
164  null,
165  null,
166  'defaultValue'
167  ));
168  }
169 
174  {
175  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
176  $this->store->flushData($xlfPath);
177 
178  $expected = '';
179  self::assertEquals($expected, $this->mockTranslationService->_call(
180  'translate',
181  $xlfPath . ':element.Page.renderingOptions.nonExisting'
182  ));
183  }
184 
189  {
190  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
191  $this->store->flushData($xlfPath);
192 
193  $expected = 'defaultValue';
194  self::assertEquals($expected, $this->mockTranslationService->_call(
195  'translate',
196  $xlfPath . ':element.Page.renderingOptions.nonExisting',
197  null,
198  null,
199  null,
200  'defaultValue'
201  ));
202  }
203 
208  {
209  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
210  $expected = 'FORM DE';
211 
212  $this->store->flushData($xlfPath);
213  self::assertEquals($expected, $this->mockTranslationService->_call(
214  'translate',
215  $xlfPath . ':element.Page.renderingOptions.nextButtonLabel',
216  null,
217  null,
218  'de'
219  ));
220  }
221 
226  {
227  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
228  $expected = 'defaultValue';
229 
230  $this->store->flushData($xlfPath);
231  self::assertEquals($expected, $this->mockTranslationService->_call(
232  'translate',
233  $xlfPath . ':element.Page.renderingOptions.nonExisting',
234  null,
235  null,
236  'de',
237  'defaultValue'
238  ));
239  }
240 
245  {
246  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
247  $expected = '';
248 
249  $this->store->flushData($xlfPath);
250  self::assertEquals($expected, $this->mockTranslationService->_call(
251  'translate',
252  $xlfPath . ':element.Page.renderingOptions.nonExisting',
253  null,
254  null,
255  'de'
256  ));
257  }
258 
263  {
264  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
265  $expected = 'FORM EN';
266 
267  $this->store->flushData($xlfPath);
268  self::assertEquals($expected, $this->mockTranslationService->_call(
269  'translate',
270  'element.Page.renderingOptions.nextButtonLabel',
271  null,
272  $xlfPath
273  ));
274  }
275 
280  {
281  $xlfPath = 'EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf';
282  $expected = 'FORM EN';
283 
284  $this->store->flushData($xlfPath);
285  self::assertEquals($expected, $this->mockTranslationService->_call(
286  'translate',
287  'element.Page.renderingOptions.nextButtonLabel',
288  null,
289  'LLL:' . $xlfPath
290  ));
291  }
292 
296  public function ‪translateValuesRecursiveTranslateRecursive(): void
297  {
298  $xlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
299 
300  $input = [
301  'Stan' => [
302  'Steve' => 'Roger'
303  ],
304  [
305  'Francine' => [
306  'Klaus' => 'element.Page.renderingOptions.nextButtonLabel'
307  ],
308  ],
309  ];
310 
311  $expected = [
312  'Stan' => [
313  'Steve' => 'Roger'
314  ],
315  [
316  'Francine' => [
317  'Klaus' => 'FORM EN'
318  ],
319  ],
320  ];
321 
322  $this->store->flushData($xlfPaths);
323  self::assertEquals($expected, $this->mockTranslationService->_call(
324  'translateValuesRecursive',
325  $input,
326  $xlfPaths
327  ));
328  }
329 
334  {
335  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
336  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
337 
338  $formRuntimeIdentifier = 'form-runtime-identifier';
339  $formElementIdentifier = 'form-element-identifier';
340 
341  $formRuntimeRenderingOptions = [
342  'translation' => [
343  'translationFiles' => $formRuntimeXlfPaths,
344  'translatePropertyValueIfEmpty' => true
345  ],
346  ];
347 
348  $formElementRenderingOptions = [
349  'translation' => [
350  'translationFiles' => $textElementXlfPaths,
351  'translatePropertyValueIfEmpty' => true
352  ],
353  ];
354 
355  $expected = 'form-element-identifier LABEL EN';
356 
357  $this->store->flushData($formRuntimeXlfPaths);
358  $this->store->flushData($textElementXlfPaths);
359 
360  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
361 
362  $mockFormElement->_set('type', 'Text');
363  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
364  $mockFormElement->_set('identifier', $formElementIdentifier);
365  $mockFormElement->_set('label', 'some label');
366 
367  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
368  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
369  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
370 
371  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
372  }
373 
378  {
379  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
380  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
381 
382  $formRuntimeIdentifier = 'form-runtime-identifier';
383  $formElementIdentifier = 'form-element-identifier';
384 
385  $formRuntimeRenderingOptions = [
386  'translation' => [
387  'translationFiles' => $formRuntimeXlfPaths,
388  'translatePropertyValueIfEmpty' => true
389  ],
390  ];
391 
392  $formElementRenderingOptions = [
393  'translation' => [
394  'translationFiles' => $textElementXlfPaths,
395  'translatePropertyValueIfEmpty' => true
396  ],
397  ];
398 
399  $expected = 'form-element-identifier LABEL EN';
400 
401  $this->store->flushData($formRuntimeXlfPaths);
402  $this->store->flushData($textElementXlfPaths);
403 
404  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
405 
406  $mockFormElement->_set('type', 'Text');
407  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
408  $mockFormElement->_set('identifier', $formElementIdentifier);
409  $mockFormElement->_set('label', '');
410 
411  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
412  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
413  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
414 
415  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
416  }
417 
422  {
423  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
424  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
425 
426  $formRuntimeIdentifier = 'form-runtime-identifier';
427  $formElementIdentifier = 'form-element-identifier';
428 
429  $formRuntimeRenderingOptions = [
430  'translation' => [
431  'translationFiles' => $formRuntimeXlfPaths,
432  'translatePropertyValueIfEmpty' => true
433  ],
434  ];
435 
436  $formElementRenderingOptions = [
437  'translation' => [
438  'translationFiles' => $textElementXlfPaths,
439  'translatePropertyValueIfEmpty' => false
440  ],
441  ];
442 
443  $expected = '';
444 
445  $this->store->flushData($formRuntimeXlfPaths);
446  $this->store->flushData($textElementXlfPaths);
447 
448  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
449 
450  $mockFormElement->_set('type', 'Text');
451  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
452  $mockFormElement->_set('identifier', $formElementIdentifier);
453  $mockFormElement->_set('label', '');
454 
455  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
456  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
457  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
458 
459  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
460  }
461 
466  {
467  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
468  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
469 
470  $formRuntimeIdentifier = 'another-form-runtime-identifier';
471  $formElementIdentifier = 'form-element-identifier';
472 
473  $formRuntimeRenderingOptions = [
474  'translation' => [
475  'translationFiles' => $formRuntimeXlfPaths,
476  'translatePropertyValueIfEmpty' => true
477  ],
478  ];
479 
480  $formElementRenderingOptions = [
481  'translation' => [
482  'translationFiles' => $textElementXlfPaths,
483  'translatePropertyValueIfEmpty' => true
484  ],
485  ];
486 
487  $expected = 'form-element-identifier LABEL EN 1';
488 
489  $this->store->flushData($formRuntimeXlfPaths);
490  $this->store->flushData($textElementXlfPaths);
491 
492  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
493 
494  $mockFormElement->_set('type', 'Text');
495  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
496  $mockFormElement->_set('identifier', $formElementIdentifier);
497  $mockFormElement->_set('label', 'some label');
498 
499  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
500  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
501  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
502 
503  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
504  }
505 
510  {
511  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
512  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
513 
514  $formRuntimeIdentifier = 'another-form-runtime-identifier';
515  $formElementIdentifier = 'another-form-element-identifier';
516 
517  $formRuntimeRenderingOptions = [
518  'translation' => [
519  'translationFiles' => $formRuntimeXlfPaths,
520  'translatePropertyValueIfEmpty' => true
521  ],
522  ];
523 
524  $formElementRenderingOptions = [
525  'translation' => [
526  'translationFiles' => $textElementXlfPaths,
527  'translatePropertyValueIfEmpty' => true
528  ],
529  ];
530 
531  $expected = 'form-element-identifier LABEL EN 2';
532 
533  $this->store->flushData($formRuntimeXlfPaths);
534  $this->store->flushData($textElementXlfPaths);
535 
536  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
537 
538  $mockFormElement->_set('type', 'Text');
539  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
540  $mockFormElement->_set('identifier', $formElementIdentifier);
541  $mockFormElement->_set('label', 'some label');
542 
543  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
544  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
545  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
546 
547  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
548  }
549 
554  {
555  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
556  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
557 
558  $formRuntimeIdentifier = 'form-runtime-identifier';
559  $formElementIdentifier = 'form-element-identifier';
560 
561  $formRuntimeRenderingOptions = [
562  'translation' => [
563  'translationFiles' => $formRuntimeXlfPaths,
564  'translatePropertyValueIfEmpty' => true
565  ],
566  ];
567 
568  $formElementRenderingOptions = [
569  'translation' => [
570  'translationFiles' => $textElementXlfPaths,
571  'translatePropertyValueIfEmpty' => true
572  ],
573  ];
574  $formElementProperties = [
575  'placeholder' => 'placeholder',
576  ];
577 
578  $expected = 'form-element-identifier PLACEHOLDER EN';
579 
580  $this->store->flushData($formRuntimeXlfPaths);
581  $this->store->flushData($textElementXlfPaths);
582 
583  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
584 
585  $mockFormElement->_set('type', 'Text');
586  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
587  $mockFormElement->_set('identifier', $formElementIdentifier);
588  $mockFormElement->_set('properties', $formElementProperties);
589 
590  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
591  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
592  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
593 
594  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['placeholder'], $mockFormRuntime));
595  }
596 
601  {
602  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
603  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
604 
605  $formRuntimeIdentifier = 'another-form-runtime-identifier';
606  $formElementIdentifier = 'another-form-element-identifier';
607 
608  $formRuntimeRenderingOptions = [
609  'translation' => [
610  'translationFiles' => $formRuntimeXlfPaths,
611  'translatePropertyValueIfEmpty' => true
612  ],
613  ];
614 
615  $formElementRenderingOptions = [
616  'translation' => [
617  'translationFiles' => $textElementXlfPaths,
618  'translatePropertyValueIfEmpty' => true
619  ],
620  ];
621  $formElementProperties = [
622  'placeholder' => 'placeholder',
623  ];
624 
625  $expected = 'placeholder';
626 
627  $this->store->flushData($formRuntimeXlfPaths);
628  $this->store->flushData($textElementXlfPaths);
629 
630  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
631 
632  $mockFormElement->_set('type', 'Text');
633  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
634  $mockFormElement->_set('identifier', $formElementIdentifier);
635  $mockFormElement->_set('properties', $formElementProperties);
636 
637  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
638  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
639  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
640 
641  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['placeholder'], $mockFormRuntime));
642  }
643 
648  {
649  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
650  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
651 
652  $formRuntimeIdentifier = 'form-runtime-identifier';
653  $formElementIdentifier = 'form-element-identifier-page';
654 
655  $formRuntimeRenderingOptions = [
656  'translation' => [
657  'translationFiles' => $formRuntimeXlfPaths,
658  'translatePropertyValueIfEmpty' => true
659  ],
660  ];
661 
662  $formElementRenderingOptions = [
663  'nextButtonLabel' => 'next button label',
664  'translation' => [
665  'translationFiles' => $textElementXlfPaths,
666  'translatePropertyValueIfEmpty' => true
667  ],
668  ];
669  $formElementProperties = [
670  'placeholder' => 'placeholder',
671  ];
672 
673  $expected = 'form-element-identifier nextButtonLabel EN';
674 
675  $this->store->flushData($formRuntimeXlfPaths);
676  $this->store->flushData($textElementXlfPaths);
677 
678  $mockFormElement = $this->getAccessibleMock(Page::class, ['dummy'], [], '', false);
679 
680  $mockFormElement->_set('type', 'Page');
681  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
682  $mockFormElement->_set('identifier', $formElementIdentifier);
683  $mockFormElement->_set('properties', $formElementProperties);
684 
685  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
686  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
687  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
688 
689  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['nextButtonLabel'], $mockFormRuntime));
690  }
691 
696  {
697  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
698  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
699 
700  $formRuntimeIdentifier = 'form-runtime-identifier';
701  $formElementIdentifier = 'options-form-element-identifier';
702 
703  $formRuntimeRenderingOptions = [
704  'translation' => [
705  'translationFiles' => $formRuntimeXlfPaths,
706  'translatePropertyValueIfEmpty' => true
707  ],
708  ];
709 
710  $formElementRenderingOptions = [
711  'translation' => [
712  'translationFiles' => $textElementXlfPaths,
713  'translatePropertyValueIfEmpty' => true
714  ],
715  ];
716  $formElementProperties = [
717  'options' => [
718  'optionValue1' => 'optionLabel1',
719  'optionValue2' => 'optionLabel2'
720  ],
721  ];
722 
723  $expected = [
724  'optionValue1' => 'options-form-element-identifier option 1 EN',
725  'optionValue2' => 'options-form-element-identifier option 2 EN'
726  ];
727 
728  $this->store->flushData($formRuntimeXlfPaths);
729  $this->store->flushData($textElementXlfPaths);
730 
731  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
732 
733  $mockFormElement->_set('type', 'Text');
734  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
735  $mockFormElement->_set('identifier', $formElementIdentifier);
736  $mockFormElement->_set('properties', $formElementProperties);
737 
738  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
739  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
740  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
741 
742  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['options'], $mockFormRuntime));
743  }
744 
749  {
750  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
751  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
752 
753  $formRuntimeIdentifier = 'another-form-runtime-identifier';
754  $formElementIdentifier = 'options-form-element-identifier';
755 
756  $formRuntimeRenderingOptions = [
757  'translation' => [
758  'translationFiles' => $formRuntimeXlfPaths,
759  'translatePropertyValueIfEmpty' => true
760  ],
761  ];
762 
763  $formElementRenderingOptions = [
764  'translation' => [
765  'translationFiles' => $textElementXlfPaths,
766  'translatePropertyValueIfEmpty' => true
767  ],
768  ];
769  $formElementProperties = [
770  'options' => [
771  'optionValue1' => 'optionLabel1',
772  'optionValue2' => 'optionLabel2'
773  ],
774  ];
775 
776  $expected = [
777  'optionValue1' => 'options-form-element-identifier option 1 EN',
778  'optionValue2' => 'options-form-element-identifier option 2 EN'
779  ];
780 
781  $this->store->flushData($formRuntimeXlfPaths);
782  $this->store->flushData($textElementXlfPaths);
783 
784  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
785 
786  $mockFormElement->_set('type', 'Text');
787  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
788  $mockFormElement->_set('identifier', $formElementIdentifier);
789  $mockFormElement->_set('properties', $formElementProperties);
790 
791  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
792  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
793  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
794 
795  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['options'], $mockFormRuntime));
796  }
797 
802  {
803  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
804  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
805 
806  $formRuntimeIdentifier = 'form-runtime-identifier';
807  $finisherIdentifier = 'SaveToDatabaseFinisher';
808 
809  $formRuntimeRenderingOptions = [
810  'translation' => [
811  'translationFiles' => $formRuntimeXlfPaths,
812  'translatePropertyValueIfEmpty' => true
813  ],
814  ];
815 
816  $finisherRenderingOptions = [
817  'translationFiles' => $textElementXlfPaths,
818  'translatePropertyValueIfEmpty' => true
819  ];
820 
821  $expected = 'form-element-identifier SaveToDatabase subject EN';
822 
823  $this->store->flushData($formRuntimeXlfPaths);
824  $this->store->flushData($textElementXlfPaths);
825 
826  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
827  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
828  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
829 
830  self::assertEquals($expected, $this->mockTranslationService->_call('translateFinisherOption', $mockFormRuntime, $finisherIdentifier, 'subject', 'subject value', $finisherRenderingOptions));
831  }
832 
837  {
838  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
839  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
840 
841  $formRuntimeIdentifier = 'another-form-runtime-identifier';
842  $finisherIdentifier = 'SaveToDatabaseFinisher';
843 
844  $formRuntimeRenderingOptions = [
845  'translation' => [
846  'translationFiles' => $formRuntimeXlfPaths,
847  'translatePropertyValueIfEmpty' => true
848  ],
849  ];
850 
851  $finisherRenderingOptions = [
852  'translationFiles' => $textElementXlfPaths,
853  'translatePropertyValueIfEmpty' => true
854  ];
855 
856  $expected = 'form-element-identifier SaveToDatabase subject EN 1';
857 
858  $this->store->flushData($formRuntimeXlfPaths);
859  $this->store->flushData($textElementXlfPaths);
860 
861  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
862  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
863  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
864 
865  self::assertEquals($expected, $this->mockTranslationService->_call('translateFinisherOption', $mockFormRuntime, $finisherIdentifier, 'subject', 'subject value', $finisherRenderingOptions));
866  }
867 
872  {
873  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
874  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
875 
876  $formRuntimeIdentifier = 'my-form-runtime-identifier';
877  $formElementIdentifier = 'my-form-element-identifier';
878 
879  $formRuntimeRenderingOptions = [
880  'translation' => [
881  'translationFiles' => $formRuntimeXlfPaths,
882  'translatePropertyValueIfEmpty' => true
883  ],
884  ];
885 
886  $formElementRenderingOptions = [];
887 
888  $expected = 'my-form-runtime-identifier my-form-element-identifier LABEL EN';
889 
890  $this->store->flushData($formRuntimeXlfPaths);
891  $this->store->flushData($textElementXlfPaths);
892 
893  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
894 
895  $mockFormElement->_set('type', 'Text');
896  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
897  $mockFormElement->_set('identifier', $formElementIdentifier);
898  $mockFormElement->_set('label', 'some label');
899 
900  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
901  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
902  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
903 
904  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
905  }
906 
911  {
912  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
913 
914  $this->store->flushData($formRuntimeXlfPaths);
915 
917  $formRuntime = $this->prophesize(FormRuntime::class);
918  $formRuntime->getIdentifier()->willReturn('my-form-runtime-identifier');
919  $formRuntime->getRenderingOptions()->willReturn([
920  'translation' => [
921  'translationFiles' => $formRuntimeXlfPaths,
922  'translatePropertyValueIfEmpty' => true,
923  ],
924  ]);
925 
927  $element = $this->prophesize(RootRenderableInterface::class);
928  $element->getIdentifier()->willReturn('my-form-element-with-translation-arguments');
929  $element->getType()->willReturn(RootRenderableInterface::class);
930  $element->getLabel()->willReturn('See %s or %s');
931  $element->getRenderingOptions()->willReturn([
932  'translation' => [
933  'arguments' => [
934  'label' => [
935  'this',
936  'that',
937  ],
938  ],
939  ],
940  ]);
941 
942  $expected = 'See this or that';
943  $result = $this->mockTranslationService->_call('translateFormElementValue', $element->reveal(), ['label'], $formRuntime->reveal());
944 
945  self::assertEquals($expected, $result);
946  }
947 
952  {
953  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
954  $textElementXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf'];
955 
956  $formRuntimeIdentifier = 'my-form-runtime-identifier';
957  $finisherIdentifier = 'SaveToDatabaseFinisher';
958 
959  $formRuntimeRenderingOptions = [
960  'translation' => [
961  'translationFiles' => $formRuntimeXlfPaths,
962  'translatePropertyValueIfEmpty' => true
963  ],
964  ];
965 
966  $finisherRenderingOptions = [];
967 
968  $expected = 'my-form-runtime-identifier form-element-identifier SaveToDatabase subject EN';
969 
970  $this->store->flushData($formRuntimeXlfPaths);
971  $this->store->flushData($textElementXlfPaths);
972 
973  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
974  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
975  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
976 
977  self::assertEquals($expected, $this->mockTranslationService->_call('translateFinisherOption', $mockFormRuntime, $finisherIdentifier, 'subject', 'subject value', $finisherRenderingOptions));
978  }
979 
984  {
985  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
986 
987  $this->store->flushData($formRuntimeXlfPaths);
988 
990  $formRuntime = $this->prophesize(FormRuntime::class);
991  $formRuntime->getIdentifier()->willReturn('my-form-runtime-identifier');
992  $formRuntime->getRenderingOptions()->willReturn([
993  'translation' => [
994  'translationFiles' => $formRuntimeXlfPaths,
995  'translatePropertyValueIfEmpty' => true,
996  ],
997  ]);
998  $renderingOptions = [
999  'arguments' => [
1000  'subject' => [
1001  'awesome',
1002  ],
1003  ],
1004  ];
1005 
1006  $expected = 'My awesome subject';
1007  $result = $this->mockTranslationService->_call('translateFinisherOption', $formRuntime->reveal(), 'EmailToReceiverWithTranslationArguments', 'subject', 'My %s subject', $renderingOptions);
1008 
1009  self::assertEquals($expected, $result);
1010  }
1016  {
1017  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_form.xlf'];
1018  $textElementXlfPaths = [
1019  10 => 'EXT:form/Tests/Unit/Service/Fixtures/locallang_text.xlf',
1020  20 => 'EXT:form/Tests/Unit/Service/Fixtures/locallang_additional_text.xlf'
1021  ];
1022 
1023  $formRuntimeIdentifier = 'form-runtime-identifier';
1024  $formElementIdentifier = 'form-element-identifier';
1025 
1026  $formRuntimeRenderingOptions = [
1027  'translation' => [
1028  'translationFiles' => $formRuntimeXlfPaths,
1029  'translatePropertyValueIfEmpty' => true
1030  ],
1031  ];
1032 
1033  $formElementRenderingOptions = [
1034  'translation' => [
1035  'translationFiles' => $textElementXlfPaths,
1036  'translatePropertyValueIfEmpty' => true
1037  ],
1038  ];
1039 
1040  $expected = 'form-element-identifier ADDITIONAL LABEL EN';
1041 
1042  $this->store->flushData($formRuntimeXlfPaths);
1043 
1044  foreach ($textElementXlfPaths as $textElementXlfPaths) {
1045  $this->store->flushData($textElementXlfPaths);
1046  }
1047 
1048  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
1049 
1050  $mockFormElement->_set('type', 'Text');
1051  $mockFormElement->_set('renderingOptions', $formElementRenderingOptions);
1052  $mockFormElement->_set('identifier', $formElementIdentifier);
1053  $mockFormElement->_set('label', 'some label');
1054 
1055  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions'], [], '', false);
1056  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
1057  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1058 
1059  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
1060  }
1066  {
1067  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_01.xlf'];
1068 
1069  $formRuntimeIdentifier = 'form-runtime-identifier-42';
1070  $formElementIdentifier = 'form-element-identifier';
1071 
1072  $formRuntimeRenderingOptions = [
1073  'submitButtonLabel' => '',
1074  'translation' => [
1075  'translationFiles' => $formRuntimeXlfPaths,
1076  'translatePropertyValueIfEmpty' => true
1077  ],
1078  ];
1079 
1080  $this->store->flushData($formRuntimeXlfPaths);
1081 
1082  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType'], [], '', false);
1083 
1084  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
1085  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1086  $mockFormRuntime->expects(self::any())->method('getType')->willReturn('Form');
1087 
1088  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
1089 
1090  $mockFormElement->_set('type', 'Text');
1091  $mockFormElement->_set('identifier', $formElementIdentifier);
1092  $mockFormElement->_set('label', '');
1093 
1094  $expected = 'form-runtime-identifier-42 submitButtonLabel EN';
1095  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormRuntime, ['submitButtonLabel'], $mockFormRuntime));
1096 
1097  $expected = 'form-runtime-identifier-42 form-element-identifierlabel EN';
1098  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
1099  }
1105  {
1106  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_02.xlf'];
1107 
1108  $formRuntimeIdentifier = 'form-runtime-identifier-42';
1109  $formElementIdentifier = 'form-element-identifier';
1110 
1111  $formRuntimeRenderingOptions = [
1112  'submitButtonLabel' => '',
1113  '_originalIdentifier' => 'form-runtime-identifier',
1114  'translation' => [
1115  'translationFiles' => $formRuntimeXlfPaths,
1116  'translatePropertyValueIfEmpty' => true
1117  ],
1118  ];
1119 
1120  $this->store->flushData($formRuntimeXlfPaths);
1121 
1122  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType'], [], '', false);
1123 
1124  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
1125  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1126  $mockFormRuntime->expects(self::any())->method('getType')->willReturn('Form');
1127 
1128  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
1129 
1130  $mockFormElement->_set('type', 'Text');
1131  $mockFormElement->_set('identifier', $formElementIdentifier);
1132  $mockFormElement->_set('label', '');
1133 
1134  $expected = 'form-runtime-identifier submitButtonLabel EN';
1135  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormRuntime, ['submitButtonLabel'], $mockFormRuntime));
1136 
1137  $expected = 'form-runtime-identifier form-element-identifierlabel EN';
1138  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementValue', $mockFormElement, ['label'], $mockFormRuntime));
1139  }
1145  {
1146  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_01.xlf'];
1147 
1148  $formRuntimeIdentifier = 'form-runtime-identifier-42';
1149  $formElementIdentifier = 'form-element-identifier';
1150 
1151  $formRuntimeRenderingOptions = [
1152  'translation' => [
1153  'translationFiles' => $formRuntimeXlfPaths,
1154  'translatePropertyValueIfEmpty' => true
1155  ],
1156  ];
1157 
1158  $this->store->flushData($formRuntimeXlfPaths);
1159 
1160  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType', 'getProperties'], [], '', false);
1161 
1162  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
1163  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1164  $mockFormRuntime->expects(self::any())->method('getType')->willReturn('Form');
1165  $mockFormRuntime->expects(self::any())->method('getProperties')->willReturn([]);
1166 
1167  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
1168 
1169  $mockFormElement->_set('type', 'Text');
1170  $mockFormElement->_set('identifier', $formElementIdentifier);
1171  $mockFormElement->_set('label', '');
1172  $mockFormElement->_set('properties', []);
1173 
1174  $expected = 'form-runtime-identifier-42 error 123 EN';
1175  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementError', $mockFormRuntime, 123, [], 'default value', $mockFormRuntime));
1176 
1177  $expected = 'form-runtime-identifier-42 form-element-identifier error 123 EN';
1178  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementError', $mockFormElement, 123, [], 'default value', $mockFormRuntime));
1179  }
1185  {
1186  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_02.xlf'];
1187 
1188  $formRuntimeIdentifier = 'form-runtime-identifier-42';
1189  $formElementIdentifier = 'form-element-identifier';
1190 
1191  $formRuntimeRenderingOptions = [
1192  '_originalIdentifier' => 'form-runtime-identifier',
1193  'translation' => [
1194  'translationFiles' => $formRuntimeXlfPaths,
1195  'translatePropertyValueIfEmpty' => true
1196  ],
1197  ];
1198 
1199  $this->store->flushData($formRuntimeXlfPaths);
1200 
1201  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType', 'getProperties'], [], '', false);
1202 
1203  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
1204  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1205  $mockFormRuntime->expects(self::any())->method('getType')->willReturn('Form');
1206  $mockFormRuntime->expects(self::any())->method('getProperties')->willReturn([]);
1207 
1208  $mockFormElement = $this->getAccessibleMock(GenericFormElement::class, ['dummy'], [], '', false);
1209 
1210  $mockFormElement->_set('type', 'Text');
1211  $mockFormElement->_set('identifier', $formElementIdentifier);
1212  $mockFormElement->_set('label', '');
1213  $mockFormElement->_set('properties', []);
1214 
1215  $expected = 'form-runtime-identifier error 123 EN';
1216  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementError', $mockFormRuntime, 123, [], 'default value', $mockFormRuntime));
1217 
1218  $expected = 'form-runtime-identifier form-element-identifier error 123 EN';
1219  self::assertEquals($expected, $this->mockTranslationService->_call('translateFormElementError', $mockFormElement, 123, [], 'default value', $mockFormRuntime));
1220  }
1226  {
1227  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_01.xlf'];
1228 
1229  $formRuntimeIdentifier = 'form-runtime-identifier-42';
1230 
1231  $formRuntimeRenderingOptions = [
1232  'translation' => [
1233  'translationFiles' => $formRuntimeXlfPaths,
1234  'translatePropertyValueIfEmpty' => true
1235  ],
1236  ];
1237 
1238  $this->store->flushData($formRuntimeXlfPaths);
1239 
1240  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType', 'getProperties'], [], '', false);
1241 
1242  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
1243  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1244  $mockFormRuntime->expects(self::any())->method('getType')->willReturn('Form');
1245  $mockFormRuntime->expects(self::any())->method('getProperties')->willReturn([]);
1246 
1247  $expected = 'form-runtime-identifier-42 FooFinisher test EN';
1248  self::assertEquals($expected, $this->mockTranslationService->_call('translateFinisherOption', $mockFormRuntime, 'Foo', 'test', 'value', []));
1249  }
1255  {
1256  $formRuntimeXlfPaths = ['EXT:form/Tests/Unit/Service/Fixtures/locallang_ceuid_suffix_02.xlf'];
1257 
1258  $formRuntimeIdentifier = 'form-runtime-identifier-42';
1259 
1260  $formRuntimeRenderingOptions = [
1261  '_originalIdentifier' => 'form-runtime-identifier',
1262  'translation' => [
1263  'translationFiles' => $formRuntimeXlfPaths,
1264  'translatePropertyValueIfEmpty' => true
1265  ],
1266  ];
1267 
1268  $this->store->flushData($formRuntimeXlfPaths);
1269 
1270  $mockFormRuntime = $this->getAccessibleMock(FormRuntime::class, ['getIdentifier', 'getRenderingOptions', 'getType', 'getProperties'], [], '', false);
1271 
1272  $mockFormRuntime->expects(self::any())->method('getIdentifier')->willReturn($formRuntimeIdentifier);
1273  $mockFormRuntime->expects(self::any())->method('getRenderingOptions')->willReturn($formRuntimeRenderingOptions);
1274  $mockFormRuntime->expects(self::any())->method('getType')->willReturn('Form');
1275  $mockFormRuntime->expects(self::any())->method('getProperties')->willReturn([]);
1276 
1277  $expected = 'form-runtime-identifier FooFinisher test EN';
1278  self::assertEquals($expected, $this->mockTranslationService->_call('translateFinisherOption', $mockFormRuntime, 'Foo', 'test', 'value', []));
1279  }
1280 }
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementErrorTranslateErrorFromFormWithContentElementUidIfFormContainsNoOriginalIdentifier
‪translateFormElementErrorTranslateErrorFromFormWithContentElementUidIfFormContainsNoOriginalIdentifier()
Definition: TranslationServiceTest.php:1140
‪TYPO3\CMS\Form\Service\TranslationService
Definition: TranslationService.php:44
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\supportsArgumentsForFinisherOptionTranslations
‪supportsArgumentsForFinisherOptionTranslations()
Definition: TranslationServiceTest.php:979
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsExistingDefaultLanguageKeyIfDefaultLanguageKeyIsRequestedAndExtFilePathIsGiven
‪translateReturnsExistingDefaultLanguageKeyIfDefaultLanguageKeyIsRequestedAndExtFilePathIsGiven()
Definition: TranslationServiceTest.php:258
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\setUp
‪setUp()
Definition: TranslationServiceTest.php:60
‪TYPO3\CMS\Core\Localization\LocalizationFactory
Definition: LocalizationFactory.php:28
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateLabelForConcreteFormElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateLabelForConcreteFormElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:461
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsExistingDefaultLanguageKeyIfDefaultLanguageKeyIsRequestedAndLLLExtFilePathIsGiven
‪translateReturnsExistingDefaultLanguageKeyIfDefaultLanguageKeyIsRequestedAndLLLExtFilePathIsGiven()
Definition: TranslationServiceTest.php:275
‪TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement
Definition: GenericFormElement.php:30
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsExistingDefaultLanguageKeyIfFullLLLExtDefaultLanguageKeyIsRequested
‪translateReturnsExistingDefaultLanguageKeyIfFullLLLExtDefaultLanguageKeyIsRequested()
Definition: TranslationServiceTest.php:135
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsExistingLanguageKeyForLanguageIfExtPathLanguageKeyIsRequested
‪translateReturnsExistingLanguageKeyForLanguageIfExtPathLanguageKeyIsRequested()
Definition: TranslationServiceTest.php:203
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFinisherOptionTranslateOptionFromFormWithContentElementUidIfFormContainsOriginalIdentifier
‪translateFinisherOptionTranslateOptionFromFormWithContentElementUidIfFormContainsOriginalIdentifier()
Definition: TranslationServiceTest.php:1250
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\$mockConfigurationManager
‪ConfigurationManager $mockConfigurationManager
Definition: TranslationServiceTest.php:47
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementTranslateFormWithContentElementUidIfFormContainsNoOriginalIdentifier
‪translateFormElementTranslateFormWithContentElementUidIfFormContainsNoOriginalIdentifier()
Definition: TranslationServiceTest.php:1061
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementTranslateFormWithContentElementUidIfFormContainsOriginalIdentifier
‪translateFormElementTranslateFormWithContentElementUidIfFormContainsOriginalIdentifier()
Definition: TranslationServiceTest.php:1100
‪TYPO3\CMS\Core\Localization\Locales
Definition: Locales.php:30
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsDefaultValueIfNonExistingDefaultLanguageKeyIsRequestedAndDefaultValueIsGiven
‪translateReturnsDefaultValueIfNonExistingDefaultLanguageKeyIsRequestedAndDefaultValueIsGiven()
Definition: TranslationServiceTest.php:184
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateLabelFromAdditionalTranslationForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateLabelFromAdditionalTranslationForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:1011
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFinisherOptionTranslateOptionIfFinisherTranslationOptionsContainsATranslationFilesAndFinisherOptionIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFinisherOptionTranslateOptionIfFinisherTranslationOptionsContainsATranslationFilesAndFinisherOptionIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:832
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueNotTranslatePropertyForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementPropertyIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationNotExists
‪translateFormElementValueNotTranslatePropertyForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementPropertyIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationNotExists()
Definition: TranslationServiceTest.php:596
‪TYPO3\CMS\Form\Domain\Model\FormElements\Page
Definition: Page.php:44
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFinisherOptionTranslateOptionForConcreteFormIfFinisherTranslationOptionsContainsATranslationFilesAndFinisherOptionIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFinisherOptionTranslateOptionForConcreteFormIfFinisherTranslationOptionsContainsATranslationFilesAndFinisherOptionIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:797
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateLabelForConcreteFormAndConcreteElementFromFormRuntimeTranslationFilesIfElementRenderingOptionsContainsNoTranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateLabelForConcreteFormAndConcreteElementFromFormRuntimeTranslationFilesIfElementRenderingOptionsContainsNoTranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:867
‪TYPO3\CMS\Core\Localization\LanguageStore
Definition: LanguageStore.php:27
‪TYPO3\CMS\Extbase\Configuration\ConfigurationManager
Definition: ConfigurationManager.php:33
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\$resetSingletonInstances
‪bool $resetSingletonInstances
Definition: TranslationServiceTest.php:43
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFinisherOptionTranslateOptionForConcreteFormFromFormRuntimeIfFinisherTranslationOptionsContainsNoTranslationFilesAndFinisherOptionIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFinisherOptionTranslateOptionForConcreteFormFromFormRuntimeIfFinisherTranslationOptionsContainsNoTranslationFilesAndFinisherOptionIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:947
‪TYPO3\CMS\Form\Domain\Model\Renderable\RootRenderableInterface
Definition: RootRenderableInterface.php:31
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueNotTranslateLabelForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsEmptyAndPropertyShouldNotBeTranslatedAndTranslationExists
‪translateFormElementValueNotTranslateLabelForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsEmptyAndPropertyShouldNotBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:417
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsExistingDefaultLanguageKeyIfFullExtDefaultLanguageKeyIsRequested
‪translateReturnsExistingDefaultLanguageKeyIfFullExtDefaultLanguageKeyIsRequested()
Definition: TranslationServiceTest.php:120
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\$store
‪LanguageStore $store
Definition: TranslationServiceTest.php:55
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateOptionsPropertyForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementOptionsPropertyIsAnArrayAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateOptionsPropertyForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementOptionsPropertyIsAnArrayAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:691
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateLabelForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateLabelForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:373
‪TYPO3\CMS\Core\Cache\CacheManager
Definition: CacheManager.php:35
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsExistingDefaultLanguageKeyIfDefaultLanguageKeyIsRequestedAndDefaultValueIsGiven
‪translateReturnsExistingDefaultLanguageKeyIfDefaultLanguageKeyIsRequestedAndDefaultValueIsGiven()
Definition: TranslationServiceTest.php:150
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateLabelForFormElementTypeIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateLabelForFormElementTypeIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:505
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\$mockTranslationService
‪TranslationService $mockTranslationService
Definition: TranslationServiceTest.php:51
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementErrorTranslateErrorFromFormWithContentElementUidIfFormContainsOriginalIdentifier
‪translateFormElementErrorTranslateErrorFromFormWithContentElementUidIfFormContainsOriginalIdentifier()
Definition: TranslationServiceTest.php:1180
‪TYPO3\CMS\Core\Cache\Frontend\FrontendInterface
Definition: FrontendInterface.php:22
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\supportsArgumentsForFormElementValueTranslations
‪supportsArgumentsForFormElementValueTranslations()
Definition: TranslationServiceTest.php:906
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateRenderingOptionForConcreteFormAndConcreteSectionElementIfElementRenderingOptionsContainsATranslationFilesAndElementRenderingOptionIsNotEmptyAndRenderingOptionShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateRenderingOptionForConcreteFormAndConcreteSectionElementIfElementRenderingOptionsContainsATranslationFilesAndElementRenderingOptionIsNotEmptyAndRenderingOptionShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:643
‪TYPO3\CMS\Form\Domain\Runtime\FormRuntime
Definition: FormSession.php:18
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFinisherOptionTranslateOptionFromFormWithContentElementUidIfFormContainsNoOriginalIdentifier
‪translateFinisherOptionTranslateOptionFromFormWithContentElementUidIfFormContainsNoOriginalIdentifier()
Definition: TranslationServiceTest.php:1221
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsEmptyStringIfNonExistingLanguageKeyForLanguageIsRequested
‪translateReturnsEmptyStringIfNonExistingLanguageKeyForLanguageIsRequested()
Definition: TranslationServiceTest.php:240
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:42
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:46
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsEmptyStringIfNonExistingDefaultLanguageKeyIsRequested
‪translateReturnsEmptyStringIfNonExistingDefaultLanguageKeyIsRequested()
Definition: TranslationServiceTest.php:169
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateValuesRecursiveTranslateRecursive
‪translateValuesRecursiveTranslateRecursive()
Definition: TranslationServiceTest.php:292
‪TYPO3\CMS\Form\Tests\Unit\Service
Definition: TranslationServiceTest.php:18
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslatePropertyForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementPropertyIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslatePropertyForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementPropertyIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:549
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateReturnsDefaultValueIfNonExistingLanguageKeyForLanguageIsRequestedAndDefaultValueIsGiven
‪translateReturnsDefaultValueIfNonExistingLanguageKeyForLanguageIsRequestedAndDefaultValueIsGiven()
Definition: TranslationServiceTest.php:221
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateLabelForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateLabelForConcreteFormAndConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementLabelIsNotEmptyAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:329
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest
Definition: TranslationServiceTest.php:40
‪TYPO3\CMS\Form\Tests\Unit\Service\TranslationServiceTest\translateFormElementValueTranslateOptionsPropertyForConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementOptionsPropertyIsAnArrayAndPropertyShouldBeTranslatedAndTranslationExists
‪translateFormElementValueTranslateOptionsPropertyForConcreteElementIfElementRenderingOptionsContainsATranslationFilesAndElementOptionsPropertyIsAnArrayAndPropertyShouldBeTranslatedAndTranslationExists()
Definition: TranslationServiceTest.php:744