‪TYPO3CMS  11.5
TitleTagRenderingTest.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 Symfony\Component\Yaml\Yaml;
22 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\InternalRequest;
23 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
24 
28 class ‪TitleTagRenderingTest extends FunctionalTestCase
29 {
30  protected ‪$coreExtensionsToLoad = ['seo'];
31 
33  'SC_OPTIONS' => [
34  'Core/TypoScript/TemplateService' => [
35  'runThroughTemplatesPostProcessing' => [
36  'FunctionalTest' => \TYPO3\TestingFramework\Core\Functional\Framework\Frontend\Hook\TypoScriptInstructionModifier::class . '->apply',
37  ],
38  ],
39  ],
40  'FE' => [
41  'cacheHash' => [
42  'enforceValidation' => false,
43  ],
44  ],
45  ];
46 
47  protected function ‪setUp(): void
48  {
49  parent::setUp();
50  $this->importCsvDataSet(__DIR__ . '/../Fixtures/pages-title-tag.csv');
51  $this->setUpFrontendRootPage(
52  1,
53  ['EXT:frontend/Tests/Functional/Rendering/Fixtures/TitleTagRenderingTest.typoscript']
54  );
55  $this->‪setUpFrontendSite(1);
56  }
57 
64  protected function ‪setUpFrontendSite(int $pageId): void
65  {
66  $configuration = [
67  'rootPageId' => $pageId,
68  'base' => '/',
69  'websiteTitle' => '',
70  'languages' => [
71  [
72  'title' => 'English',
73  'enabled' => true,
74  'languageId' => '0',
75  'base' => '/',
76  'typo3Language' => 'default',
77  'locale' => 'en_US.UTF-8',
78  'iso-639-1' => 'en',
79  'websiteTitle' => 'Site EN',
80  'navigationTitle' => '',
81  'hreflang' => '',
82  'direction' => '',
83  'flag' => 'us',
84  ],
85  ],
86  'errorHandling' => [],
87  'routes' => [],
88  ];
89  ‪GeneralUtility::mkdir_deep($this->instancePath . '/typo3conf/sites/testing/');
90  $yamlFileContents = Yaml::dump($configuration, 99, 2);
91  $fileName = $this->instancePath . '/typo3conf/sites/testing/config.yaml';
92  ‪GeneralUtility::writeFile($fileName, $yamlFileContents);
93  }
94 
95  public function ‪titleTagDataProvider(): array
96  {
97  return [
98  [
99  [
100  'pageId' => 1000,
101  ],
102  [
103  'assertRegExp' => '#<title>Site EN: Root 1000</title>#',
104  'assertNotRegExp' => '',
105  ],
106  ],
107  [
108  [
109  'pageId' => 1001,
110  ],
111  [
112  'assertRegExp' => '#<title>Site EN: SEO Root 1001</title>#',
113  'assertNotRegExp' => '',
114  ],
115  ],
116  [
117  [
118  'pageId' => 1000,
119  'noPageTitle' => 1,
120  ],
121  [
122  'assertRegExp' => '#<title>Site EN</title>#',
123  'assertNotRegExp' => '',
124  ],
125  ],
126  [
127  [
128  'pageId' => 1001,
129  'noPageTitle' => 1,
130  ],
131  [
132  'assertRegExp' => '#<title>Site EN</title>#',
133  'assertNotRegExp' => '',
134  ],
135  ],
136  [
137  [
138  'pageId' => 1000,
139  'noPageTitle' => 2,
140  ],
141  [
142  'assertRegExp' => '',
143  'assertNotRegExp' => '#<title>.*</title>#',
144  ],
145  ],
146  [
147  [
148  'pageId' => 1001,
149  'noPageTitle' => 2,
150  ],
151  [
152  'assertRegExp' => '',
153  'assertNotRegExp' => '#<title>.*</title>#',
154  ],
155  ],
156  [
157  [
158  'pageId' => 1000,
159  'noPageTitle' => 2,
160  'headerData' => 1,
161  ],
162  [
163  'assertRegExp' => '#<title>Header Data Title</title>#',
164  'assertNotRegExp' => '',
165  ],
166  ],
167  [
168  [
169  'pageId' => 1001,
170  'noPageTitle' => 2,
171  'headerData' => 1,
172  ],
173  [
174  'assertRegExp' => '#<title>Header Data Title</title>#',
175  'assertNotRegExp' => '',
176  ],
177  ],
178  [
179  [
180  'pageId' => 1000,
181  'pageTitleTS' => 1,
182  ],
183  [
184  'assertRegExp' => '#<title>SITE EN: ROOT 1000</title>#',
185  'assertNotRegExp' => '',
186  ],
187  ],
188  [
189  [
190  'pageId' => 1000,
191  'pageTitleFirst' => 1,
192  ],
193  [
194  'assertRegExp' => '#<title>Root 1000: Site EN</title>#',
195  'assertNotRegExp' => '',
196  ],
197  ],
198  [
199  [
200  'pageId' => 1000,
201  'pageTitleSeparator' => 'typoscriptText',
202  ],
203  [
204  'assertRegExp' => '#<title>Site EN| Root 1000</title>#',
205  'assertNotRegExp' => '',
206  ],
207  ],
208  [
209  [
210  'pageId' => 1000,
211  'pageTitleSeparator' => 'typoscriptStdwrap',
212  ],
213  [
214  'assertRegExp' => '#<title>Site EN - Root 1000</title>#',
215  'assertNotRegExp' => '',
216  ],
217  ],
218  ];
219  }
220 
225  public function ‪checkIfCorrectTitleTagIsRendered(array $pageConfig, array $expectations): void
226  {
227  $response = $this->executeFrontendSubRequest(
228  (new InternalRequest())->withQueryParameters([
229  'id' => (int)$pageConfig['pageId'],
230  'noPageTitle' => (int)($pageConfig['noPageTitle'] ?? 0),
231  'headerData' => (int)($pageConfig['headerData'] ?? 0),
232  'pageTitleTS' => (int)($pageConfig['pageTitleTS'] ?? 0),
233  'pageTitleFirst' => (int)($pageConfig['pageTitleFirst'] ?? 0),
234  'pageTitleSeparator' => $pageConfig['pageTitleSeparator'] ?? '',
235  ])
236  );
237  $content = (string)$response->getBody();
238  if ($expectations['assertRegExp']) {
239  self::assertMatchesRegularExpression($expectations['assertRegExp'], $content);
240  }
241  if ($expectations['assertNotRegExp']) {
242  self::assertDoesNotMatchRegularExpression($expectations['assertNotRegExp'], $content);
243  }
244  }
245 }
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\TitleTagRenderingTest\checkIfCorrectTitleTagIsRendered
‪checkIfCorrectTitleTagIsRendered(array $pageConfig, array $expectations)
Definition: TitleTagRenderingTest.php:225
‪TYPO3
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\TitleTagRenderingTest\titleTagDataProvider
‪titleTagDataProvider()
Definition: TitleTagRenderingTest.php:95
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\TitleTagRenderingTest\setUp
‪setUp()
Definition: TitleTagRenderingTest.php:47
‪TYPO3\CMS\Core\Utility\GeneralUtility\mkdir_deep
‪static mkdir_deep($directory)
Definition: GeneralUtility.php:1908
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\TitleTagRenderingTest\$configurationToUseInTestInstance
‪$configurationToUseInTestInstance
Definition: TitleTagRenderingTest.php:32
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\TitleTagRenderingTest\setUpFrontendSite
‪setUpFrontendSite(int $pageId)
Definition: TitleTagRenderingTest.php:64
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\TitleTagRenderingTest\$coreExtensionsToLoad
‪$coreExtensionsToLoad
Definition: TitleTagRenderingTest.php:30
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering
Definition: LocalizedSiteContentRenderingTest.php:18
‪TYPO3\CMS\Core\Utility\GeneralUtility\writeFile
‪static bool writeFile($file, $content, $changePermissions=false)
Definition: GeneralUtility.php:1722
‪TYPO3\CMS\Frontend\Tests\Functional\Rendering\TitleTagRenderingTest
Definition: TitleTagRenderingTest.php:29