![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/framework/View/Test/Unit/Asset/MergeStrategy/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Framework\View\Test\Unit\Asset\MergeStrategy; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\Filesystem; use Magento\Framework\Filesystem\Directory\WriteInterface; use Magento\Framework\Filesystem\DriverPool; use Magento\Framework\Math\Random; use Magento\Framework\View\Asset\File; use Magento\Framework\View\Asset\LocalInterface; use Magento\Framework\View\Asset\MergeStrategy\Direct; use Magento\Framework\View\Url\CssResolver; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; /** * Test for Magento\Framework\View\Asset\MergeStrategy\Direct. */ class DirectTest extends TestCase { /** * @var Random|MockObject */ protected $mathRandomMock; /** * @var Direct */ protected $object; /** * @var MockObject|CssResolver */ protected $cssUrlResolver; /** * @var MockObject|WriteInterface */ protected $staticDir; /** * @var MockObject|WriteInterface */ protected $tmpDir; /** * @var MockObject|LocalInterface */ protected $resultAsset; protected function setUp(): void { $this->cssUrlResolver = $this->createMock(CssResolver::class); $filesystem = $this->createMock(Filesystem::class); $this->staticDir = $this->getMockBuilder(WriteInterface::class) ->getMockForAbstractClass(); $this->tmpDir = $this->getMockBuilder(WriteInterface::class) ->getMockForAbstractClass(); $filesystem->expects($this->any()) ->method('getDirectoryWrite') ->willReturnMap([ [DirectoryList::STATIC_VIEW, DriverPool::FILE, $this->staticDir], [DirectoryList::TMP, DriverPool::FILE, $this->tmpDir], ]); $this->resultAsset = $this->createMock(File::class); $this->mathRandomMock = $this->getMockBuilder(Random::class) ->disableOriginalConstructor() ->getMock(); $this->object = new Direct($filesystem, $this->cssUrlResolver, $this->mathRandomMock); } public function testMergeNoAssets() { $uniqId = '_b3bf82fa6e140594420fa90982a8e877'; $this->resultAsset->expects($this->once())->method('getPath')->willReturn('foo/result'); $this->staticDir->expects($this->never())->method('writeFile'); $this->mathRandomMock->expects($this->once()) ->method('getUniqueHash') ->willReturn($uniqId); $this->tmpDir->expects($this->once())->method('writeFile')->with('foo/result' . $uniqId, ''); $this->tmpDir->expects($this->once())->method('renameFile') ->with('foo/result' . $uniqId, 'foo/result', $this->staticDir); $this->object->merge([], $this->resultAsset); } public function testMergeGeneric() { $uniqId = '_be50ccf992fd81818c1a2645d1a29e92'; $this->resultAsset->expects($this->once())->method('getPath')->willReturn('foo/result'); $assets = $this->prepareAssetsToMerge([' one', 'two']); // note leading space intentionally $this->staticDir->expects($this->never())->method('writeFile'); $this->mathRandomMock->expects($this->once()) ->method('getUniqueHash') ->willReturn($uniqId); $this->tmpDir->expects($this->once())->method('writeFile')->with('foo/result' . $uniqId, 'onetwo'); $this->tmpDir->expects($this->once())->method('renameFile') ->with('foo/result' . $uniqId, 'foo/result', $this->staticDir); $this->object->merge($assets, $this->resultAsset); } public function testMergeCss() { $uniqId = '_f929c374767e00712449660ea673f2f5'; $this->resultAsset->expects($this->exactly(3)) ->method('getPath') ->willReturn('foo/result'); $this->resultAsset->expects($this->any())->method('getContentType')->willReturn('css'); $assets = $this->prepareAssetsToMerge(['one', 'two']); $this->cssUrlResolver->expects($this->exactly(2)) ->method('relocateRelativeUrls') ->will($this->onConsecutiveCalls('1', '2')); $this->cssUrlResolver->expects($this->once()) ->method('aggregateImportDirectives') ->with('12') ->willReturn('1020'); $this->mathRandomMock->expects($this->once()) ->method('getUniqueHash') ->willReturn($uniqId); $this->staticDir->expects($this->never())->method('writeFile'); $this->tmpDir->expects($this->once())->method('writeFile')->with('foo/result' . $uniqId, '1020'); $this->tmpDir->expects($this->once())->method('renameFile') ->with('foo/result' . $uniqId, 'foo/result', $this->staticDir); $this->object->merge($assets, $this->resultAsset); } /** * Prepare a few assets for merging with specified content * * @param array $data * @return array */ private function prepareAssetsToMerge(array $data) { $result = []; foreach ($data as $content) { $asset = $this->getMockForAbstractClass(LocalInterface::class); $asset->expects($this->once())->method('getContent')->willReturn($content); $result[] = $asset; } return $result; } }