‪TYPO3CMS  ‪main
ResourceViewHelperTest.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;
26 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
27 use TYPO3Fluid\Fluid\View\TemplateView;
28 
29 final class ‪ResourceViewHelperTest extends FunctionalTestCase
30 {
31  protected bool ‪$initializeDatabase = false;
32 
33  #[Test]
35  {
36  $this->expectException(\RuntimeException::class);
37  $this->expectExceptionCode(1639672666);
38  $context = $this->get(RenderingContextFactory::class)->create();
39  $context->getTemplatePaths()->setTemplateSource('<f:uri.resource path="Icons/Extension.svg" />');
40  $context->setRequest(new ‪ServerRequest());
41  (new TemplateView($context))->‪render();
42  }
43 
44  #[Test]
46  {
47  $context = $this->get(RenderingContextFactory::class)->create();
48  $context->getTemplatePaths()->setTemplateSource('<f:uri.resource path="Icons/Extension.svg" />');
49  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
50  $context->setRequest(new ‪Request($serverRequest));
51  $this->expectException(\RuntimeException::class);
52  $this->expectExceptionCode(1640097205);
53  (new TemplateView($context))->‪render();
54  }
55 
56  public static function ‪renderWithoutRequestDataProvider(): \Generator
57  {
58  yield 'render returns URI using UpperCamelCase extensionName' => [
59  '<f:uri.resource path="Icons/Extension.svg" extensionName="Core" />',
60  'typo3/sysext/core/Resources/Public/Icons/Extension.svg',
61  ];
62  yield 'render returns URI using extension key as extensionName' => [
63  '<f:uri.resource path="Icons/Extension.svg" extensionName="core" />',
64  'typo3/sysext/core/Resources/Public/Icons/Extension.svg',
65  ];
66  yield 'render returns URI using EXT: syntax' => [
67  '<f:uri.resource path="EXT:core/Resources/Public/Icons/Extension.svg" />',
68  'typo3/sysext/core/Resources/Public/Icons/Extension.svg',
69  ];
70  }
71 
72  #[DataProvider('renderWithoutRequestDataProvider')]
73  #[Test]
74  public function ‪render(string $template, string $expected): void
75  {
76  $context = $this->get(RenderingContextFactory::class)->create();
77  $context->getTemplatePaths()->setTemplateSource($template);
78  self::assertSame($expected, (new TemplateView($context))->‪render());
79  }
80 
81  public static function ‪renderWithExtbaseRequestDataProvider(): \Generator
82  {
83  yield 'render returns URI using extensionName from Extbase Request' => [
84  '<f:uri.resource path="Icons/Extension.svg" />',
85  'typo3/sysext/core/Resources/Public/Icons/Extension.svg',
86  ];
87  yield 'render gracefully trims leading slashes from path' => [
88  '<f:uri.resource path="/Icons/Extension.svg" />',
89  'typo3/sysext/core/Resources/Public/Icons/Extension.svg',
90  ];
91  yield 'render returns URI using UpperCamelCase extensionName' => [
92  '<f:uri.resource path="Icons/Extension.svg" extensionName="Core" />',
93  'typo3/sysext/core/Resources/Public/Icons/Extension.svg',
94  ];
95  yield 'render returns URI using extension key as extensionName' => [
96  '<f:uri.resource path="Icons/Extension.svg" extensionName="core" />',
97  'typo3/sysext/core/Resources/Public/Icons/Extension.svg',
98  ];
99  yield 'render returns URI using EXT: syntax' => [
100  '<f:uri.resource path="EXT:core/Resources/Public/Icons/Extension.svg" />',
101  'typo3/sysext/core/Resources/Public/Icons/Extension.svg',
102  ];
103  }
104 
105  #[DataProvider('renderWithExtbaseRequestDataProvider')]
106  #[Test]
107  public function ‪renderWithExtbaseRequest(string $template, string $expected): void
108  {
109  $extbaseRequestParameters = new ‪ExtbaseRequestParameters();
110  $extbaseRequestParameters->setControllerExtensionName('Core');
111  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', $extbaseRequestParameters);
112  $extbaseRequest = (new ‪Request($serverRequest));
113  $context = $this->get(RenderingContextFactory::class)->create();
114  $context->getTemplatePaths()->setTemplateSource($template);
115  $context->setRequest($extbaseRequest);
116  self::assertEquals($expected, (new TemplateView($context))->‪render());
117  }
118 }
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Uri\ResourceViewHelperTest
Definition: ResourceViewHelperTest.php:30
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Uri\ResourceViewHelperTest\renderWithExtbaseRequestDataProvider
‪static renderWithExtbaseRequestDataProvider()
Definition: ResourceViewHelperTest.php:81
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Uri\ResourceViewHelperTest\renderingFailsWithNonExtSyntaxWithoutExtensionNameWithPsr7Request
‪renderingFailsWithNonExtSyntaxWithoutExtensionNameWithPsr7Request()
Definition: ResourceViewHelperTest.php:34
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Uri\ResourceViewHelperTest\renderWithExtbaseRequest
‪renderWithExtbaseRequest(string $template, string $expected)
Definition: ResourceViewHelperTest.php:107
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Uri\ResourceViewHelperTest\renderingFailsWhenExtensionNameNotSetInExtbaseRequest
‪renderingFailsWhenExtensionNameNotSetInExtbaseRequest()
Definition: ResourceViewHelperTest.php:45
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Uri\ResourceViewHelperTest\$initializeDatabase
‪bool $initializeDatabase
Definition: ResourceViewHelperTest.php:31
‪TYPO3\CMS\Core\Http\ServerRequest
Definition: ServerRequest.php:39
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Uri\ResourceViewHelperTest\render
‪render(string $template, string $expected)
Definition: ResourceViewHelperTest.php:74
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Uri
Definition: ActionViewHelperTest.php:18
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Uri\ResourceViewHelperTest\renderWithoutRequestDataProvider
‪static renderWithoutRequestDataProvider()
Definition: ResourceViewHelperTest.php:56
‪TYPO3\CMS\Fluid\Core\Rendering\RenderingContextFactory
Definition: RenderingContextFactory.php:51
‪TYPO3\CMS\Extbase\Mvc\ExtbaseRequestParameters
Definition: ExtbaseRequestParameters.php:35
‪TYPO3\CMS\Extbase\Mvc\Request
Definition: Request.php:35