‪TYPO3CMS  11.5
ScriptViewHelperTest.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 
22 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
23 
24 class ‪ScriptViewHelperTest extends FunctionalTestCase
25 {
29  protected ‪$initializeDatabase = false;
30 
31  public function ‪sourceDataProvider(): array
32  {
33  return [
34  'fileadmin reference' => ['fileadmin/JavaScript/foo.js'],
35  'EXT: reference' => ['EXT:core/Resources/Public/JavaScript/foo.js'],
36  'external reference' => ['https://typo3.com/foo.js'],
37  'external reference with 1 parameter' => ['https://typo3.com/foo.js?foo=bar'],
38  'external reference with 2 parameters' => ['https://typo3.com/foo.js?foo=bar&bar=baz'],
39  ];
40  }
41 
46  public function ‪sourceStringIsNotHtmlEncodedBeforePassedToAssetCollector(string $src): void
47  {
48  $viewHelper = new ‪ScriptViewHelper();
49  $assetCollector = new ‪AssetCollector();
50  $viewHelper->injectAssetCollector($assetCollector);
51  $viewHelper->setArguments([
52  'identifier' => 'test',
53  'src' => $src,
54  'priority' => false,
55  ]);
56  $viewHelper->initializeArgumentsAndRender();
57  $collectedJavaScripts = $assetCollector->getJavaScripts();
58  self::assertSame($collectedJavaScripts['test']['source'], $src);
59  self::assertSame($collectedJavaScripts['test']['attributes'], []);
60  }
61 
65  public function ‪booleanAttributesAreProperlyConverted(): void
66  {
67  $viewHelper = new ScriptViewHelper();
68  $assetCollector = new AssetCollector();
69  $viewHelper->injectAssetCollector($assetCollector);
70  $viewHelper->setArguments([
71  'identifier' => 'test',
72  'src' => 'my.js',
73  'async' => true,
74  'defer' => true,
75  'nomodule' => true,
76  'priority' => false,
77  ]);
78  $viewHelper->initializeArgumentsAndRender();
79  $collectedJavaScripts = $assetCollector->getJavaScripts();
80  self::assertSame($collectedJavaScripts['test']['source'], 'my.js');
81  self::assertSame($collectedJavaScripts['test']['attributes'], ['async' => 'async', 'defer' => 'defer', 'nomodule' => 'nomodule']);
82  }
83 }
‪TYPO3\CMS\Core\Page\AssetCollector
Definition: AssetCollector.php:42
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Asset
Definition: CssViewHelperTest.php:18
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Asset\ScriptViewHelperTest\$initializeDatabase
‪bool $initializeDatabase
Definition: ScriptViewHelperTest.php:28
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Asset\ScriptViewHelperTest\sourceStringIsNotHtmlEncodedBeforePassedToAssetCollector
‪sourceStringIsNotHtmlEncodedBeforePassedToAssetCollector(string $src)
Definition: ScriptViewHelperTest.php:45
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Asset\ScriptViewHelperTest\booleanAttributesAreProperlyConverted
‪booleanAttributesAreProperlyConverted()
Definition: ScriptViewHelperTest.php:64
‪TYPO3\CMS\Fluid\ViewHelpers\Asset\ScriptViewHelper
Definition: ScriptViewHelper.php:38
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Asset\ScriptViewHelperTest
Definition: ScriptViewHelperTest.php:25
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Asset\ScriptViewHelperTest\sourceDataProvider
‪sourceDataProvider()
Definition: ScriptViewHelperTest.php:30