‪TYPO3CMS  ‪main
TranslatedSiteContentTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\Attributes\DataProvider;
21 use PHPUnit\Framework\Attributes\Test;
23 use TYPO3\TestingFramework\Core\Functional\Framework\Constraint\RequestSection\DoesNotHaveRecordConstraint;
24 use TYPO3\TestingFramework\Core\Functional\Framework\Constraint\RequestSection\HasRecordConstraint;
25 use TYPO3\TestingFramework\Core\Functional\Framework\Constraint\RequestSection\StructureDoesNotHaveRecordConstraint;
26 use TYPO3\TestingFramework\Core\Functional\Framework\Constraint\RequestSection\StructureHasRecordConstraint;
27 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\InternalRequest;
28 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\ResponseContent;
29 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
30 
37 final class ‪TranslatedSiteContentTest extends FunctionalTestCase
38 {
40 
41  protected array ‪$testExtensionsToLoad = [
42  'typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example',
43  ];
44  protected array ‪$pathsToLinkInTestInstance = [
45  'typo3/sysext/frontend/Tests/Functional/Fixtures/Images' => 'fileadmin/user_upload',
46  ];
47 
48  private const ‪VALUE_PageId = 89;
49  private const ‪TABLE_Content = 'tt_content';
50  private const ‪LANGUAGE_PRESETS = [
51  'EN' => ['id' => 0, 'title' => 'English', 'locale' => 'en_US.UTF8'],
52  'DA' => ['id' => 1, 'title' => 'Dansk', 'locale' => 'da_DK.UTF8'],
53  'DE' => ['id' => 2, 'title' => 'Deutsch', 'locale' => 'de_DE.UTF8'],
54  'PL' => ['id' => 3, 'title' => 'Polski', 'locale' => 'pl_PL.UTF8'],
55  ];
56 
57  protected function ‪setUp(): void
58  {
59  parent::setUp();
60  $this->importCSVDataSet(__DIR__ . '/Fixtures/DataSet/LiveDefaultPages.csv');
61  $this->importCSVDataSet(__DIR__ . '/Fixtures/DataSet/LiveDefaultElements.csv');
62  $this->setUpFrontendRootPage(1, [
63  'EXT:extbase/Tests/Functional/Fixtures/Extensions/blog_example/Configuration/TypoScript/setup.typoscript',
64  'EXT:extbase/Tests/Functional/Persistence/Fixtures/Frontend/ContentJsonRenderer.typoscript',
65  ]);
66  }
67 
71  private function ‪getNonVisibleHeaders(array $visibleHeaders): array
72  {
73  $allElements = [
74  'Regular Element #1',
75  'Regular Element #2',
76  'Regular Element #3',
77  'Hidden Element #4',
78  '[Translate to Dansk:] Regular Element #1',
79  '[Translate to Dansk:] Regular Element #3',
80  '[DA] Without default language',
81  '[DA] UnHidden Element #4',
82  '[DE] Without default language',
83  '[Translate to Deutsch:] [Translate to Dansk:] Regular Element #1',
84  '[Translate to Polski:] Regular Element #1',
85  '[PL] Without default language',
86  '[PL] Hidden Regular Element #2',
87  ];
88  return array_diff($allElements, $visibleHeaders);
89  }
90 
94  private function ‪getNonVisibleFileTitles(array $visibleTitles): array
95  {
96  $allElements = [
97  'T3BOARD',
98  'Kasper',
99  '[Kasper] Image translated to Dansk',
100  '[T3BOARD] Image added in Dansk (without parent)',
101  '[T3BOARD] Image added to DA element without default language',
102  '[T3BOARD] image translated to DE from DA',
103  'Kasper2',
104  ];
105  return array_diff($allElements, $visibleTitles);
106  }
107 
111  private function ‪getNonVisibleCategoryTitles(array $visibleTitles): array
112  {
113  $allElements = [
114  'Category 1',
115  '[Translate to Dansk:] Category 1',
116  'Category 3 - not translated',
117  'Category 4',
118  ];
119  return array_diff($allElements, $visibleTitles);
120  }
121 
126  #[Test]
128  {
130  'test',
131  $this->‪buildSiteConfiguration(1, 'https://website.local/'),
132  [
133  $this->‪buildDefaultLanguageConfiguration('EN', '/en/'),
134  ],
135  $this->‪buildErrorHandlingConfiguration('Fluid', [404]),
136  );
137 
138  $response = $this->executeFrontendSubRequest(
139  new InternalRequest('https://website.local/en/?id=' . static::VALUE_PageId)
140  );
141  $responseStructure = ResponseContent::fromString((string)$response->getBody());
142  $responseSections = $responseStructure->getSection('Extbase:list()');
143  $visibleHeaders = ['Regular Element #1', 'Regular Element #2', 'Regular Element #3'];
144  self::assertThat(
145  $responseSections,
146  (new HasRecordConstraint())
147  ->setTable(self::TABLE_Content)
148  ->setField('header')
149  ->setValues(...$visibleHeaders)
150  );
151  self::assertThat(
152  $responseSections,
153  (new DoesNotHaveRecordConstraint())
154  ->setTable(self::TABLE_Content)
155  ->setField('header')
156  ->setValues(...$this->‪getNonVisibleHeaders($visibleHeaders))
157  );
158 
159  // assert FAL relations
160  $visibleFiles = ['T3BOARD'];
161  self::assertThat($responseSections, (new StructureHasRecordConstraint())
162  ->setRecordIdentifier(self::TABLE_Content . ':297')->setRecordField('image')
163  ->setTable('sys_file_reference')->setField('title')->setValues(...$visibleFiles));
164 
165  self::assertThat($responseSections, (new StructureDoesNotHaveRecordConstraint())
166  ->setRecordIdentifier(self::TABLE_Content . ':297')->setRecordField('image')
167  ->setTable('sys_file_reference')->setField('title')->setValues(...$this->‪getNonVisibleFileTitles($visibleFiles)));
168 
169  $visibleFiles = ['Kasper2'];
170  self::assertThat($responseSections, (new StructureHasRecordConstraint())
171  ->setRecordIdentifier(self::TABLE_Content . ':298')->setRecordField('image')
172  ->setTable('sys_file_reference')->setField('title')->setValues(...$visibleFiles));
173 
174  self::assertThat($responseSections, (new StructureDoesNotHaveRecordConstraint())
175  ->setRecordIdentifier(self::TABLE_Content . ':298')->setRecordField('image')
176  ->setTable('sys_file_reference')->setField('title')->setValues(...$this->‪getNonVisibleFileTitles($visibleFiles)));
177 
178  // assert Categories
179  $visibleCategories = ['Category 1', 'Category 3 - not translated'];
180  self::assertThat($responseSections, (new StructureHasRecordConstraint())
181  ->setRecordIdentifier(self::TABLE_Content . ':297')->setRecordField('categories')
182  ->setTable('sys_category')->setField('title')->setValues(...$visibleCategories));
183 
184  self::assertThat($responseSections, (new StructureDoesNotHaveRecordConstraint())
185  ->setRecordIdentifier(self::TABLE_Content . ':297')->setRecordField('categories')
186  ->setTable('sys_category')->setField('title')->setValues(...$this->‪getNonVisibleCategoryTitles($visibleCategories)));
187  }
188 
192  public static function ‪danishDataProvider(): array
193  {
194  // Expected behaviour:
195  // Page is translated to Danish, so changing sys_language_mode does NOT change the results
196  // Page title is always [DA]Page, and both sys_language_content and sys_language_uid are always 1
197  return [
198  [
199  'fallbackType' => 'free',
200  'visibleRecords' => [
201  297 => [
202  'header' => '[Translate to Dansk:] Regular Element #1',
203  'image' => [],
204  'categories' => ['[Translate to Dansk:] Category 1', 'Category 4'],
205  ],
206  299 => [
207  'header' => '[Translate to Dansk:] Regular Element #3',
208  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
209  ],
210  303 => [
211  'header' => '[DA] Without default language',
212  'image' => ['[T3BOARD] Image added to DA element without default language'],
213  ],
214  308 => [
215  'header' => '[DA] UnHidden Element #4',
216  'image' => [],
217  ],
218  ],
219  ],
220  [
221  'fallbackType' => 'fallback',
222  'visibleRecords' => [
223  297 => [
224  'header' => '[Translate to Dansk:] Regular Element #1',
225  'image' => [],
226  'categories' => ['[Translate to Dansk:] Category 1', 'Category 4'],
227  ],
228  298 => [
229  'header' => 'Regular Element #2',
230  'image' => ['Kasper2'],
231  ],
232  299 => [
233  'header' => '[Translate to Dansk:] Regular Element #3',
234  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
235  ],
236  ],
237  ],
238  [
239  'fallbackType' => 'strict',
240  'visibleRecords' => [
241  297 => [
242  'header' => '[Translate to Dansk:] Regular Element #1',
243  'image' => [],
244  'categories' => ['[Translate to Dansk:] Category 1', 'Category 4'],
245  ],
246  299 => [
247  'header' => '[Translate to Dansk:] Regular Element #3',
248  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
249  ],
250  303 => [
251  'header' => '[DA] Without default language',
252  'image' => ['[T3BOARD] Image added to DA element without default language'],
253  ],
254  ],
255  ],
256  ];
257  }
258 
259  #[DataProvider('danishDataProvider')]
260  #[Test]
261  public function ‪renderingOfDanishLanguage(string $fallbackType, array $visibleRecords): void
262  {
264  'test',
265  $this->‪buildSiteConfiguration(1, 'https://website.local/'),
266  [
267  $this->‪buildDefaultLanguageConfiguration('EN', '/en/'),
268  $this->‪buildLanguageConfiguration('DA', '/da/', [], $fallbackType),
269  ],
270  $this->‪buildErrorHandlingConfiguration('Fluid', [404]),
271  );
272 
273  $response = $this->executeFrontendSubRequest(
274  new InternalRequest('https://website.local/da/?id=' . static::VALUE_PageId)
275  );
276  $responseStructure = ResponseContent::fromString((string)$response->getBody());
277  $responseSections = $responseStructure->getSection('Extbase:list()');
278  $visibleHeaders = array_map(static fn(array $element): string => $element['header'], $visibleRecords);
279 
280  self::assertThat(
281  $responseSections,
282  (new HasRecordConstraint())
283  ->setTable(self::TABLE_Content)
284  ->setField('header')
285  ->setValues(...$visibleHeaders)
286  );
287  self::assertThat(
288  $responseSections,
289  (new DoesNotHaveRecordConstraint())
290  ->setTable(self::TABLE_Content)
291  ->setField('header')
292  ->setValues(...$this->‪getNonVisibleHeaders($visibleHeaders))
293  );
294 
295  foreach ($visibleRecords as $ttContentUid => $properties) {
296  $visibleFileTitles = $properties['image'];
297  if (!empty($visibleFileTitles)) {
298  self::assertThat($responseSections, (new StructureHasRecordConstraint())
299  ->setRecordIdentifier(self::TABLE_Content . ':' . $ttContentUid)->setRecordField('image')
300  ->setTable('sys_file_reference')->setField('title')->setValues(...$visibleFileTitles));
301  }
302  self::assertThat($responseSections, (new StructureDoesNotHaveRecordConstraint())
303  ->setRecordIdentifier(self::TABLE_Content . ':' . $ttContentUid)->setRecordField('image')
304  ->setTable('sys_file_reference')->setField('title')->setValues(...$this->‪getNonVisibleFileTitles($visibleFileTitles)));
305 
306  $visibleCategoryTitles = $properties['categories'] ?? [];
307  if (!empty($visibleCategoryTitles)) {
308  self::assertThat($responseSections, (new StructureHasRecordConstraint())
309  ->setRecordIdentifier(self::TABLE_Content . ':' . $ttContentUid)->setRecordField('categories')
310  ->setTable('sys_category')->setField('title')->setValues(...$visibleCategoryTitles));
311  }
312  self::assertThat($responseSections, (new StructureDoesNotHaveRecordConstraint())
313  ->setRecordIdentifier(self::TABLE_Content . ':' . $ttContentUid)->setRecordField('categories')
314  ->setTable('sys_category')->setField('title')->setValues(...$this->‪getNonVisibleCategoryTitles($visibleCategoryTitles)));
315  }
316  }
317 
318  public static function ‪contentOnNonTranslatedPageDataProvider(): array
319  {
320  return [
321  [
322  'fallbackType' => 'free',
323  'fallbackChain' => ['EN'],
324  'visibleRecords' => [
325  297 => [
326  'header' => 'Regular Element #1',
327  'image' => ['T3BOARD'],
328  ],
329  298 => [
330  'header' => 'Regular Element #2',
331  'image' => ['Kasper2'],
332  ],
333  299 => [
334  'header' => 'Regular Element #3',
335  'image' => ['Kasper'],
336  ],
337  ],
338  ],
339  [
340  'fallbackType' => 'free',
341  'fallbackChain' => ['DA', 'EN'],
342  'visibleRecords' => [
343  297 => [
344  'header' => '[Translate to Dansk:] Regular Element #1',
345  'image' => [],
346  ],
347  299 => [
348  'header' => '[Translate to Dansk:] Regular Element #3',
349  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
350  ],
351  303 => [
352  'header' => '[DA] Without default language',
353  'image' => ['[T3BOARD] Image added to DA element without default language'],
354  ],
355  308 => [
356  'header' => '[DA] UnHidden Element #4',
357  'image' => [],
358  ],
359  ],
360  ],
361  [
362  'fallbackType' => 'free',
363  'fallbackChain' => [],
364  'visibleRecords' => [],
365  'statusCode' => 404,
366  ],
367  // falling back to default language
368  [
369  'fallbackType' => 'fallback',
370  'fallbackChain' => ['EN'],
371  'visibleRecords' => [
372  297 => [
373  'header' => 'Regular Element #1',
374  'image' => ['T3BOARD'],
375  ],
376  298 => [
377  'header' => 'Regular Element #2',
378  'image' => ['Kasper2'],
379  ],
380  299 => [
381  'header' => 'Regular Element #3',
382  'image' => ['Kasper'],
383  ],
384  ],
385  ],
386  // danish elements are shown because of the fallback chain 1,0 - first danish, then default language
387  // note that '[DA] Without default language' is NOT shown - due to overlays (fetch default language and overlay it with translations)
388  [
389  'fallbackType' => 'fallback',
390  'fallbackChain' => ['DA', 'EN'],
391  'visibleRecords' => [
392  297 => [
393  'header' => '[Translate to Dansk:] Regular Element #1',
394  'image' => [],
395  ],
396  298 => [
397  'header' => 'Regular Element #2',
398  'image' => ['Kasper2'],
399  ],
400  299 => [
401  'header' => '[Translate to Dansk:] Regular Element #3',
402  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
403  ],
404  ],
405  ],
406  [
407  'fallbackType' => 'fallback',
408  'fallbackChain' => [],
409  'visibleRecords' => [],
410  'statusCode' => 404,
411  ],
412  [
413  'fallbackType' => 'fallback',
414  'fallbackChain' => ['DA', 'EN'],
415  'visibleRecords' => [
416  297 => [
417  'header' => '[Translate to Dansk:] Regular Element #1',
418  'image' => [],
419  ],
420  298 => [
421  'header' => 'Regular Element #2',
422  'image' => ['Kasper2'],
423  ],
424  299 => [
425  'header' => '[Translate to Dansk:] Regular Element #3',
426  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
427  ],
428  ],
429  ],
430  [
431  'fallbackType' => 'strict',
432  'fallbackChain' => ['EN'],
433  'visibleRecords' => [
434  297 => [
435  'header' => 'Regular Element #1',
436  'image' => ['T3BOARD'],
437  ],
438  298 => [
439  'header' => 'Regular Element #2',
440  'image' => ['Kasper2'],
441  ],
442  299 => [
443  'header' => 'Regular Element #3',
444  'image' => ['Kasper'],
445  ],
446  ],
447  ],
448  [
449  'fallbackType' => 'strict',
450  'fallbackChain' => ['DA', 'EN'],
451  'visibleRecords' => [
452  297 => [
453  'header' => '[Translate to Dansk:] Regular Element #1',
454  'image' => [],
455  ],
456  299 => [
457  'header' => '[Translate to Dansk:] Regular Element #3',
458  'image' => ['[Kasper] Image translated to Dansk', '[T3BOARD] Image added in Dansk (without parent)'],
459  ],
460  // Fallback chain allows Danish records, also without default languages
461  303 => [
462  'header' => '[DA] Without default language',
463  'image' => ['[T3BOARD] Image added to DA element without default language'],
464  ],
465  ],
466  ],
467  [
468  'fallbackType' => 'strict',
469  'fallbackChain' => [],
470  'visibleRecords' => [],
471  'statusCode' => 404,
472  ],
473  ];
474  }
475 
482  #[DataProvider('contentOnNonTranslatedPageDataProvider')]
483  #[Test]
484  public function ‪contentOnNonTranslatedPageGerman(string $fallbackType, array $fallbackChain, array $visibleRecords, int ‪$statusCode = 200): void
485  {
487  'main',
488  $this->‪buildSiteConfiguration(1, 'https://website.local/'),
489  [
490  $this->‪buildDefaultLanguageConfiguration('EN', '/en/'),
491  $this->‪buildLanguageConfiguration('DA', '/da/'),
492  $this->‪buildLanguageConfiguration('DE', '/de/', $fallbackChain, $fallbackType),
493  ],
494  $this->‪buildErrorHandlingConfiguration('Fluid', [404]),
495  );
496 
497  $response = $this->executeFrontendSubRequest(
498  new InternalRequest('https://website.local/de/?id=' . static::VALUE_PageId)
499  );
500 
501  if (‪$statusCode === 200) {
502  $visibleHeaders = array_column($visibleRecords, 'header');
503  $responseStructure = ResponseContent::fromString((string)$response->getBody());
504  $responseSections = $responseStructure->getSection('Extbase:list()');
505  self::assertThat(
506  $responseSections,
507  (new HasRecordConstraint())
508  ->setTable(self::TABLE_Content)
509  ->setField('header')
510  ->setValues(...$visibleHeaders)
511  );
512  self::assertThat(
513  $responseSections,
514  (new DoesNotHaveRecordConstraint())
515  ->setTable(self::TABLE_Content)
516  ->setField('header')
517  ->setValues(...$this->‪getNonVisibleHeaders($visibleHeaders))
518  );
519 
520  foreach ($visibleRecords as $ttContentUid => $properties) {
521  $visibleFileTitles = $properties['image'];
522  if (!empty($visibleFileTitles)) {
523  self::assertThat($responseSections, (new StructureHasRecordConstraint())
524  ->setRecordIdentifier(self::TABLE_Content . ':' . $ttContentUid)->setRecordField('image')
525  ->setTable('sys_file_reference')->setField('title')->setValues(...$visibleFileTitles));
526  }
527  self::assertThat($responseSections, (new StructureDoesNotHaveRecordConstraint())
528  ->setRecordIdentifier(self::TABLE_Content . ':' . $ttContentUid)->setRecordField('image')
529  ->setTable('sys_file_reference')->setField('title')->setValues(...$this->‪getNonVisibleFileTitles($visibleFileTitles)));
530  }
531  }
532  self::assertEquals(‪$statusCode, $response->getStatusCode());
533  }
534 
535  public static function ‪contentOnPartiallyTranslatedPageDataProvider(): array
536  {
537  // Expected behaviour:
538  // Setting sys_language_mode to different values doesn't influence the result as the requested page is translated to Polish,
539  // Page title is always [PL]Page, and both sys_language_content and sys_language_uid are always 3
540  return [
541  [
542  'fallbackType' => 'free',
543  'fallbackChain' => [],
544  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', '[PL] Without default language'],
545  ],
546  [
547  'fallbackType' => 'free',
548  'fallbackChain' => ['EN'],
549  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', '[PL] Without default language'],
550  ],
551  [
552  'fallbackType' => 'free',
553  'fallbackChain' => ['DA', 'EN'],
554  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', '[PL] Without default language'],
555  ],
556  [
557  'fallbackType' => 'fallback',
558  'fallbackChain' => ['EN'],
559  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', 'Regular Element #2', 'Regular Element #3'],
560  ],
561  // Expected behaviour:
562  // Not translated element #2 is shown
563  [
564  'fallbackType' => 'fallback',
565  'fallbackChain' => ['EN'],
566  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', 'Regular Element #2', 'Regular Element #3'],
567  ],
568  // Expected behaviour:
569  // Element #3 is not translated in PL and it is translated in DA. It's not shown as fallback chain is not related to single CE level
570  // but on page level - and this page is translated to Polish, so no fallback is happening
571  [
572  'fallbackType' => 'fallback',
573  'fallbackChain' => ['DA', 'EN'],
574  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', 'Regular Element #2', 'Regular Element #3'],
575  ],
576  // Expected behaviour:
577  // Non translated default language elements are not shown, because of strict mode
578  // Also, records in the PL without a default language (l10n_parent=0) are also shown
579  [
580  'fallbackType' => 'strict',
581  'fallbackChain' => [],
582  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', '[PL] Without default language'],
583  ],
584  [
585  'fallbackType' => 'strict',
586  'fallbackChain' => ['EN'],
587  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', '[PL] Without default language'],
588  ],
589  [
590  'fallbackType' => 'strict',
591  'fallbackChain' => ['DA', 'EN'],
592  'visibleRecordHeaders' => ['[Translate to Polski:] Regular Element #1', '[PL] Without default language'],
593  ],
594  ];
595  }
596 
600  #[DataProvider('contentOnPartiallyTranslatedPageDataProvider')]
601  #[Test]
602  public function ‪contentOnPartiallyTranslatedPage(string $fallbackType, array $fallbackChain, array $visibleRecordHeaders): void
603  {
605  'test',
606  $this->‪buildSiteConfiguration(1, 'https://website.local/'),
607  [
608  $this->‪buildDefaultLanguageConfiguration('EN', '/en/'),
609  $this->‪buildLanguageConfiguration('DA', '/da/'),
610  $this->‪buildLanguageConfiguration('PL', '/pl/', $fallbackChain, $fallbackType),
611  ],
612  $this->‪buildErrorHandlingConfiguration('Fluid', [404]),
613  );
614  $response = $this->executeFrontendSubRequest(
615  new InternalRequest('https://website.local/pl/?id=' . static::VALUE_PageId)
616  );
617  $responseStructure = ResponseContent::fromString((string)$response->getBody());
618  $responseSections = $responseStructure->getSections('Extbase:list()');
619 
620  self::assertEquals(200, $response->getStatusCode());
621 
622  self::assertThat(
623  $responseSections,
624  (new HasRecordConstraint())
625  ->setTable(self::TABLE_Content)
626  ->setField('header')
627  ->setValues(...$visibleRecordHeaders)
628  );
629  self::assertThat(
630  $responseSections,
631  (new DoesNotHaveRecordConstraint())
632  ->setTable(self::TABLE_Content)
633  ->setField('header')
634  ->setValues(...$this->‪getNonVisibleHeaders($visibleRecordHeaders))
635  );
636  }
637 }
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\TranslatedSiteContentTest\LANGUAGE_PRESETS
‪const LANGUAGE_PRESETS
Definition: TranslatedSiteContentTest.php:49
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildLanguageConfiguration
‪buildLanguageConfiguration(string $identifier, string $base, array $fallbackIdentifiers=[], string $fallbackType=null)
Definition: SiteBasedTestTrait.php:108
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\TranslatedSiteContentTest\getNonVisibleCategoryTitles
‪getNonVisibleCategoryTitles(array $visibleTitles)
Definition: TranslatedSiteContentTest.php:110
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\TranslatedSiteContentTest\contentOnPartiallyTranslatedPage
‪contentOnPartiallyTranslatedPage(string $fallbackType, array $fallbackChain, array $visibleRecordHeaders)
Definition: TranslatedSiteContentTest.php:601
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait
Definition: SiteBasedTestTrait.php:37
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\writeSiteConfiguration
‪writeSiteConfiguration(string $identifier, array $site=[], array $languages=[], array $errorHandling=[])
Definition: SiteBasedTestTrait.php:50
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildSiteConfiguration
‪buildSiteConfiguration(int $rootPageId, string $base='')
Definition: SiteBasedTestTrait.php:88
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\TranslatedSiteContentTest\contentOnNonTranslatedPageDataProvider
‪static contentOnNonTranslatedPageDataProvider()
Definition: TranslatedSiteContentTest.php:317
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildErrorHandlingConfiguration
‪buildErrorHandlingConfiguration(string $handler, array $codes)
Definition: SiteBasedTestTrait.php:142
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\TranslatedSiteContentTest\contentOnPartiallyTranslatedPageDataProvider
‪static contentOnPartiallyTranslatedPageDataProvider()
Definition: TranslatedSiteContentTest.php:534
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\TranslatedSiteContentTest\VALUE_PageId
‪const VALUE_PageId
Definition: TranslatedSiteContentTest.php:47
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\TranslatedSiteContentTest\onlyEnglishContentIsRenderedForDefaultLanguage
‪onlyEnglishContentIsRenderedForDefaultLanguage()
Definition: TranslatedSiteContentTest.php:126
‪TYPO3\CMS\Redirects\Message\$statusCode
‪identifier readonly UriInterface readonly int $statusCode
Definition: RedirectWasHitMessage.php:34
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\TranslatedSiteContentTest\TABLE_Content
‪const TABLE_Content
Definition: TranslatedSiteContentTest.php:48
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\TranslatedSiteContentTest\getNonVisibleFileTitles
‪getNonVisibleFileTitles(array $visibleTitles)
Definition: TranslatedSiteContentTest.php:93
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\TranslatedSiteContentTest\$pathsToLinkInTestInstance
‪array $pathsToLinkInTestInstance
Definition: TranslatedSiteContentTest.php:43
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\TranslatedSiteContentTest\renderingOfDanishLanguage
‪renderingOfDanishLanguage(string $fallbackType, array $visibleRecords)
Definition: TranslatedSiteContentTest.php:260
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence
Definition: AddTest.php:18
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildDefaultLanguageConfiguration
‪buildDefaultLanguageConfiguration(string $identifier, string $base)
Definition: SiteBasedTestTrait.php:98
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\TranslatedSiteContentTest\danishDataProvider
‪static danishDataProvider()
Definition: TranslatedSiteContentTest.php:191
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\TranslatedSiteContentTest
Definition: TranslatedSiteContentTest.php:38
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\TranslatedSiteContentTest\getNonVisibleHeaders
‪getNonVisibleHeaders(array $visibleHeaders)
Definition: TranslatedSiteContentTest.php:70
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\TranslatedSiteContentTest\setUp
‪setUp()
Definition: TranslatedSiteContentTest.php:56
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\TranslatedSiteContentTest\$testExtensionsToLoad
‪array $testExtensionsToLoad
Definition: TranslatedSiteContentTest.php:40
‪TYPO3\CMS\Extbase\Tests\Functional\Persistence\TranslatedSiteContentTest\contentOnNonTranslatedPageGerman
‪contentOnNonTranslatedPageGerman(string $fallbackType, array $fallbackChain, array $visibleRecords, int $statusCode=200)
Definition: TranslatedSiteContentTest.php:483