![]() 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/Css/Test/Unit/PreProcessor/Adapter/Less/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Framework\Css\Test\Unit\PreProcessor\Adapter\Less; use Magento\Framework\App\State; use Magento\Framework\Css\PreProcessor\Adapter\Less\Processor; use Magento\Framework\Css\PreProcessor\File\Temporary; use Magento\Framework\View\Asset\File; use Magento\Framework\View\Asset\Source; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Psr\Log\LoggerInterface; class ProcessorTest extends TestCase { const TEST_CONTENT = 'test-content'; const ASSET_PATH = 'test-path'; const TMP_PATH_LESS = '_file/test.less'; const TMP_PATH_CSS = '_file/test.css'; const ERROR_MESSAGE = 'Test exception'; /** * @var Processor */ private $processor; /** * @var LoggerInterface|MockObject */ private $loggerMock; /** * @var State|MockObject */ private $appStateMock; /** * @var Source|MockObject */ private $assetSourceMock; /** * @var Temporary|MockObject */ private $temporaryFileMock; /** * Set up */ protected function setUp(): void { $this->loggerMock = $this->getMockBuilder(LoggerInterface::class) ->getMockForAbstractClass(); $this->appStateMock = $this->getMockBuilder(State::class) ->disableOriginalConstructor() ->getMock(); $this->assetSourceMock = $this->getMockBuilder(Source::class) ->disableOriginalConstructor() ->getMock(); $this->temporaryFileMock = $this->getMockBuilder(Temporary::class) ->disableOriginalConstructor() ->getMock(); $this->processor = new Processor( $this->loggerMock, $this->appStateMock, $this->assetSourceMock, $this->temporaryFileMock ); } /** * Test for processContent method (exception) */ public function testProcessContentException() { $this->expectException('Magento\Framework\View\Asset\ContentProcessorException'); $this->expectExceptionMessageMatches('(Test exception)'); $assetMock = $this->getAssetMock(); $this->appStateMock->expects(self::once()) ->method('getMode') ->willReturn(State::MODE_DEVELOPER); $this->assetSourceMock->expects(self::once()) ->method('getContent') ->with($assetMock) ->willThrowException(new \Exception(self::ERROR_MESSAGE)); $this->loggerMock->expects(self::never()) ->method('critical'); $this->temporaryFileMock->expects(self::never()) ->method('createFile'); $assetMock->expects(self::once()) ->method('getPath') ->willReturn(self::ASSET_PATH); $this->processor->processContent($assetMock); } /** * Test for processContent method (empty content) */ public function testProcessContentEmpty() { $this->expectException('Magento\Framework\View\Asset\ContentProcessorException'); $this->expectExceptionMessageMatches('(Compilation from source: LESS file is empty: test-path)'); $assetMock = $this->getAssetMock(); $this->appStateMock->expects(self::once()) ->method('getMode') ->willReturn(State::MODE_DEVELOPER); $this->assetSourceMock->expects(self::once()) ->method('getContent') ->with($assetMock) ->willReturn(''); $this->temporaryFileMock->expects(self::never()) ->method('createFile'); $assetMock->expects(self::once()) ->method('getPath') ->willReturn(self::ASSET_PATH); $this->loggerMock->expects(self::never()) ->method('critical'); $this->processor->processContent($assetMock); } /** * Test for processContent method (not empty content) */ public function testProcessContentNotEmpty() { $assetMock = $this->getAssetMock(); $this->appStateMock->expects(self::once()) ->method('getMode') ->willReturn(State::MODE_DEVELOPER); $this->assetSourceMock->expects(self::once()) ->method('getContent') ->with($assetMock) ->willReturn(self::TEST_CONTENT); $this->temporaryFileMock->expects(self::once()) ->method('createFile') ->with(self::ASSET_PATH, self::TEST_CONTENT) ->willReturn(__DIR__ . '/' . self::TMP_PATH_LESS); $assetMock->expects(self::once()) ->method('getPath') ->willReturn(self::ASSET_PATH); $this->loggerMock->expects(self::never()) ->method('critical'); $clearSymbol = ["\n", "\r", "\t", ' ']; self::assertEquals( trim(str_replace($clearSymbol, '', file_get_contents(__DIR__ . '/' . self::TMP_PATH_CSS))), trim(str_replace($clearSymbol, '', $this->processor->processContent($assetMock))) ); } /** * @return File|MockObject */ private function getAssetMock() { $assetMock = $this->getMockBuilder(File::class) ->disableOriginalConstructor() ->getMock(); return $assetMock; } }