‪TYPO3CMS  ‪main
PageRendererViewHelperTest.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;
29 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
30 use TYPO3Fluid\Fluid\View\TemplateView;
31 
32 final class ‪PageRendererViewHelperTest extends FunctionalTestCase
33 {
34  public static function ‪renderDataProvider(): array
35  {
36  return [
37  'renderSetsPageTitle' => [
38  '<f:be.pageRenderer pageTitle="foo" />',
39  '<title>foo</title>',
40  ],
41  'renderIncludesCssFile' => [
42  '<f:be.pageRenderer includeCssFiles="{0: \'EXT:backend/Resources/Public/Css/backend.css\'}" />',
43  'rel="stylesheet" href="typo3/sysext/backend/Resources/Public/Css/backend.css',
44  ],
45  'renderIncludesJsFile' => [
46  '<f:be.pageRenderer includeJsFiles="{0: \'EXT:backend/Resources/Public/JavaScript/backend.js\'}" />',
47  '<script src="typo3/sysext/backend/Resources/Public/JavaScript/backend.js',
48  ],
49  'renderIncludesInlineSettings' => [
50  '<f:be.pageRenderer addInlineSettings="{\'foo\': \'bar\'}" />',
51  '"TYPO3":{"settings":{"foo":"bar"',
52  ],
53  'renderResolvesLabelUsingExtSyntax' => [
54  '<f:be.pageRenderer addJsInlineLabels="{\'login.header\': \'LLL:EXT:backend/Resources/Private/Language/locallang.xlf:login.header\'}" />',
55  '"lang":{"login.header":"Login"}',
56  ],
57  ];
58  }
59 
60  #[DataProvider('renderDataProvider')]
61  #[Test]
62  public function ‪render(string $template, string $expected): void
63  {
64  $context = $this->get(RenderingContextFactory::class)->create();
65  $context->getTemplatePaths()->setTemplateSource($template);
66  $view = new TemplateView($context);
67  ‪$GLOBALS['LANG'] = $this->get(LanguageServiceFactory::class)->create('default');
68  $view->render();
69  $pageRenderer = $this->get(PageRenderer::class);
70  // PageRenderer depends on request to determine FE vs. BE
71  ‪$GLOBALS['TYPO3_REQUEST'] = (new ‪ServerRequest('https://example.com/typo3/'))->withAttribute('applicationType', ‪SystemEnvironmentBuilder::REQUESTTYPE_BE);
72  self::assertStringContainsString($expected, $pageRenderer->renderResponse()->getBody()->__toString());
73  }
74 
75  #[Test]
77  {
78  $context = $this->get(RenderingContextFactory::class)->create();
79  $context->getTemplatePaths()->setTemplateSource('<f:be.pageRenderer addJsInlineLabels="{0: \'login.header\'}" />');
80  $extbaseRequestParameters = new ‪ExtbaseRequestParameters();
81  $extbaseRequestParameters->setControllerExtensionName('Backend');
82  $serverRequest = (new ‪ServerRequest('https://example.com/typo3/'))->withAttribute('extbase', $extbaseRequestParameters)->withAttribute('applicationType', ‪SystemEnvironmentBuilder::REQUESTTYPE_BE);
83  ‪$GLOBALS['TYPO3_REQUEST'] = $serverRequest;
84  $context->setRequest(new ‪Request($serverRequest));
85  $view = new TemplateView($context);
86  ‪$GLOBALS['LANG'] = $this->get(LanguageServiceFactory::class)->create('default');
87  $view->render();
88  $pageRenderer = $this->get(PageRenderer::class);
89  // PageRenderer depends on request to determine FE vs. BE
90  ‪$GLOBALS['TYPO3_REQUEST'] = (new ‪ServerRequest('https://example.com/typo3/'))->withAttribute('applicationType', ‪SystemEnvironmentBuilder::REQUESTTYPE_BE);
91  self::assertStringContainsString('"lang":{"login.header":"Login"}', $pageRenderer->renderResponse()->getBody()->__toString());
92  }
93 }
‪TYPO3\CMS\Core\Localization\LanguageServiceFactory
Definition: LanguageServiceFactory.php:25
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\PageRendererViewHelperTest\render
‪render(string $template, string $expected)
Definition: PageRendererViewHelperTest.php:62
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder
Definition: SystemEnvironmentBuilder.php:41
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\PageRendererViewHelperTest\renderResolvesLabelWithExtbaseRequest
‪renderResolvesLabelWithExtbaseRequest()
Definition: PageRendererViewHelperTest.php:76
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\REQUESTTYPE_BE
‪const REQUESTTYPE_BE
Definition: SystemEnvironmentBuilder.php:45
‪TYPO3\CMS\Core\Page\PageRenderer
Definition: PageRenderer.php:44
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\PageRendererViewHelperTest\renderDataProvider
‪static renderDataProvider()
Definition: PageRendererViewHelperTest.php:34
‪TYPO3\CMS\Core\Http\ServerRequest
Definition: ServerRequest.php:39
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Fluid\Core\Rendering\RenderingContextFactory
Definition: RenderingContextFactory.php:51
‪TYPO3\CMS\Extbase\Mvc\ExtbaseRequestParameters
Definition: ExtbaseRequestParameters.php:35
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\PageRendererViewHelperTest
Definition: PageRendererViewHelperTest.php:33
‪TYPO3\CMS\Extbase\Mvc\Request
Definition: Request.php:35