‪TYPO3CMS  9.5
LocalizedContentRenderingTest.php
Go to the documentation of this file.
1 <?php
2 declare(strict_types = 1);
3 
5 
6 /*
7  * This file is part of the TYPO3 CMS project.
8  *
9  * It is free software; you can redistribute it and/or modify it under
10  * the terms of the GNU General Public License, either version 2
11  * of the License, or any later version.
12  *
13  * For the full copyright and license information, please read the
14  * LICENSE.txt file that was distributed with this source code.
15  *
16  * The TYPO3 project - inspiring people to share!
17  */
18 
19 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\InternalRequest;
20 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\ResponseContent;
21 
76 {
77  const ‪VALUE_PageId = 89;
78  const ‪TABLE_Content = 'tt_content';
79  const ‪TABLE_Pages = 'pages';
80 
84  protected ‪$scenarioDataSetDirectory = 'typo3/sysext/frontend/Tests/Functional/Rendering/DataSet/';
85 
93  'FE' => [
94  'pageNotFound_handling' => 'READFILE:typo3/sysext/frontend/Tests/Functional/Rendering/DataSet/404Template.html'
95  ]
96  ];
97 
101  protected ‪$pathsToLinkInTestInstance = [
102  'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/AdditionalConfiguration.php' => 'typo3conf/AdditionalConfiguration.php',
103  'typo3/sysext/frontend/Tests/Functional/Fixtures/Images' => 'fileadmin/user_upload'
104  ];
105 
106  protected function ‪setUp()
107  {
108  parent::setUp();
109  $this->importDataSet('PACKAGE:typo3/testing-framework/Resources/Core/Functional/Fixtures/sys_file_storage.xml');
110  $this->‪importScenarioDataSet('LiveDefaultPages');
111  $this->‪importScenarioDataSet('LiveDefaultElements');
112  $this->setUpFrontendRootPage(1, [
113  'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.typoscript',
114  ]);
115  }
116 
117  public function ‪defaultLanguageConfigurationDataProvider(): array
118  {
119  return [
120  [
121  'typoScript' => 'config.sys_language_overlay = 0
122  config.sys_language_mode =',
123  'sys_language_mode' => '',
124  'sys_language_contentOL' => 0
125  ],
126  [
127  'typoScript' => 'config.sys_language_overlay = 0
128  config.sys_language_mode = content_fallback',
129  'sys_language_mode' => 'content_fallback',
130  'sys_language_contentOL' => 0
131  ],
132  [
133  'typoScript' => 'config.sys_language_overlay = 0
134  config.sys_language_mode = content_fallback;1,0',
135  'sys_language_mode' => 'content_fallback',
136  'sys_language_contentOL' => 0
137  ],
138  [
139  'typoScript' => 'config.sys_language_overlay = 0
140  config.sys_language_mode = strict',
141  'sys_language_mode' => 'strict',
142  'sys_language_contentOL' => 0
143  ],
144  [
145  'typoScript' => 'config.sys_language_overlay = 0
146  config.sys_language_mode = ignore',
147  'sys_language_mode' => 'ignore',
148  'sys_language_contentOL' => 0
149  ],
150  [
151  'typoScript' => 'config.sys_language_overlay = 1
152  config.sys_language_mode =',
153  'sys_language_mode' => '',
154  'sys_language_contentOL' => 1
155  ],
156  [
157  'typoScript' => 'config.sys_language_overlay = 1
158  config.sys_language_mode = content_fallback',
159  'sys_language_mode' => 'content_fallback',
160  'sys_language_contentOL' => 1
161  ],
162  [
163  'typoScript' => 'config.sys_language_overlay = 1
164  config.sys_language_mode = content_fallback;1,0',
165  'sys_language_mode' => 'content_fallback',
166  'sys_language_contentOL' => 1
167  ],
168  [
169  'typoScript' => 'config.sys_language_overlay = 1
170  config.sys_language_mode = strict',
171  'sys_language_mode' => 'strict',
172  'sys_language_contentOL' => 1
173  ],
174  [
175  'typoScript' => 'config.sys_language_overlay = 1
176  config.sys_language_mode = ignore',
177  'sys_language_mode' => 'ignore',
178  'sys_language_contentOL' => 1
179  ],
180  [
181  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
182  config.sys_language_mode =',
183  'sys_language_mode' => '',
184  'sys_language_contentOL' => 'hideNonTranslated'
185  ],
186  [
187  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
188  config.sys_language_mode = content_fallback',
189  'sys_language_mode' => 'content_fallback',
190  'sys_language_contentOL' => 'hideNonTranslated'
191  ],
192  [
193  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
194  config.sys_language_mode = content_fallback;1,0',
195  'sys_language_mode' => 'content_fallback',
196  'sys_language_contentOL' => 'hideNonTranslated'
197  ],
198  [
199  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
200  config.sys_language_mode = strict',
201  'sys_language_mode' => 'strict',
202  'sys_language_contentOL' => 'hideNonTranslated'
203  ],
204  [
205  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
206  config.sys_language_mode = ignore',
207  'sys_language_mode' => 'ignore',
208  'sys_language_contentOL' => 'hideNonTranslated'
209  ],
210  ];
211  }
212 
224  public function ‪onlyEnglishContentIsRenderedForDefaultLanguage(string $typoScript, string $sysLanguageMode, string $sysLanguageContentOL)
225  {
226  $this->addTypoScriptToTemplateRecord(1, $typoScript);
227 
228  $frontendResponse = $this->getFrontendResponse(self::VALUE_PageId, 0);
229  $responseSections = $frontendResponse->getResponseSections();
230  $visibleHeaders = ['Regular Element #1', 'Regular Element #2', 'Regular Element #3'];
231  $this->assertThat(
232  $responseSections,
234  ->setTable(self::TABLE_Content)
235  ->setField('header')
236  ->setValues(...$visibleHeaders)
237  );
238  $this->assertThat(
239  $responseSections,
241  ->setTable(self::TABLE_Content)
242  ->setField('header')
243  ->setValues(...$this->‪getNonVisibleHeaders($visibleHeaders))
244  );
245 
246  //assert FAL relations
247  $visibleFiles = ['T3BOARD'];
248  $this->assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
249  ->setRecordIdentifier(self::TABLE_Content . ':297')->setRecordField('image')
250  ->setTable('sys_file_reference')->setField('title')->setValues(...$visibleFiles));
251 
252  $this->assertThat($responseSections, $this->‪getRequestSectionStructureDoesNotHaveRecordConstraint()
253  ->setRecordIdentifier(self::TABLE_Content . ':297')->setRecordField('image')
254  ->setTable('sys_file_reference')->setField('title')->setValues(...$this->‪getNonVisibleFileTitles($visibleFiles)));
255 
256  $visibleFiles = ['Kasper2'];
257  $this->assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
258  ->setRecordIdentifier(self::TABLE_Content . ':298')->setRecordField('image')
259  ->setTable('sys_file_reference')->setField('title')->setValues(...$visibleFiles));
260 
261  $this->assertThat($responseSections, $this->‪getRequestSectionStructureDoesNotHaveRecordConstraint()
262  ->setRecordIdentifier(self::TABLE_Content . ':298')->setRecordField('image')
263  ->setTable('sys_file_reference')->setField('title')->setValues(...$this->‪getNonVisibleFileTitles($visibleFiles)));
264 
265  //Assert TSFE and page record title
266  $content = json_decode($frontendResponse->getContent());
267  $this->assertEquals('Default language Page', $content->Scope->page->title);
268  $this->assertEquals(0, $content->Scope->tsfe->sys_language_uid, 'sys_language_uid doesn\'t match');
269  $this->assertEquals(0, $content->Scope->tsfe->sys_language_content, 'sys_language_content doesn\'t match');
270  $this->assertEquals($sysLanguageMode, $content->Scope->tsfe->sys_language_mode, 'sys_language_mode doesn\t match');
271  $this->assertEquals($sysLanguageContentOL, $content->Scope->tsfe->sys_language_contentOL, 'sys_language_contentOL doesn\t match');
272  }
273 
279  public function ‪dutchDataProvider(): array
280  {
281  //Expected behaviour:
282  //Page is translated to Dutch, so changing sys_language_mode does NOT change the results
283  //Page title is always [DK]Page, and both sys_language_content and sys_language_uid are always 1
284  return [
285  [
286  'typoScript' => 'config.sys_language_overlay = 0
287  config.sys_language_mode =',
288  'visibleRecords' => [
289  300 => [
290  'header' => '[Translate to Dansk:] Regular Element #3',
291  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
292  ],
293  301 => [
294  'header' => '[Translate to Dansk:] Regular Element #1',
295  'image' => [],
296  ],
297  303 => [
298  'header' => '[DK] Without default language',
299  'image' => ['[T3BOARD] Image added to DK element without default language']
300  ],
301  308 => [
302  'header' => '[DK] UnHidden Element #4',
303  'image' => []
304  ],
305  ],
306  'sys_language_mode' => '',
307  'sys_language_contentOL' => 0
308  ],
309  [
310  'typoScript' => 'config.sys_language_overlay = 0
311  config.sys_language_mode = content_fallback',
312  'visibleRecords' => [
313  300 => [
314  'header' => '[Translate to Dansk:] Regular Element #3',
315  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
316  ],
317  301 => [
318  'header' => '[Translate to Dansk:] Regular Element #1',
319  'image' => [],
320  ],
321  303 => [
322  'header' => '[DK] Without default language',
323  'image' => ['[T3BOARD] Image added to DK element without default language']
324  ],
325  308 => [
326  'header' => '[DK] UnHidden Element #4',
327  'image' => []
328  ],
329  ],
330  'sys_language_mode' => 'content_fallback',
331  'sys_language_contentOL' => 0
332  ],
333  [
334  'typoScript' => 'config.sys_language_overlay = 0
335  config.sys_language_mode = content_fallback;1,0',
336  'visibleRecords' => [
337  300 => [
338  'header' => '[Translate to Dansk:] Regular Element #3',
339  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
340  ],
341  301 => [
342  'header' => '[Translate to Dansk:] Regular Element #1',
343  'image' => [],
344  ],
345  303 => [
346  'header' => '[DK] Without default language',
347  'image' => ['[T3BOARD] Image added to DK element without default language']
348  ],
349  308 => [
350  'header' => '[DK] UnHidden Element #4',
351  'image' => []
352  ],
353  ],
354  'sys_language_mode' => 'content_fallback',
355  'sys_language_contentOL' => 0
356  ],
357  [
358  'typoScript' => 'config.sys_language_overlay = 0
359  config.sys_language_mode = strict',
360  'visibleRecords' => [
361  300 => [
362  'header' => '[Translate to Dansk:] Regular Element #3',
363  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
364  ],
365  301 => [
366  'header' => '[Translate to Dansk:] Regular Element #1',
367  'image' => [],
368  ],
369  303 => [
370  'header' => '[DK] Without default language',
371  'image' => ['[T3BOARD] Image added to DK element without default language']
372  ],
373  308 => [
374  'header' => '[DK] UnHidden Element #4',
375  'image' => []
376  ],
377  ],
378  'sys_language_mode' => 'strict',
379  'sys_language_contentOL' => 0
380  ],
381  [
382  'typoScript' => 'config.sys_language_overlay = 0
383  config.sys_language_mode = ignore',
384  'visibleRecords' => [
385  300 => [
386  'header' => '[Translate to Dansk:] Regular Element #3',
387  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
388  ],
389  301 => [
390  'header' => '[Translate to Dansk:] Regular Element #1',
391  'image' => [],
392  ],
393  303 => [
394  'header' => '[DK] Without default language',
395  'image' => ['[T3BOARD] Image added to DK element without default language']
396  ],
397  308 => [
398  'header' => '[DK] UnHidden Element #4',
399  'image' => []
400  ],
401  ],
402  'sys_language_mode' => 'ignore',
403  'sys_language_contentOL' => 0
404  ],
405  [
406  'typoScript' => 'config.sys_language_overlay = 1
407  config.sys_language_mode =',
408  'visibleRecords' => [
409  297 => [
410  'header' => '[Translate to Dansk:] Regular Element #1',
411  'image' => [],
412  ],
413  298 => [
414  'header' => 'Regular Element #2',
415  'image' => ['Kasper2'],
416  ],
417  299 => [
418  'header' => '[Translate to Dansk:] Regular Element #3',
419  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
420  ],
421  ],
422  'sys_language_mode' => '',
423  'sys_language_contentOL' => 1
424  ],
425  // Expected behaviour:
426  // Not translated element #2 is shown because sys_language_overlay = 1 (with sys_language_overlay = hideNonTranslated, it would be hidden)
427  [
428  'typoScript' => 'config.sys_language_overlay = 1
429  config.sys_language_mode = content_fallback',
430  'visibleRecords' => [
431  297 => [
432  'header' => '[Translate to Dansk:] Regular Element #1',
433  'image' => [],
434  ],
435  298 => [
436  'header' => 'Regular Element #2',
437  'image' => ['Kasper2'],
438  ],
439  299 => [
440  'header' => '[Translate to Dansk:] Regular Element #3',
441  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
442  ],
443  ],
444  'sys_language_mode' => 'content_fallback',
445  'sys_language_contentOL' => 1
446  ],
447  // Expected behaviour:
448  // Same as config.sys_language_mode = content_fallback because we're requesting language 1, so no additional fallback possible
449  //
450  [
451  'typoScript' => 'config.sys_language_overlay = 1
452  config.sys_language_mode = content_fallback;1,0',
453  'visibleRecords' => [
454  297 => [
455  'header' => '[Translate to Dansk:] Regular Element #1',
456  'image' => [],
457  ],
458  298 => [
459  'header' => 'Regular Element #2',
460  'image' => ['Kasper2'],
461  ],
462  299 => [
463  'header' => '[Translate to Dansk:] Regular Element #3',
464  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
465  ],
466  ],
467  'sys_language_mode' => 'content_fallback',
468  'sys_language_contentOL' => 1
469  ],
470  [
471  'typoScript' => 'config.sys_language_overlay = 1
472  config.sys_language_mode = strict',
473  'visibleRecords' => [
474  297 => [
475  'header' => '[Translate to Dansk:] Regular Element #1',
476  'image' => [],
477  ],
478  298 => [
479  'header' => 'Regular Element #2',
480  'image' => ['Kasper2'],
481  ],
482  299 => [
483  'header' => '[Translate to Dansk:] Regular Element #3',
484  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
485  ],
486  ],
487  'sys_language_mode' => 'strict',
488  'sys_language_contentOL' => 1
489  ],
490  [
491  'typoScript' => 'config.sys_language_overlay = 1
492  config.sys_language_mode = ignore',
493  'visibleRecords' => [
494  297 => [
495  'header' => '[Translate to Dansk:] Regular Element #1',
496  'image' => [],
497  ],
498  298 => [
499  'header' => 'Regular Element #2',
500  'image' => ['Kasper2'],
501  ],
502  299 => [
503  'header' => '[Translate to Dansk:] Regular Element #3',
504  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
505  ],
506  ],
507  'sys_language_mode' => 'ignore',
508  'sys_language_contentOL' => 1
509  ],
510  // Expected behaviour:
511  // Non translated default language elements are not shown, because of hideNonTranslated
512  [
513  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
514  config.sys_language_mode =',
515  'visibleRecords' => [
516  297 => [
517  'header' => '[Translate to Dansk:] Regular Element #1',
518  'image' => [],
519  ],
520  299 => [
521  'header' => '[Translate to Dansk:] Regular Element #3',
522  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
523  ],
524  ],
525  'sys_language_mode' => '',
526  'sys_language_contentOL' => 'hideNonTranslated'
527  ],
528  [
529  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
530  config.sys_language_mode = content_fallback',
531  'visibleRecords' => [
532  297 => [
533  'header' => '[Translate to Dansk:] Regular Element #1',
534  'image' => [],
535  ],
536  299 => [
537  'header' => '[Translate to Dansk:] Regular Element #3',
538  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
539  ],
540  ],
541  'sys_language_mode' => 'content_fallback',
542  'sys_language_contentOL' => 'hideNonTranslated'
543  ],
544  [
545  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
546  config.sys_language_mode = content_fallback;1,0',
547  'visibleRecords' => [
548  297 => [
549  'header' => '[Translate to Dansk:] Regular Element #1',
550  'image' => [],
551  ],
552  299 => [
553  'header' => '[Translate to Dansk:] Regular Element #3',
554  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
555  ],
556  ],
557  'sys_language_mode' => 'content_fallback',
558  'sys_language_contentOL' => 'hideNonTranslated'
559  ],
560  //Setting sys_language_mode = strict has the same effect as previous data sets, because the translation of the page exists
561  [
562  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
563  config.sys_language_mode = strict',
564  'visibleRecords' => [
565  297 => [
566  'header' => '[Translate to Dansk:] Regular Element #1',
567  'image' => [],
568  ],
569  299 => [
570  'header' => '[Translate to Dansk:] Regular Element #3',
571  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
572  ],
573  ],
574  'sys_language_mode' => 'strict',
575  'sys_language_contentOL' => 'hideNonTranslated'
576  ],
577  [
578  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
579  config.sys_language_mode = ignore',
580  'visibleRecords' => [
581  297 => [
582  'header' => '[Translate to Dansk:] Regular Element #1',
583  'image' => [],
584  ],
585  299 => [
586  'header' => '[Translate to Dansk:] Regular Element #3',
587  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
588  ],
589  ],
590  'sys_language_mode' => 'ignore',
591  'sys_language_contentOL' => 'hideNonTranslated'
592  ],
593  ];
594  }
595 
605  public function ‪renderingOfDutchLanguage(string $typoScript, array $visibleRecords, string $sysLanguageMode, string $sysLanguageContentOL)
606  {
607  $this->addTypoScriptToTemplateRecord(1, $typoScript);
608  $frontendResponse = $this->getFrontendResponse(self::VALUE_PageId, 1);
609  $responseSections = $frontendResponse->getResponseSections();
610  $visibleHeaders = array_map(function ($element) {
611  return $element['header'];
612  }, $visibleRecords);
613 
614  $this->assertThat(
615  $responseSections,
617  ->setTable(self::TABLE_Content)
618  ->setField('header')
619  ->setValues(...$visibleHeaders)
620  );
621  $this->assertThat(
622  $responseSections,
624  ->setTable(self::TABLE_Content)
625  ->setField('header')
626  ->setValues(...$this->‪getNonVisibleHeaders($visibleHeaders))
627  );
628 
629  foreach ($visibleRecords as $ttContentUid => $properties) {
630  $visibleFileTitles = $properties['image'];
631  if (!empty($visibleFileTitles)) {
632  $this->assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
633  ->setRecordIdentifier(self::TABLE_Content . ':' . $ttContentUid)->setRecordField('image')
634  ->setTable('sys_file_reference')->setField('title')->setValues(...$visibleFileTitles));
635  }
636  $this->assertThat($responseSections, $this->‪getRequestSectionStructureDoesNotHaveRecordConstraint()
637  ->setRecordIdentifier(self::TABLE_Content . ':' . $ttContentUid)->setRecordField('image')
638  ->setTable('sys_file_reference')->setField('title')->setValues(...$this->‪getNonVisibleFileTitles($visibleFileTitles)));
639  }
640 
641  $content = json_decode($frontendResponse->getContent());
642  $this->assertEquals('[DK]Page', $content->Scope->page->title);
643  $this->assertEquals(1, $content->Scope->tsfe->sys_language_uid, 'sys_language_uid doesn\'t match');
644  $this->assertEquals(1, $content->Scope->tsfe->sys_language_content, 'sys_language_content doesn\'t match');
645  $this->assertEquals($sysLanguageMode, $content->Scope->tsfe->sys_language_mode, 'sys_language_mode doesn\t match');
646  $this->assertEquals($sysLanguageContentOL, $content->Scope->tsfe->sys_language_contentOL, 'sys_language_contentOL doesn\t match');
647  }
648 
649  public function ‪contentOnNonTranslatedPageDataProvider(): array
650  {
651  //Expected behaviour:
652  //the page is NOT translated so setting sys_language_mode to different values changes the results
653  //- setting sys_language_mode to empty value makes TYPO3 return default language records
654  //- setting it to strict throws 404, independently from other settings
655  //Setting config.sys_language_overlay = 0
656  return [
657  [
658  'typoScript' => 'config.sys_language_overlay = 0
659  config.sys_language_mode =',
660  'visibleRecords' => [
661  297 => [
662  'header' => 'Regular Element #1',
663  'image' => ['T3BOARD'],
664  ],
665  298 => [
666  'header' => 'Regular Element #2',
667  'image' => ['Kasper2'],
668  ],
669  299 => [
670  'header' => 'Regular Element #3',
671  'image' => ['Kasper'],
672  ],
673  ],
674  'pageTitle' => 'Default language Page',
675  'sys_language_uid' => 0,
676  'sys_language_content' => 0,
677  'sys_language_mode' => '',
678  'sys_language_contentOL' => 0,
679  ],
680  [
681  'typoScript' => 'config.sys_language_overlay = 0
682  config.sys_language_mode = content_fallback',
683  'visibleRecords' => [
684  297 => [
685  'header' => 'Regular Element #1',
686  'image' => ['T3BOARD'],
687  ],
688  298 => [
689  'header' => 'Regular Element #2',
690  'image' => ['Kasper2'],
691  ],
692  299 => [
693  'header' => 'Regular Element #3',
694  'image' => ['Kasper'],
695  ],
696  ],
697  'pageTitle' => 'Default language Page',
698  'sys_language_uid' => 2,
699  'sys_language_content' => 0,
700  'sys_language_mode' => 'content_fallback',
701  'sys_language_contentOL' => 0,
702  ],
703  [
704  'typoScript' => 'config.sys_language_overlay = 0
705  config.sys_language_mode = content_fallback;1,0',
706  'visibleRecords' => [
707  300 => [
708  'header' => '[Translate to Dansk:] Regular Element #3',
709  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
710  ],
711  301 => [
712  'header' => '[Translate to Dansk:] Regular Element #1',
713  'image' => [],
714  ],
715  303 => [
716  'header' => '[DK] Without default language',
717  'image' => ['[T3BOARD] Image added to DK element without default language'],
718  ],
719  308 => [
720  'header' => '[DK] UnHidden Element #4',
721  'image' => [],
722  ],
723  ],
724  'pageTitle' => '[DK]Page',
725  'sys_language_uid' => 2,
726  'sys_language_content' => 1,
727  'sys_language_mode' => 'content_fallback',
728  'sys_language_contentOL' => 0,
729  ],
730  [
731  'typoScript' => 'config.sys_language_overlay = 0
732  config.sys_language_mode = strict',
733  'visibleRecords' => [],
734  'pageTitle' => '',
735  'sys_language_uid' => 2,
736  'sys_language_content' => 2,
737  'sys_language_mode' => 'strict',
738  'sys_language_contentOL' => 0,
739  'statusCode' => 404,
740  ],
741  [
742  'typoScript' => 'config.sys_language_overlay = 0
743  config.sys_language_mode = ignore',
744  'visibleRecords' => [
745  302 => [
746  'header' => '[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1',
747  'image' => ['[T3BOARD] image translated to DE from DK'],
748  ],
749  304 => [
750  'header' => '[DE] Without default language',
751  'image' => [],
752  ],
753  ],
754  'pageTitle' => 'Default language Page',
755  'sys_language_uid' => 2,
756  'sys_language_content' => 2,
757  'sys_language_mode' => 'ignore',
758  'sys_language_contentOL' => 0,
759  ],
760  5 => [
761  'typoScript' => 'config.sys_language_overlay = 1
762  config.sys_language_mode =',
763  'visibleRecords' => [
764  297 => [
765  'header' => 'Regular Element #1',
766  'image' => ['T3BOARD'],
767  ],
768  298 => [
769  'header' => 'Regular Element #2',
770  'image' => ['Kasper2'],
771  ],
772  299 => [
773  'header' => 'Regular Element #3',
774  'image' => ['Kasper'],
775  ],
776  ],
777  'pageTitle' => 'Default language Page',
778  'sys_language_uid' => 0,
779  'sys_language_content' => 0,
780  'sys_language_mode' => '',
781  'sys_language_contentOL' => 1,
782  ],
783  //falling back to default language
784  [
785  'typoScript' => 'config.sys_language_overlay = 1
786  config.sys_language_mode = content_fallback',
787  'visibleRecords' => [
788  297 => [
789  'header' => 'Regular Element #1',
790  'image' => ['T3BOARD'],
791  ],
792  298 => [
793  'header' => 'Regular Element #2',
794  'image' => ['Kasper2'],
795  ],
796  299 => [
797  'header' => 'Regular Element #3',
798  'image' => ['Kasper'],
799  ],
800  ],
801  'pageTitle' => 'Default language Page',
802  'sys_language_uid' => 2,
803  'sys_language_content' => 0,
804  'sys_language_mode' => 'content_fallback',
805  'sys_language_contentOL' => 1,
806  ],
807  //Dutch elements are shown because of the content fallback 1,0 - first Dutch, then default language
808  //note that '[DK] Without default language' is NOT shown - due to overlays (fetch default language and overlay it with translations)
809  [
810  'typoScript' => 'config.sys_language_overlay = 1
811  config.sys_language_mode = content_fallback;1,0',
812  'visibleRecords' => [
813  297 => [
814  'header' => '[Translate to Dansk:] Regular Element #1',
815  'image' => [],
816  ],
817  298 => [
818  'header' => 'Regular Element #2',
819  'image' => ['Kasper2'],
820  ],
821  299 => [
822  'header' => '[Translate to Dansk:] Regular Element #3',
823  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
824  ],
825  ],
826  'pageTitle' => '[DK]Page',
827  'sys_language_uid' => 2,
828  'sys_language_content' => 1,
829  'sys_language_mode' => 'content_fallback',
830  'sys_language_contentOL' => 1,
831  ],
832  [
833  'typoScript' => 'config.sys_language_overlay = 1
834  config.sys_language_mode = strict',
835  'visibleRecords' => [],
836  'pageTitle' => '',
837  'sys_language_uid' => 2,
838  'sys_language_content' => 2,
839  'sys_language_mode' => 'strict',
840  'sys_language_contentOL' => 1,
841  'statusCode' => 404
842  ],
843  [
844  'typoScript' => 'config.sys_language_overlay = 1
845  config.sys_language_mode = ignore',
846  'visibleRecords' => [
847  297 => [
848  'header' => '[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1',
849  'image' => ['[T3BOARD] image translated to DE from DK'],
850  ],
851  298 => [
852  'header' => 'Regular Element #2',
853  'image' => ['Kasper2'],
854  ],
855  299 => [
856  'header' => 'Regular Element #3',
857  'image' => ['Kasper'],
858  ],
859  ],
860  'pageTitle' => 'Default language Page',
861  'sys_language_uid' => 2,
862  'sys_language_content' => 2,
863  'sys_language_mode' => 'ignore',
864  'sys_language_contentOL' => 1,
865  ],
866  10 => [
867  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
868  config.sys_language_mode =',
869  'visibleRecords' => [
870  297 => [
871  'header' => 'Regular Element #1',
872  'image' => ['T3BOARD'],
873  ],
874  298 => [
875  'header' => 'Regular Element #2',
876  'image' => ['Kasper2'],
877  ],
878  299 => [
879  'header' => 'Regular Element #3',
880  'image' => ['Kasper'],
881  ],
882  ],
883  'pageTitle' => 'Default language Page',
884  'sys_language_uid' => 0,
885  'sys_language_content' => 0,
886  'sys_language_mode' => '',
887  'sys_language_contentOL' => 'hideNonTranslated',
888  ],
889  [
890  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
891  config.sys_language_mode = content_fallback',
892  'visibleRecords' => [
893  297 => [
894  'header' => 'Regular Element #1',
895  'image' => ['T3BOARD'],
896  ],
897  298 => [
898  'header' => 'Regular Element #2',
899  'image' => ['Kasper2'],
900  ],
901  299 => [
902  'header' => 'Regular Element #3',
903  'image' => ['Kasper'],
904  ],
905  ],
906  'pageTitle' => 'Default language Page',
907  'sys_language_uid' => 2,
908  'sys_language_content' => 0,
909  'sys_language_mode' => 'content_fallback',
910  'sys_language_contentOL' => 'hideNonTranslated',
911  ],
912  [
913  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
914  config.sys_language_mode = content_fallback;1,0',
915  'visibleRecords' => [
916  297 => [
917  'header' => '[Translate to Dansk:] Regular Element #1',
918  'image' => [],
919  ],
920  299 => [
921  'header' => '[Translate to Dansk:] Regular Element #3',
922  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
923  ],
924  ],
925  'pageTitle' => '[DK]Page',
926  'sys_language_uid' => 2,
927  'sys_language_content' => 1,
928  'sys_language_mode' => 'content_fallback',
929  'sys_language_contentOL' => 'hideNonTranslated',
930  ],
931  [
932  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
933  config.sys_language_mode = strict',
934  'visibleRecords' => [],
935  'pageTitle' => '',
936  'sys_language_uid' => 2,
937  'sys_language_content' => 2,
938  'sys_language_mode' => 'strict',
939  'sys_language_contentOL' => 'hideNonTranslated',
940  'statusCode' => 404,
941  ],
942  [
943  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
944  config.sys_language_mode = ignore',
945  'visibleRecords' => [
946  297 => [
947  'header' => '[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1',
948  'image' => ['[T3BOARD] image translated to DE from DK'],
949  ],
950  ],
951  'pageTitle' => 'Default language Page',
952  'sys_language_uid' => 2,
953  'sys_language_content' => 2,
954  'sys_language_mode' => 'ignore',
955  'sys_language_contentOL' => 'hideNonTranslated',
956  ],
957  ];
958  }
959 
975  public function ‪contentOnNonTranslatedPageGerman(string $typoScript, array $visibleRecords, string $pageTitle, int $sysLanguageUid, int $sysLanguageContent, string $sysLanguageMode, string $sysLanguageContentOL, int $statusCode = 200)
976  {
977  $this->addTypoScriptToTemplateRecord(1, $typoScript);
978  $visibleHeaders = array_column($visibleRecords, 'header');
979 
980  $response = $this->executeFrontendRequest(
981  (new InternalRequest())
982  ->withPageId(self::VALUE_PageId)
983  ->withLanguageId(2)
984  );
985 
986  if ($statusCode === 200) {
987  $responseStructure = ResponseContent::fromString((string)$response->getBody());
988  $responseSections = $responseStructure->getSections();
989 
990  $this->assertThat(
991  $responseSections,
993  ->setTable(self::TABLE_Content)
994  ->setField('header')
995  ->setValues(...$visibleHeaders)
996  );
997  $this->assertThat(
998  $responseSections,
1000  ->setTable(self::TABLE_Content)
1001  ->setField('header')
1002  ->setValues(...$this->‪getNonVisibleHeaders($visibleHeaders))
1003  );
1004 
1005  foreach ($visibleRecords as $ttContentUid => $properties) {
1006  $visibleFileTitles = $properties['image'];
1007  if (!empty($visibleFileTitles)) {
1008  $this->assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
1009  ->setRecordIdentifier(self::TABLE_Content . ':' . $ttContentUid)->setRecordField('image')
1010  ->setTable('sys_file_reference')->setField('title')->setValues(...$visibleFileTitles));
1011  }
1012  $this->assertThat($responseSections, $this->‪getRequestSectionStructureDoesNotHaveRecordConstraint()
1013  ->setRecordIdentifier(self::TABLE_Content . ':' . $ttContentUid)->setRecordField('image')
1014  ->setTable('sys_file_reference')->setField('title')->setValues(...$this->‪getNonVisibleFileTitles($visibleFileTitles)));
1015  }
1016 
1017  $this->assertEquals($pageTitle, $responseStructure->getScopePath('page/title'));
1018  $this->assertEquals($sysLanguageUid, $responseStructure->getScopePath('tsfe/sys_language_uid'), 'sys_language_uid doesn\'t match');
1019  $this->assertEquals($sysLanguageContent, $responseStructure->getScopePath('tsfe/sys_language_content'), 'sys_language_content doesn\'t match');
1020  $this->assertEquals($sysLanguageMode, $responseStructure->getScopePath('tsfe/sys_language_mode'), 'sys_language_mode doesn\t match');
1021  $this->assertEquals($sysLanguageContentOL, $responseStructure->getScopePath('tsfe/sys_language_contentOL'), 'sys_language_contentOL doesn\t match');
1022  }
1023 
1024  $this->assertEquals($statusCode, $response->getStatusCode());
1025  }
1026 
1027  public function ‪contentOnPartiallyTranslatedPageDataProvider(): array
1028  {
1029 
1030  //Expected behaviour:
1031  //Setting sys_language_mode to different values doesn't influence the result as the requested page is translated to Polish,
1032  //Page title is always [PL]Page, and both sys_language_content and sys_language_uid are always 3
1033  return [
1034  [
1035  'typoScript' => 'config.sys_language_overlay = 0
1036  config.sys_language_mode =',
1037  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', '[PL] Without default language'],
1038  'sys_language_mode' => '',
1039  'sys_language_contentOL' => 0
1040  ],
1041  [
1042  'typoScript' => 'config.sys_language_overlay = 0
1043  config.sys_language_mode = content_fallback',
1044  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', '[PL] Without default language'],
1045  'sys_language_mode' => 'content_fallback',
1046  'sys_language_contentOL' => 0
1047  ],
1048  [
1049  'typoScript' => 'config.sys_language_overlay = 0
1050  config.sys_language_mode = content_fallback;1,0',
1051  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', '[PL] Without default language'],
1052  'sys_language_mode' => 'content_fallback',
1053  'sys_language_contentOL' => 0
1054  ],
1055  [
1056  'typoScript' => 'config.sys_language_overlay = 0
1057  config.sys_language_mode = strict',
1058  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', '[PL] Without default language'],
1059  'sys_language_mode' => 'strict',
1060  'sys_language_contentOL' => 0
1061  ],
1062  [
1063  'typoScript' => 'config.sys_language_overlay = 0
1064  config.sys_language_mode = ignore',
1065  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', '[PL] Without default language'],
1066  'sys_language_mode' => 'ignore',
1067  'sys_language_contentOL' => 0
1068  ],
1069  5 => [
1070  'typoScript' => 'config.sys_language_overlay = 1
1071  config.sys_language_mode =',
1072  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', 'Regular Element #2', 'Regular Element #3'],
1073  'sys_language_mode' => '',
1074  'sys_language_contentOL' => 1
1075  ],
1076  // Expected behaviour:
1077  // Not translated element #2 is shown because sys_language_overlay = 1 (with sys_language_overlay = hideNonTranslated, it would be hidden)
1078  [
1079  'typoScript' => 'config.sys_language_overlay = 1
1080  config.sys_language_mode = content_fallback',
1081  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', 'Regular Element #2', 'Regular Element #3'],
1082  'sys_language_mode' => 'content_fallback',
1083  'sys_language_contentOL' => 1
1084  ],
1085  // Expected behaviour:
1086  // Element #3 is not translated in PL and it is translated in DK. It's not shown as content_fallback is not related to single CE level
1087  // but on page level - and this page is translated to Polish, so no fallback is happening
1088  [
1089  'typoScript' => 'config.sys_language_overlay = 1
1090  config.sys_language_mode = content_fallback;1,0',
1091  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', 'Regular Element #2', 'Regular Element #3'],
1092  'sys_language_mode' => 'content_fallback',
1093  'sys_language_contentOL' => 1
1094  ],
1095  [
1096  'typoScript' => 'config.sys_language_overlay = 1
1097  config.sys_language_mode = strict',
1098  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', 'Regular Element #2', 'Regular Element #3'],
1099  'sys_language_mode' => 'strict',
1100  'sys_language_contentOL' => 1
1101  ],
1102  [
1103  'typoScript' => 'config.sys_language_overlay = 1
1104  config.sys_language_mode = ignore',
1105  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', 'Regular Element #2', 'Regular Element #3'],
1106  'sys_language_mode' => 'ignore',
1107  'sys_language_contentOL' => 1
1108  ],
1109  // Expected behaviour:
1110  // Non translated default language elements are not shown, because of hideNonTranslated
1111  10 => [
1112  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
1113  config.sys_language_mode =',
1114  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1'],
1115  'sys_language_mode' => '',
1116  'sys_language_contentOL' => 'hideNonTranslated'
1117  ],
1118  [
1119  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
1120  config.sys_language_mode = content_fallback',
1121  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1'],
1122  'sys_language_mode' => 'content_fallback',
1123  'sys_language_contentOL' => 'hideNonTranslated'
1124  ],
1125  [
1126  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
1127  config.sys_language_mode = content_fallback;1,0',
1128  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1'],
1129  'sys_language_mode' => 'content_fallback',
1130  'sys_language_contentOL' => 'hideNonTranslated'
1131  ],
1132  [
1133  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
1134  config.sys_language_mode = strict',
1135  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1'],
1136  'sys_language_mode' => 'strict',
1137  'sys_language_contentOL' => 'hideNonTranslated'
1138  ],
1139  [
1140  'typoScript' => 'config.sys_language_overlay = hideNonTranslated
1141  config.sys_language_mode = ignore',
1142  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1'],
1143  'sys_language_mode' => 'ignore',
1144  'sys_language_contentOL' => 'hideNonTranslated'
1145  ]
1146  ];
1147  }
1148 
1160  public function ‪contentOnPartiallyTranslatedPage(string $typoScript, array $visibleHeaders, string $sysLanguageMode, string $sysLanguageContentOL)
1161  {
1162  $this->addTypoScriptToTemplateRecord(1, $typoScript);
1163 
1164  $frontendResponse = $this->getFrontendResponse(self::VALUE_PageId, 3);
1165  $this->assertEquals('success', $frontendResponse->getStatus());
1166  $responseSections = $frontendResponse->getResponseSections();
1167 
1168  $this->assertThat(
1169  $responseSections,
1171  ->setTable(self::TABLE_Content)
1172  ->setField('header')
1173  ->setValues(...$visibleHeaders)
1174  );
1175  $this->assertThat(
1176  $responseSections,
1178  ->setTable(self::TABLE_Content)
1179  ->setField('header')
1180  ->setValues(...$this->‪getNonVisibleHeaders($visibleHeaders))
1181  );
1182 
1183  $content = json_decode($frontendResponse->getContent());
1184  $this->assertEquals('[PL]Page', $content->Scope->page->title);
1185  $this->assertEquals(3, $content->Scope->tsfe->sys_language_uid, 'sys_language_uid doesn\'t match');
1186  $this->assertEquals(3, $content->Scope->tsfe->sys_language_content, 'sys_language_content doesn\'t match');
1187  $this->assertEquals($sysLanguageMode, $content->Scope->tsfe->sys_language_mode, 'sys_language_mode doesn\t match');
1188  $this->assertEquals($sysLanguageContentOL, $content->Scope->tsfe->sys_language_contentOL, 'sys_language_contentOL doesn\t match');
1189  }
1190 
1197  protected function ‪getNonVisibleHeaders(array $visibleHeaders): array
1198  {
1199  $allElements = [
1200  'Regular Element #1',
1201  'Regular Element #2',
1202  'Regular Element #3',
1203  'Hidden Element #4',
1204  '[Translate to Dansk:] Regular Element #1',
1205  '[Translate to Dansk:] Regular Element #3',
1206  '[DK] Without default language',
1207  '[DK] UnHidden Element #4',
1208  '[DE] Without default language',
1209  '[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1',
1210  '[Translate to Polski:] Regular Element #1',
1211  '[PL] Without default language',
1212  '[PL] Hidden Regular Element #2'
1213  ];
1214  return array_diff($allElements, $visibleHeaders);
1215  }
1216 
1223  protected function ‪getNonVisibleFileTitles(array $visibleTitles): array
1224  {
1225  $allElements = [
1226  'T3BOARD',
1227  'Kasper',
1228  '[Kasper] Image translated to Dansk',
1229  '[T3BOARD] Image added in Dansk (without parent)',
1230  '[T3BOARD] Image added to DK element without default language',
1231  '[T3BOARD] image translated to DE from DK',
1232  'Kasper2',
1233  ];
1234  return array_diff($allElements, $visibleTitles);
1235  }
1236 }
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest\defaultLanguageConfigurationDataProvider
‪defaultLanguageConfigurationDataProvider()
Definition: LocalizedContentRenderingTest.php:114
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest\TABLE_Content
‪const TABLE_Content
Definition: LocalizedContentRenderingTest.php:78
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase\getRequestSectionHasRecordConstraint
‪HasRecordConstraint getRequestSectionHasRecordConstraint()
Definition: AbstractDataHandlerActionTestCase.php:174
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase\getRequestSectionStructureHasRecordConstraint
‪StructureHasRecordConstraint getRequestSectionStructureHasRecordConstraint()
Definition: AbstractDataHandlerActionTestCase.php:190
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest\renderingOfDutchLanguage
‪renderingOfDutchLanguage(string $typoScript, array $visibleRecords, string $sysLanguageMode, string $sysLanguageContentOL)
Definition: LocalizedContentRenderingTest.php:602
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest
Definition: LocalizedContentRenderingTest.php:76
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest\VALUE_PageId
‪const VALUE_PageId
Definition: LocalizedContentRenderingTest.php:77
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase\getRequestSectionStructureDoesNotHaveRecordConstraint
‪StructureDoesNotHaveRecordConstraint getRequestSectionStructureDoesNotHaveRecordConstraint()
Definition: AbstractDataHandlerActionTestCase.php:198
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase
Definition: AbstractDataHandlerActionTestCase.php:33
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest\onlyEnglishContentIsRenderedForDefaultLanguage
‪onlyEnglishContentIsRenderedForDefaultLanguage(string $typoScript, string $sysLanguageMode, string $sysLanguageContentOL)
Definition: LocalizedContentRenderingTest.php:221
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest\getNonVisibleFileTitles
‪array getNonVisibleFileTitles(array $visibleTitles)
Definition: LocalizedContentRenderingTest.php:1220
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest\contentOnPartiallyTranslatedPageDataProvider
‪contentOnPartiallyTranslatedPageDataProvider()
Definition: LocalizedContentRenderingTest.php:1024
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest\contentOnNonTranslatedPageGerman
‪contentOnNonTranslatedPageGerman(string $typoScript, array $visibleRecords, string $pageTitle, int $sysLanguageUid, int $sysLanguageContent, string $sysLanguageMode, string $sysLanguageContentOL, int $statusCode=200)
Definition: LocalizedContentRenderingTest.php:972
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest\contentOnNonTranslatedPageDataProvider
‪contentOnNonTranslatedPageDataProvider()
Definition: LocalizedContentRenderingTest.php:646
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest\dutchDataProvider
‪array dutchDataProvider()
Definition: LocalizedContentRenderingTest.php:276
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase\getRequestSectionDoesNotHaveRecordConstraint
‪DoesNotHaveRecordConstraint getRequestSectionDoesNotHaveRecordConstraint()
Definition: AbstractDataHandlerActionTestCase.php:182
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest\$scenarioDataSetDirectory
‪string $scenarioDataSetDirectory
Definition: LocalizedContentRenderingTest.php:83
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest\$pathsToLinkInTestInstance
‪array $pathsToLinkInTestInstance
Definition: LocalizedContentRenderingTest.php:98
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest\$configurationToUseInTestInstance
‪array $configurationToUseInTestInstance
Definition: LocalizedContentRenderingTest.php:90
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest\TABLE_Pages
‪const TABLE_Pages
Definition: LocalizedContentRenderingTest.php:79
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering
Definition: LocalizedContentRenderingTest.php:4
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest\setUp
‪setUp()
Definition: LocalizedContentRenderingTest.php:103
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase\importScenarioDataSet
‪importScenarioDataSet($dataSetName)
Definition: AbstractDataHandlerActionTestCase.php:117
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest\contentOnPartiallyTranslatedPage
‪contentOnPartiallyTranslatedPage(string $typoScript, array $visibleHeaders, string $sysLanguageMode, string $sysLanguageContentOL)
Definition: LocalizedContentRenderingTest.php:1157
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\LocalizedContentRenderingTest\getNonVisibleHeaders
‪array getNonVisibleHeaders(array $visibleHeaders)
Definition: LocalizedContentRenderingTest.php:1194