Skip to content

Commit 1bca471

Browse files
ihor-svizievtuna2smc
authored andcommitted
#32922 Add logic check only import css from enabled modules
Update tests
1 parent c1347fa commit 1bca471

File tree

1 file changed

+66
-12
lines changed

1 file changed

+66
-12
lines changed

lib/internal/Magento/Framework/Css/Test/Unit/PreProcessor/Instruction/MagentoImportTest.php

Lines changed: 66 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
namespace Magento\Framework\Css\Test\Unit\PreProcessor\Instruction;
99

10+
use Magento\Framework\App\DeploymentConfig;
1011
use Magento\Framework\Css\PreProcessor\ErrorHandlerInterface;
1112
use Magento\Framework\Css\PreProcessor\Instruction\Import;
1213
use Magento\Framework\Css\PreProcessor\Instruction\MagentoImport;
@@ -16,6 +17,7 @@
1617
use Magento\Framework\View\Asset\File\FallbackContext;
1718
use Magento\Framework\View\Asset\PreProcessor\Chain;
1819
use Magento\Framework\View\Asset\Repository;
20+
use Magento\Framework\View\Design\Theme\ListInterface as ThemeListInterface;
1921
use Magento\Framework\View\Design\Theme\ThemeProviderInterface;
2022
use Magento\Framework\View\Design\ThemeInterface;
2123
use Magento\Framework\View\DesignInterface;
@@ -54,36 +56,50 @@ class MagentoImportTest extends TestCase
5456
private $assetRepoMock;
5557

5658
/**
57-
* @var ThemeProviderInterface|MockObject
59+
* @var ThemeListInterface|MockObject
5860
*/
59-
private $themeProviderMock;
61+
private $themeListMock;
62+
63+
/**
64+
* @var DeploymentConfig|MockObject
65+
*/
66+
private $deploymentConfigMock;
6067

6168
/**
6269
* @var ModuleManager|MockObject
6370
*/
6471
private $moduleManagerMock;
6572

73+
/**
74+
* @var ThemeProviderInterface|MockObject
75+
*/
76+
private $themeProviderMock;
6677
/**
6778
* @var Import
6879
*/
6980
private $object;
7081

