‪TYPO3CMS  11.5
PageTypeDecoratorTest.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 
28 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\InternalRequest;
29 
34 {
39  {
40  $testSets = [];
41  foreach (‪Builder::create()->declarePageTypes() as $pageTypeDeclaration) {
42  $testSet = ‪TestSet::create()
43  ->withMergedApplicables($pageTypeDeclaration)
44  ->withVariables($pageTypeDeclaration->getVariables());
45 
46  $testSetWithoutEnhancers =
47  ‪TestSet::create($testSet)
48  ->withMergedApplicables(‪LanguageContext::create(0))
49  ->withTargetPageId(3000)
50  ->withUrl(
52  'https://archive.acme.com/[[index]][[pathSuffix]]',
53  ‪Variables::create(['pathSuffix' => '', 'index' => ''])
54  )
55  )
56  ;
57  $testSets = array_merge(
58  $testSets,
59  [$testSetWithoutEnhancers->describe() => [$testSetWithoutEnhancers]],
60  );
61  }
62  return $testSets;
63  }
64 
70  public function ‪pageTypeDecoratorIsApplied(‪TestSet $testSet): void
71  {
72  parent::pageTypeDecoratorIsApplied($testSet);
73  }
74 
79  {
80  $testSets = [];
81  foreach (‪Builder::create()->declarePageTypes() as $pageTypeDeclaration) {
82  $testSet = ‪TestSet::create()
83  ->withMergedApplicables($pageTypeDeclaration)
84  ->withVariables($pageTypeDeclaration->getVariables());
85 
86  $testSetForPageContainingIndexInSlug =
87  ‪TestSet::create($testSet)
88  ->withMergedApplicables(‪LanguageContext::create(0))
89  ->withTargetPageId(3200)
90  ->withUrl(
92  'https://archive.acme.com/stock-index[[pathSuffix]]',
93  ‪Variables::create(['pathSuffix' => ''])
94  )
95  )
96  ;
97  $testSets = array_merge(
98  $testSets,
99  [$testSetForPageContainingIndexInSlug->describe() => [$testSetForPageContainingIndexInSlug]]
100  );
101  }
102  return $testSets;
103  }
104 
110  public function ‪pageTypeDecoratorIndexCanBePartOfSlug(‪TestSet $testSet): void
111  {
112  $builder = ‪Builder::create();
113  $targetUri = $builder->compileUrl($testSet);
115  $languageContext = $testSet->‪getSingleApplicable(LanguageContext::class);
116  $expectedLanguageId = $languageContext->getLanguageId();
117  $expectation = $builder->compileResolveArguments($testSet);
118 
119  $overrides = [
120  'routeEnhancers' => [
121  'PageType' => $builder->compilePageTypeConfiguration($testSet),
122  ],
123  ];
124  $this->‪mergeSiteConfiguration('archive-acme-com', $overrides);
125 
126  $allParameters = array_replace_recursive(
127  $expectation['dynamicArguments'],
128  $expectation['staticArguments']
129  );
130  $expectation['pageId'] = $testSet->‪getTargetPageId();
131  $expectation['languageId'] = $expectedLanguageId;
132  $expectation['requestQueryParams'] = $allParameters;
133  $expectation['_GET'] = $allParameters;
134 
135  $response = $this->executeFrontendSubRequest(
136  new InternalRequest($targetUri),
137  null,
138  true
139  );
140 
141  $pageArguments = json_decode((string)$response->getBody(), true);
142  self::assertEquals($expectation, $pageArguments);
143  }
144 
149  {
150  $this->‪mergeSiteConfiguration('archive-acme-com', [
151  'routeEnhancers' => [
152  'PageType' => [
153  'type' => 'PageType',
154  'default' => '/',
155  'index' => '',
156  'map' => [
157  '/' => 0,
158  'sitemap.xml' => '1533906435',
159  ],
160  ],
161  ],
162  ]);
163 
164  GeneralUtility::makeInstance(SiteConfiguration::class)->resolveAllExistingSites(false);
165  $site = GeneralUtility::makeInstance(SiteFinder::class)->getSiteByIdentifier('archive-acme-com');
166  $uri = $site->getRouter()->generateUri(3000);
167  self::assertEquals('https://archive.acme.com/', (string)$uri);
168  $uri = $site->getRouter()->generateUri(3000, ['type' => '1533906435']);
169  self::assertEquals('https://archive.acme.com/sitemap.xml', (string)$uri);
170  $uri = $site->getRouter()->generateUri(3000, ['type' => '13']);
171  self::assertEquals('https://archive.acme.com/?type=13', (string)$uri);
172  }
173 }
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest
Definition: AbstractEnhancerSiteRequestTest.php:18
‪TYPO3\CMS\Core\Site\SiteFinder
Definition: SiteFinder.php:31
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\PageTypeDecoratorTest\unmappedPageTypeDecoratorIsAddedAsRegularQueryParam
‪unmappedPageTypeDecoratorIsAddedAsRegularQueryParam()
Definition: PageTypeDecoratorTest.php:148
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\Variables
Definition: Variables.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\PageTypeDecoratorTest\pageTypeDecoratorIndexCanBePartOfSlug
‪pageTypeDecoratorIndexCanBePartOfSlug(TestSet $testSet)
Definition: PageTypeDecoratorTest.php:110
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\TestSet
Definition: TestSet.php:21
‪TYPO3\CMS\Core\Configuration\SiteConfiguration
Definition: SiteConfiguration.php:43
‪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\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariableValue\create
‪static create(string $value, Variables $defaultVariables=null)
Definition: VariableValue.php:43
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\Variables\create
‪static create(array $items=[])
Definition: Variables.php:22
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\AbstractEnhancerSiteRequestTest
Definition: AbstractEnhancerSiteRequestTest.php:34
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\TestSet\getTargetPageId
‪int null getTargetPageId()
Definition: TestSet.php:61
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\PageTypeDecoratorTest\pageTypeDecoratorIndexCanBePartOfSlugDataProvider
‪array pageTypeDecoratorIndexCanBePartOfSlugDataProvider()
Definition: PageTypeDecoratorTest.php:78
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\PageTypeDecoratorTest\pageTypeDecoratorIsAppliedDataProvider
‪array pageTypeDecoratorIsAppliedDataProvider()
Definition: PageTypeDecoratorTest.php:38
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\TestSet\getSingleApplicable
‪getSingleApplicable(string $type)
Definition: TestSet.php:78
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\PageTypeDecoratorTest
Definition: PageTypeDecoratorTest.php:34
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\LanguageContext
Definition: LanguageContext.php:21
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariableValue
Definition: VariableValue.php:21
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\mergeSiteConfiguration
‪mergeSiteConfiguration(string $identifier, array $overrides)
Definition: SiteBasedTestTrait.php:89
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\TestSet\create
‪static create($parentSet=null)
Definition: TestSet.php:42
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\PageTypeDecoratorTest\pageTypeDecoratorIsApplied
‪pageTypeDecoratorIsApplied(TestSet $testSet)
Definition: PageTypeDecoratorTest.php:70
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\LanguageContext\create
‪static create(int $languageId)
Definition: LanguageContext.php:24