‪TYPO3CMS  11.5
PageRouterTest.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 Prophecy\Argument;
21 use Prophecy\PhpUnit\ProphecyTrait;
30 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
31 
32 class ‪PageRouterTest extends UnitTestCase
33 {
34  use ProphecyTrait;
35 
39  protected ‪$resetSingletonInstances = true;
40 
45  {
46  $this->expectException(RouteNotFoundException::class);
47  $this->expectExceptionCode(1555303496);
48  $incomingUrl = 'https://king.com/lotus-flower/en/mr-magpie/bloom';
49  $request = new ‪ServerRequest($incomingUrl, 'GET');
50  $subject = new ‪PageRouter(new ‪Site('lotus-flower', 13, []));
51  $subject->matchRequest($request, null);
52  }
53 
57  public function ‪properSiteConfigurationFindsRoute(): void
58  {
59  $incomingUrl = 'https://king.com/lotus-flower/en/mr-magpie/bloom';
60  $pageRecord = ['uid' => 13, 'l10n_parent' => 0, 'slug' => '/mr-magpie/bloom', 'sys_language_uid' => 0];
61  $site = new ‪Site('lotus-flower', 13, [
62  'base' => '/lotus-flower/',
63  'languages' => [
64  0 => [
65  'languageId' => 0,
66  'locale' => 'en_US.UTF-8',
67  'base' => '/en/',
68  ],
69  ],
70  ]);
71  $language = $site->getDefaultLanguage();
72 
73  $pageSlugCandidateProvider = $this->prophesize(PageSlugCandidateProvider::class);
74  $pageSlugCandidateProvider->getCandidatesForPath('/mr-magpie/bloom', $language)->willReturn([$pageRecord]);
75  GeneralUtility::addInstance(PageSlugCandidateProvider::class, $pageSlugCandidateProvider->reveal());
76 
77  $request = new ‪ServerRequest($incomingUrl, 'GET');
78  $previousResult = new ‪SiteRouteResult($request->getUri(), $site, $language, '/mr-magpie/bloom');
79  $routeResult = (new ‪PageRouter($site))->matchRequest($request, $previousResult);
80 
81  $expectedRouteResult = new ‪PageArguments(13, '0', [], [], []);
82  self::assertEquals($expectedRouteResult, $routeResult);
83  }
84 
90  {
91  $incomingUrl = 'https://king.com/lotus-flower/en/mr-magpie/bloom';
92  $pageRecord = ['uid' => 13, 'l10n_parent' => 0, 'slug' => '/mr-magpie/bloom', 'sys_language_uid' => 0];
93  $site = new ‪Site('lotus-flower', 13, [
94  'base' => '/lotus-flower/',
95  'languages' => [
96  0 => [
97  'languageId' => 0,
98  'locale' => 'en_US.UTF-8',
99  'base' => '/en',
100  ],
101  ],
102  ]);
103  $language = $site->getDefaultLanguage();
104  $pageSlugCandidateProvider = $this->prophesize(PageSlugCandidateProvider::class);
105  $pageSlugCandidateProvider->getCandidatesForPath(Argument::cetera())->willReturn([$pageRecord]);
106  GeneralUtility::addInstance(PageSlugCandidateProvider::class, $pageSlugCandidateProvider->reveal());
107 
108  $request = new ‪ServerRequest($incomingUrl, 'GET');
109  $previousResult = new ‪SiteRouteResult($request->getUri(), $site, $language, '/mr-magpie/bloom/');
110  $routeResult = (new ‪PageRouter($site))->matchRequest($request, $previousResult);
111 
112  $expectedRouteResult = new ‪PageArguments((int)$pageRecord['uid'], '0', []);
113  self::assertEquals($expectedRouteResult, $routeResult);
114  }
115 }
‪TYPO3\CMS\Core\Routing\PageArguments
Definition: PageArguments.php:26
‪TYPO3\CMS\Core\Routing\PageSlugCandidateProvider
Definition: PageSlugCandidateProvider.php:42
‪TYPO3\CMS\Core\Tests\Unit\Routing
‪TYPO3\CMS\Core\Routing\PageRouter
Definition: PageRouter.php:71
‪TYPO3\CMS\Core\Tests\Unit\Routing\PageRouterTest\$resetSingletonInstances
‪bool $resetSingletonInstances
Definition: PageRouterTest.php:37
‪TYPO3\CMS\Core\Routing\RouteNotFoundException
Definition: RouteNotFoundException.php:25
‪TYPO3\CMS\Core\Site\Entity\Site
Definition: Site.php:42
‪TYPO3\CMS\Core\Tests\Unit\Routing\PageRouterTest\properSiteConfigurationFindsRoute
‪properSiteConfigurationFindsRoute()
Definition: PageRouterTest.php:55
‪TYPO3\CMS\Core\Routing\SiteRouteResult
Definition: SiteRouteResult.php:30
‪TYPO3\CMS\Core\Tests\Unit\Routing\PageRouterTest
Definition: PageRouterTest.php:33
‪TYPO3\CMS\Core\Http\ServerRequest
Definition: ServerRequest.php:37
‪TYPO3\CMS\Core\Tests\Unit\Routing\PageRouterTest\matchRequestThrowsExceptionIfNoPreviousResultGiven
‪matchRequestThrowsExceptionIfNoPreviousResultGiven()
Definition: PageRouterTest.php:42
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Core\Tests\Unit\Routing\PageRouterTest\properSiteConfigurationWithoutTrailingSlashFindsRoute
‪properSiteConfigurationWithoutTrailingSlashFindsRoute()
Definition: PageRouterTest.php:87