7182
protected function setUp(): void
7283
{
73-
$this->designMock = $this->getMockForAbstractClass(DesignInterface::class);
74-
$this->fileSourceMock = $this->getMockForAbstractClass(CollectorInterface::class);
75-
$this->errorHandlerMock = $this->getMockForAbstractClass(ErrorHandlerInterface::class);
84+
$this->designMock = $this->createMock(DesignInterface::class);
85+
$this->fileSourceMock = $this->createMock(CollectorInterface::class);
86+
$this->errorHandlerMock = $this->createMock(ErrorHandlerInterface::class);
7687
$this->assetMock = $this->createMock(File::class);
77-
$this->assetMock->expects($this->any())->method('getContentType')->willReturn('css');
88+
$this->assetMock->method('getContentType')->willReturn('css');
7889
$this->assetRepoMock = $this->createMock(Repository::class);
79-
$this->themeProviderMock = $this->getMockForAbstractClass(ThemeProviderInterface::class);
90+
$this->themeListMock = $this->createMock(ThemeListInterface::class);
91+
$this->deploymentConfigMock = $this->createMock(DeploymentConfig::class);
8092
$this->moduleManagerMock = $this->createMock(ModuleManager::class);
8193

94+
$this->themeProviderMock = $this->createMock(ThemeProviderInterface::class);
95+
8296
$this->object = (new ObjectManager($this))->getObject(MagentoImport::class, [
8397
'design' => $this->designMock,
8498
'fileSource' => $this->fileSourceMock,
8599
'errorHandler' => $this->errorHandlerMock,
86100
'assetRepo' => $this->assetRepoMock,
101+
'themeList' => $this->themeListMock,
102+
'deploymentConfig' => $this->deploymentConfigMock,
87103
'moduleManager' => $this->moduleManagerMock,
88104
// Mocking private property
89105
'themeProvider' => $this->themeProviderMock,
@@ -97,7 +113,7 @@ protected function setUp(): void
97113
* @param array $foundFiles
98114
* @param string $expectedContent
99115
* @param array $enabledModules
100-
*
116+
* @param bool $onlyEnabled
101117
* @dataProvider processDataProvider
102118
*/
103119
public function testProcess(
@@ -106,7 +122,8 @@ public function testProcess(
106122
string $resolvedPath,
107123
array $foundFiles,
108124
string $expectedContent,
109-
array $enabledModules
125+
array $enabledModules,
126+
bool $onlyEnabled
110127
): void
111128
{
112129
$chain = new Chain($this->assetMock, $originalContent, 'css', 'path');
@@ -125,10 +142,10 @@ public function testProcess(
125142
$files = [];
126143
foreach ($foundFiles as $file) {
127144
$fileObject = $this->createMock(\Magento\Framework\View\File::class);
128-
$fileObject->expects($this->any())
145+
$fileObject
129146
->method('getModule')
130147
->willReturn($file['module']);
131-
$fileObject->expects($this->any())
148+
$fileObject
132149
->method('getFilename')
133150
->willReturn($file['filename']);
134151
$files[] = $fileObject;
@@ -138,7 +155,10 @@ public function testProcess(
138155
->with($theme, $resolvedPath)
139156
->willReturn($files);
140157

141-
$this->moduleManagerMock->expects($this->any())->method('isEnabled')
158+
$this->deploymentConfigMock->method('get')->with('static_content_only_enabled_modules')
159+
->willReturn($onlyEnabled);
160+
161+
$this->moduleManagerMock->method('isEnabled')
142162
->willReturnCallback(function ($moduleName) use ($enabledModules) {
143163
return in_array($moduleName, $enabledModules, true);
144164
});
@@ -164,6 +184,7 @@ public function processDataProvider(): array
164184
],
165185
"@import 'some/file.css';\n@import 'some/file.css';\n",
166186
[],
187+
true
167188
],
168189
'modular' => [
169190
'//@magento_import "Magento_Module::some/file.css";',
@@ -175,6 +196,7 @@ public function processDataProvider(): array
175196
],
176197
"@import 'Magento_Module::some/file.css';\n@import 'Magento_Two::some/file.css';\n",
177198
['Magento_Module', 'Magento_Two'],
199+
true
178200
],
179201
'modular with disabled module' => [
180202
'//@magento_import "Magento_Module::some/file.css";',
@@ -186,6 +208,7 @@ public function processDataProvider(): array
186208
],
187209
"@import 'Magento_Two::some/file.css';\n",
188210
['Magento_Two'],
211+
true
189212
],
190213
'modular with disabled all modules' => [
191214
'//@magento_import "Magento_Module::some/file.css";',
@@ -197,6 +220,7 @@ public function processDataProvider(): array
197220
],
198221
'',
199222
[],
223+
true
200224
],
201225
'non-modular reference notation' => [
202226
'//@magento_import (reference) "some/file.css";',
@@ -208,6 +232,7 @@ public function processDataProvider(): array
208232
],
209233
"@import (reference) 'some/file.css';\n@import (reference) 'some/file.css';\n",
210234
[],
235+
true
211236
],
212237
'modular reference' => [
213238
'//@magento_import (reference) "Magento_Module::some/file.css";',
@@ -220,6 +245,7 @@ public function processDataProvider(): array
220245
"@import (reference) 'Magento_Module::some/file.css';\n" .
221246
"@import (reference) 'Magento_Two::some/file.css';\n",
222247
['Magento_Module', 'Magento_Two'],
248+
true
223249
],
224250
'modular reference with disabled module' => [
225251
'//@magento_import (reference) "Magento_Module::some/file.css";',
@@ -231,6 +257,20 @@ public function processDataProvider(): array
231257
],
232258
"@import (reference) 'Magento_Module::some/file.css';\n",
233259
['Magento_Module'],
260+
true
261+
],
262+
'modular reference with disabled module and disabled "only enabled modules" flag' => [
263+
'//@magento_import (reference) "Magento_Module::some/file.css";',
264+
'Magento_Module::some/file.css',
265+
'some/file.css',
266+
[
267+
['module' => 'Magento_Module', 'filename' => 'some/file.css'],
268+
['module' => 'Magento_Two', 'filename' => 'some/file.css'],
269+
],
270+
"@import (reference) 'Magento_Module::some/file.css';\n" .
271+
"@import (reference) 'Magento_Two::some/file.css';\n",
272+
['Magento_Module'],
273+
false
234274
],
235275
'modular reference with disabled all modules' => [
236276
'//@magento_import (reference) "Magento_Module::some/file.css";',
@@ -242,6 +282,20 @@ public function processDataProvider(): array
242282
],
243283
'',
244284
[],
285+
true
286+
],
287+
'modular reference with disabled all modules and disabled "only enabled modules" flag' => [
288+
'//@magento_import (reference) "Magento_Module::some/file.css";',
289+
'Magento_Module::some/file.css',
290+
'some/file.css',
291+
[
292+
['module' => 'Magento_Module', 'filename' => 'some/file.css'],
293+
['module' => 'Magento_Two', 'filename' => 'some/file.css'],
294+
],
295+
"@import (reference) 'Magento_Module::some/file.css';\n" .
296+
"@import (reference) 'Magento_Two::some/file.css';\n",
297+
[],
298+
false
245299
],
246300
];
247301
}

0 commit comments

Comments
 (0)