‪TYPO3CMS  11.5
AbstractEnhancerLinkGeneratorTestCase.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 
25 use TYPO3\TestingFramework\Core\Functional\Framework\DataHandling\Scenario\DataHandlerFactory;
26 use TYPO3\TestingFramework\Core\Functional\Framework\DataHandling\Scenario\DataHandlerWriter;
27 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\InternalRequest;
28 
33 {
34  protected function ‪setUp(): void
35  {
36  parent::setUp();
37 
39  'acme-com',
40  $this->‪buildSiteConfiguration(1000, 'https://acme.com/'),
41  [
42  $this->‪buildDefaultLanguageConfiguration('EN', 'https://acme.us/'),
43  $this->‪buildLanguageConfiguration('FR', 'https://acme.fr/', ['EN']),
44  $this->‪buildLanguageConfiguration('FR-CA', 'https://acme.ca/', ['FR', 'EN']),
45  ]
46  );
47 
49  'archive-acme-com',
50  $this->‪buildSiteConfiguration(3000, 'https://archive.acme.com/'),
51  [
52  $this->‪buildDefaultLanguageConfiguration('EN', '/'),
53  $this->‪buildLanguageConfiguration('FR', 'https://archive.acme.com/fr/', ['EN']),
54  $this->‪buildLanguageConfiguration('FR-CA', 'https://archive.acme.com/ca/', ['FR', 'EN']),
55  ]
56  );
57 
58  $this->withDatabaseSnapshot(function () {
59  $this->‪setUpDatabase();
60  });
61  }
62 
63  protected function ‪setUpDatabase(): void
64  {
65  $backendUser = $this->setUpBackendUserFromFixture(1);
67 
68  $scenarioFile = __DIR__ . '/../Fixtures/SlugScenario.yaml';
69  $factory = DataHandlerFactory::fromYamlFile($scenarioFile);
70  $writer = DataHandlerWriter::withBackendUser($backendUser);
71  $writer->invokeFactory($factory);
72  static::failIfArrayIsNotEmpty(
73  $writer->getErrors()
74  );
75 
76  $this->setUpFrontendRootPage(
77  1000,
78  [
79  'typo3/sysext/frontend/Tests/Functional/SiteHandling/Fixtures/LinkGenerator.typoscript',
80  ],
81  [
82  'title' => 'ACME Root',
83  ]
84  );
85  }
86 
92  protected function ‪pageTypeDecoratorIsApplied(‪TestSet $testSet): void
93  {
94  $builder = ‪Builder::create();
95  $enhancerConfiguration = $builder->compileEnhancerConfiguration($testSet);
96  $pageTypeConfiguration = $builder->compilePageTypeConfiguration($testSet);
97  $additionalParameters = $builder->compileGenerateParameters($testSet);
99  $languageContext = $testSet->‪getSingleApplicable(LanguageContext::class);
100  $targetLanguageId = $languageContext->getLanguageId();
101  $expectation = $builder->compileUrl($testSet);
102 
103  $this->‪mergeSiteConfiguration('acme-com', [
104  'routeEnhancers' => [
105  'Enhancer' => $enhancerConfiguration,
106  'PageType' => $pageTypeConfiguration,
107  ],
108  ]);
109 
110  $this->‪mergeSiteConfiguration('archive-acme-com', [
111  'routeEnhancers' => [
112  'Enhancer' => $enhancerConfiguration,
113  'PageType' => $pageTypeConfiguration,
114  ],
115  ]);
116 
117  $response = $this->executeFrontendSubRequest(
118  (new InternalRequest('https://acme.us/'))
119  ->withPageId(1100)
120  ->withInstructions([
122  'parameter' => $testSet->‪getTargetPageId(),
123  'language' => $targetLanguageId,
124  'additionalParams' => $additionalParameters,
125  'forceAbsoluteUrl' => 1,
126  ]),
127  ])
128  );
129 
130  self::assertStringStartsWith($expectation, (string)$response->getBody());
131  }
132 
139  protected function ‪assertGeneratedUriEquals(‪TestSet $testSet, bool $strict = true): void
140  {
141  $builder = ‪Builder::create();
142  $enhancerConfiguration = $builder->compileEnhancerConfiguration($testSet);
143  $additionalParameters = $builder->compileGenerateParameters($testSet);
145  $languageContext = $testSet->‪getSingleApplicable(LanguageContext::class);
146  $targetLanguageId = $languageContext->getLanguageId();
147  $expectation = $builder->compileUrl($testSet);
148 
149  $this->‪mergeSiteConfiguration('acme-com', [
150  'routeEnhancers' => ['Enhancer' => $enhancerConfiguration],
151  ]);
152  $this->‪mergeSiteConfiguration('archive-acme-com', [
153  'routeEnhancers' => ['Enhancer' => $enhancerConfiguration],
154  ]);
155 
156  $response = $this->executeFrontendSubRequest(
157  (new InternalRequest('https://acme.us/'))
158  ->withPageId(1100)
159  ->withInstructions([
161  'parameter' => $testSet->‪getTargetPageId(),
162  'language' => $targetLanguageId,
163  'additionalParams' => $additionalParameters,
164  'forceAbsoluteUrl' => 1,
165  ]),
166  ])
167  );
168 
169  $actual = (string)$response->getBody();
170  if ($strict) {
171  self::assertSame($expectation, $actual);
172  } else {
173  self::assertStringStartsWith($expectation, $actual);
174  }
175  }
176 }
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerLinkGenerator\AbstractEnhancerLinkGeneratorTestCase\assertGeneratedUriEquals
‪assertGeneratedUriEquals(TestSet $testSet, bool $strict=true)
Definition: AbstractEnhancerLinkGeneratorTestCase.php:139
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerLinkGenerator\AbstractEnhancerLinkGeneratorTestCase
Definition: AbstractEnhancerLinkGeneratorTestCase.php:33
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildLanguageConfiguration
‪array buildLanguageConfiguration(string $identifier, string $base, array $fallbackIdentifiers=[], string $fallbackType=null)
Definition: SiteBasedTestTrait.php:144
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerLinkGenerator\AbstractEnhancerLinkGeneratorTestCase\setUpDatabase
‪setUpDatabase()
Definition: AbstractEnhancerLinkGeneratorTestCase.php:63
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\writeSiteConfiguration
‪writeSiteConfiguration(string $identifier, array $site=[], array $languages=[], array $errorHandling=[])
Definition: SiteBasedTestTrait.php:58
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\AbstractTestCase
Definition: AbstractTestCase.php:29
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\TestSet
Definition: TestSet.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\Builder
Definition: Builder.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\Builder\create
‪static create()
Definition: Builder.php:22
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildDefaultLanguageConfiguration
‪array buildDefaultLanguageConfiguration(string $identifier, string $base)
Definition: SiteBasedTestTrait.php:126
‪TYPO3\CMS\Core\Core\Bootstrap\initializeLanguageObject
‪static initializeLanguageObject()
Definition: Bootstrap.php:598
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\AbstractTestCase\createTypoLinkUrlInstruction
‪ArrayValueInstruction createTypoLinkUrlInstruction(array $typoScript)
Definition: AbstractTestCase.php:130
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\TestSet\getTargetPageId
‪int null getTargetPageId()
Definition: TestSet.php:61
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\TestSet\getSingleApplicable
‪getSingleApplicable(string $type)
Definition: TestSet.php:78
‪TYPO3\CMS\Core\Core\Bootstrap
Definition: Bootstrap.php:70
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildSiteConfiguration
‪array buildSiteConfiguration(int $rootPageId, string $base='')
Definition: SiteBasedTestTrait.php:111
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerLinkGenerator\AbstractEnhancerLinkGeneratorTestCase\setUp
‪setUp()
Definition: AbstractEnhancerLinkGeneratorTestCase.php:34
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\LanguageContext
Definition: LanguageContext.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerLinkGenerator\AbstractEnhancerLinkGeneratorTestCase\pageTypeDecoratorIsApplied
‪pageTypeDecoratorIsApplied(TestSet $testSet)
Definition: AbstractEnhancerLinkGeneratorTestCase.php:92
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\mergeSiteConfiguration
‪mergeSiteConfiguration(string $identifier, array $overrides)
Definition: SiteBasedTestTrait.php:89