Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
MergeServiceTest.php
Go to the documentation of this file.
1 <?php
7 
18 
23 class MergeServiceTest extends \PHPUnit\Framework\TestCase
24 {
28  private $object;
29 
33  private $objectManagerMock;
34 
38  private $configMock;
39 
43  private $filesystemMock;
44 
48  protected $directoryMock;
49 
53  protected $stateMock;
54 
55  protected function setUp()
56  {
57  $this->objectManagerMock = $this->getMockBuilder(ObjectManagerInterface::class)
58  ->getMockForAbstractClass();
59  $this->configMock = $this->getMockBuilder(ConfigInterface::class)
60  ->getMockForAbstractClass();
61  $this->filesystemMock = $this->getMockBuilder(Filesystem::class)
62  ->disableOriginalConstructor()
63  ->getMock();
64  $this->directoryMock = $this->getMockBuilder(Filesystem\Directory\Write::class)
65  ->disableOriginalConstructor()
66  ->getMock();
67  $this->stateMock = $this->getMockBuilder(State::class)
68  ->disableOriginalConstructor()
69  ->getMock();
70  $this->filesystemMock->expects($this->any())
71  ->method('getDirectoryWrite')
72  ->willReturn($this->directoryMock);
73 
74  $this->object = (new ObjectManager($this))->getObject(MergeService::class, [
75  'objectManager' => $this->objectManagerMock,
76  'config' => $this->configMock,
77  'filesystem' => $this->filesystemMock,
78  'state' => $this->stateMock,
79  ]);
80  }
81 
87  {
88  $this->object->getMergedAssets([], 'unknown');
89  }
90 
98  public function testGetMergedAssets(array $assets, $contentType, $appMode, $mergeStrategy)
99  {
100  $mergedAsset = $this->createMock(AssetInterface::class);
101  $mergeStrategyMock = $this->createMock($mergeStrategy);
102 
103  $this->configMock->expects($this->once())->method('isMergeCssFiles')->willReturn(true);
104  $this->configMock->expects($this->once())->method('isMergeJsFiles')->willReturn(true);
105 
106  $this->objectManagerMock->expects($this->once())
107  ->method('create')
108  ->with(Merged::class, ['assets' => $assets, 'mergeStrategy' => $mergeStrategyMock])
109  ->willReturn($mergedAsset);
110  $this->objectManagerMock->expects($this->once())
111  ->method('get')
112  ->with($mergeStrategy)
113  ->willReturn($mergeStrategyMock);
114  $this->stateMock->expects($this->once())
115  ->method('getMode')
116  ->willReturn($appMode);
117 
118  $this->assertSame($mergedAsset, $this->object->getMergedAssets($assets, $contentType));
119  }
120 
124  public static function getMergedAssetsDataProvider()
125  {
126  $jsAssets = [
127  new \Magento\Framework\View\Asset\Remote('http://127.0.0.1/magento/script_one.js'),
128  new \Magento\Framework\View\Asset\Remote('http://127.0.0.1/magento/script_two.js'),
129  ];
130  $cssAssets = [
131  new \Magento\Framework\View\Asset\Remote('http://127.0.0.1/magento/style_one.css'),
132  new \Magento\Framework\View\Asset\Remote('http://127.0.0.1/magento/style_two.css'),
133  ];
134  return [
135  'js production mode' => [
136  $jsAssets,
137  'js',
139  FileExists::class,
140  ],
141  'css production mode' => [
142  $cssAssets,
143  'css',
145  FileExists::class,
146  ],
147  'js default mode' => [
148  $jsAssets,
149  'js',
151  FileExists::class,
152  ],
153  'css default mode' => [
154  $cssAssets,
155  'js',
157  FileExists::class,
158  ],
159  'js developer mode' => [
160  $jsAssets,
161  'js',
163  Checksum::class,
164  ],
165  'css developer mode' => [
166  $cssAssets,
167  'css',
169  Checksum::class,
170  ]
171  ];
172  }
173 
174  public function testCleanMergedJsCss()
175  {
176  $mergedDir = \Magento\Framework\View\Asset\Merged::getRelativeDir();
177 
178  $this->directoryMock->expects($this->once())
179  ->method('delete')
180  ->with($mergedDir);
181 
182  $this->object->cleanMergedJsCss();
183  }
184 }
testGetMergedAssets(array $assets, $contentType, $appMode, $mergeStrategy)