‪TYPO3CMS  ‪main
AssetCollectorTest.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\DataProviderExternal;
21 use PHPUnit\Framework\Attributes\Test;
24 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
25 
26 final class ‪AssetCollectorTest extends UnitTestCase
27 {
28  protected bool ‪$resetSingletonInstances = true;
30 
31  public function ‪setUp(): void
32  {
33  parent::setUp();
34  $this->assetCollector = GeneralUtility::makeInstance(AssetCollector::class);
35  }
36 
37  #[DataProviderExternal(\TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::class, 'filesDataProvider')]
38  #[Test]
39  public function ‪styleSheets(array $files, array $expectedResult): void
40  {
41  foreach ($files as $file) {
42  [‪$identifier, $source, $attributes, $options] = $file;
43  $this->assetCollector->addStyleSheet(‪$identifier, $source, $attributes, $options);
44  self::assertTrue($this->assetCollector->hasStyleSheet(‪$identifier));
45  self::assertFalse($this->assetCollector->hasInlineStyleSheet(‪$identifier));
46  self::assertFalse($this->assetCollector->hasInlineJavaScript(‪$identifier));
47  self::assertFalse($this->assetCollector->hasJavaScript(‪$identifier));
48  self::assertFalse($this->assetCollector->hasMedia(‪$identifier));
49  }
50  self::assertSame($expectedResult, $this->assetCollector->getStyleSheets());
51  self::assertSame([], $this->assetCollector->getInlineStyleSheets());
52  self::assertSame([], $this->assetCollector->getInlineJavaScripts());
53  self::assertSame([], $this->assetCollector->getJavaScripts());
54  self::assertSame([], $this->assetCollector->getMedia());
55  foreach ($files as $file) {
56  [‪$identifier] = $file;
57  $this->assetCollector->removeStyleSheet(‪$identifier);
58  }
59  self::assertSame([], $this->assetCollector->getStyleSheets());
60  self::assertSame([], $this->assetCollector->getInlineStyleSheets());
61  self::assertSame([], $this->assetCollector->getInlineJavaScripts());
62  self::assertSame([], $this->assetCollector->getJavaScripts());
63  self::assertSame([], $this->assetCollector->getMedia());
64  }
65 
66  #[DataProviderExternal(\TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::class, 'filesDataProvider')]
67  #[Test]
68  public function ‪javaScript(array $files, array $expectedResult): void
69  {
70  foreach ($files as $file) {
71  [‪$identifier, $source, $attributes, $options] = $file;
72  $this->assetCollector->addJavaScript(‪$identifier, $source, $attributes, $options);
73  self::assertTrue($this->assetCollector->hasJavaScript(‪$identifier));
74  self::assertFalse($this->assetCollector->hasInlineStyleSheet(‪$identifier));
75  self::assertFalse($this->assetCollector->hasInlineJavaScript(‪$identifier));
76  self::assertFalse($this->assetCollector->hasStyleSheet(‪$identifier));
77  self::assertFalse($this->assetCollector->hasMedia(‪$identifier));
78  }
79  self::assertSame($expectedResult, $this->assetCollector->getJavaScripts());
80  self::assertSame([], $this->assetCollector->getInlineStyleSheets());
81  self::assertSame([], $this->assetCollector->getInlineJavaScripts());
82  self::assertSame([], $this->assetCollector->getStyleSheets());
83  self::assertSame([], $this->assetCollector->getMedia());
84  foreach ($files as $file) {
85  [‪$identifier] = $file;
86  $this->assetCollector->removeJavaScript(‪$identifier);
87  }
88  self::assertSame([], $this->assetCollector->getJavaScripts());
89  self::assertSame([], $this->assetCollector->getInlineStyleSheets());
90  self::assertSame([], $this->assetCollector->getInlineJavaScripts());
91  self::assertSame([], $this->assetCollector->getStyleSheets());
92  self::assertSame([], $this->assetCollector->getMedia());
93  }
94 
95  #[DataProviderExternal(\TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::class, 'inlineDataProvider')]
96  #[Test]
97  public function ‪inlineJavaScript(array $sources, array $expectedResult): void
98  {
99  foreach ($sources as $source) {
100  [‪$identifier, $source, $attributes, $options] = $source;
101  $this->assetCollector->addInlineJavaScript(‪$identifier, $source, $attributes, $options);
102  self::assertTrue($this->assetCollector->hasInlineJavaScript(‪$identifier));
103  self::assertFalse($this->assetCollector->hasInlineStyleSheet(‪$identifier));
104  self::assertFalse($this->assetCollector->hasJavaScript(‪$identifier));
105  self::assertFalse($this->assetCollector->hasStyleSheet(‪$identifier));
106  self::assertFalse($this->assetCollector->hasMedia(‪$identifier));
107  }
108  self::assertSame($expectedResult, $this->assetCollector->getInlineJavaScripts());
109  self::assertSame([], $this->assetCollector->getInlineStyleSheets());
110  self::assertSame([], $this->assetCollector->getJavaScripts());
111  self::assertSame([], $this->assetCollector->getStyleSheets());
112  self::assertSame([], $this->assetCollector->getMedia());
113  foreach ($sources as $source) {
114  [‪$identifier] = $source;
115  $this->assetCollector->removeInlineJavaScript(‪$identifier);
116  }
117  self::assertSame([], $this->assetCollector->getInlineJavaScripts());
118  self::assertSame([], $this->assetCollector->getInlineStyleSheets());
119  self::assertSame([], $this->assetCollector->getJavaScripts());
120  self::assertSame([], $this->assetCollector->getStyleSheets());
121  self::assertSame([], $this->assetCollector->getMedia());
122  }
123 
124  #[DataProviderExternal(\TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::class, 'inlineDataProvider')]
125  #[Test]
126  public function ‪inlineStyles(array $sources, array $expectedResult): void
127  {
128  foreach ($sources as $source) {
129  [‪$identifier, $source, $attributes, $options] = $source;
130  $this->assetCollector->addInlineStyleSheet(‪$identifier, $source, $attributes, $options);
131  self::assertTrue($this->assetCollector->hasInlineStyleSheet(‪$identifier));
132  self::assertFalse($this->assetCollector->hasInlineJavaScript(‪$identifier));
133  self::assertFalse($this->assetCollector->hasJavaScript(‪$identifier));
134  self::assertFalse($this->assetCollector->hasStyleSheet(‪$identifier));
135  self::assertFalse($this->assetCollector->hasMedia(‪$identifier));
136  }
137  self::assertSame($expectedResult, $this->assetCollector->getInlineStyleSheets());
138  self::assertSame([], $this->assetCollector->getInlineJavaScripts());
139  self::assertSame([], $this->assetCollector->getJavaScripts());
140  self::assertSame([], $this->assetCollector->getStyleSheets());
141  self::assertSame([], $this->assetCollector->getMedia());
142  foreach ($sources as $source) {
143  [‪$identifier] = $source;
144  $this->assetCollector->removeInlineStyleSheet(‪$identifier);
145  }
146  self::assertSame([], $this->assetCollector->getInlineStyleSheets());
147  self::assertSame([], $this->assetCollector->getInlineJavaScripts());
148  self::assertSame([], $this->assetCollector->getJavaScripts());
149  self::assertSame([], $this->assetCollector->getStyleSheets());
150  self::assertSame([], $this->assetCollector->getMedia());
151  }
152 
153  #[DataProviderExternal(\TYPO3\CMS\Core\Tests\Unit\Page\AssetDataProvider::class, 'mediaDataProvider')]
154  #[Test]
155  public function ‪media(array $images, array $expectedResult): void
156  {
157  foreach ($images as $image) {
158  [$fileName, $additionalInformation] = $image;
159  $this->assetCollector->addMedia($fileName, $additionalInformation);
160  self::assertTrue($this->assetCollector->hasMedia($fileName));
161  self::assertFalse($this->assetCollector->hasInlineStyleSheet($fileName));
162  self::assertFalse($this->assetCollector->hasInlineJavaScript($fileName));
163  self::assertFalse($this->assetCollector->hasJavaScript($fileName));
164  self::assertFalse($this->assetCollector->hasStyleSheet($fileName));
165  }
166  self::assertSame($expectedResult, $this->assetCollector->getMedia());
167  self::assertSame([], $this->assetCollector->getInlineStyleSheets());
168  self::assertSame([], $this->assetCollector->getInlineJavaScripts());
169  self::assertSame([], $this->assetCollector->getJavaScripts());
170  self::assertSame([], $this->assetCollector->getStyleSheets());
171  foreach ($images as $image) {
172  [$fileName] = $image;
173  $this->assetCollector->removeMedia($fileName);
174  }
175  self::assertSame([], $this->assetCollector->getMedia());
176  self::assertSame([], $this->assetCollector->getInlineStyleSheets());
177  self::assertSame([], $this->assetCollector->getInlineJavaScripts());
178  self::assertSame([], $this->assetCollector->getJavaScripts());
179  self::assertSame([], $this->assetCollector->getStyleSheets());
180  }
181 }
‪TYPO3\CMS\Core\Tests\Unit\Page\AssetCollectorTest\$resetSingletonInstances
‪bool $resetSingletonInstances
Definition: AssetCollectorTest.php:28
‪TYPO3\CMS\Core\Page\AssetCollector
Definition: AssetCollector.php:42
‪TYPO3\CMS\Core\Tests\Unit\Page
Definition: AssetCollectorTest.php:18
‪TYPO3\CMS\Core\Tests\Unit\Page\AssetCollectorTest\setUp
‪setUp()
Definition: AssetCollectorTest.php:31
‪TYPO3\CMS\Core\Tests\Unit\Page\AssetCollectorTest\$assetCollector
‪AssetCollector $assetCollector
Definition: AssetCollectorTest.php:29
‪TYPO3\CMS\Core\Tests\Unit\Page\AssetCollectorTest\media
‪media(array $images, array $expectedResult)
Definition: AssetCollectorTest.php:155
‪TYPO3\CMS\Core\Tests\Unit\Page\AssetCollectorTest
Definition: AssetCollectorTest.php:27
‪TYPO3\CMS\Core\Tests\Unit\Page\AssetCollectorTest\javaScript
‪javaScript(array $files, array $expectedResult)
Definition: AssetCollectorTest.php:68
‪TYPO3\CMS\Core\Tests\Unit\Page\AssetCollectorTest\styleSheets
‪styleSheets(array $files, array $expectedResult)
Definition: AssetCollectorTest.php:39
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Core\Tests\Unit\Page\AssetCollectorTest\inlineJavaScript
‪inlineJavaScript(array $sources, array $expectedResult)
Definition: AssetCollectorTest.php:97
‪TYPO3\CMS\Webhooks\Message\$identifier
‪identifier readonly string $identifier
Definition: FileAddedMessage.php:37
‪TYPO3\CMS\Core\Tests\Unit\Page\AssetCollectorTest\inlineStyles
‪inlineStyles(array $sources, array $expectedResult)
Definition: AssetCollectorTest.php:126