123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Theme\Test\Unit\Model\Theme;
- use Magento\Theme\Model\Theme\ThemePackageInfo;
- class ThemePackageInfoTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var \Magento\Framework\Filesystem\Directory\Read|\PHPUnit_Framework_MockObject_MockObject
- */
- private $dirRead;
- /**
- * @var ThemePackageInfo
- */
- private $themePackageInfo;
- /**
- * @var \Magento\Framework\Component\ComponentRegistrar|\PHPUnit_Framework_MockObject_MockObject
- */
- private $componentRegistrar;
- /**
- * @var \Magento\Framework\Filesystem\Directory\ReadFactory|\PHPUnit_Framework_MockObject_MockObject
- */
- private $dirReadFactory;
- /** @var \Magento\Framework\Serialize\Serializer\Json|\PHPUnit_Framework_MockObject_MockObject */
- private $serializerMock;
- protected function setUp()
- {
- $this->componentRegistrar = $this->createMock(\Magento\Framework\Component\ComponentRegistrar::class);
- $this->dirRead = $this->createMock(\Magento\Framework\Filesystem\Directory\Read::class);
- $this->dirReadFactory = $this->createMock(\Magento\Framework\Filesystem\Directory\ReadFactory::class);
- $this->dirReadFactory->expects($this->any())->method('create')->willReturn($this->dirRead);
- $this->serializerMock = $this->getMockBuilder(\Magento\Framework\Serialize\Serializer\Json::class)
- ->getMock();
- $this->themePackageInfo = new ThemePackageInfo(
- $this->componentRegistrar,
- $this->dirReadFactory,
- $this->serializerMock
- );
- }
- public function testGetPackageName()
- {
- $themeFileContents = '{"name": "package"}';
- $this->componentRegistrar->expects($this->once())->method('getPath')->willReturn('path/to/A');
- $this->dirRead->expects($this->once())->method('isExist')->with('composer.json')->willReturn(true);
- $this->dirRead->expects($this->once())
- ->method('readFile')
- ->with('composer.json')
- ->willReturn($themeFileContents);
- $this->serializerMock->expects($this->once())
- ->method('unserialize')
- ->willReturn(json_decode($themeFileContents, true));
- $this->assertEquals('package', $this->themePackageInfo->getPackageName('themeA'));
- }
- public function testGetPackageNameNonExist()
- {
- $this->componentRegistrar->expects($this->once())->method('getPath')->willReturn('path/to/A');
- $this->dirRead->expects($this->once())->method('isExist')->with('composer.json')->willReturn(false);
- $this->dirRead->expects($this->never())->method('readFile')->with('composer.json');
- $this->assertEquals('', $this->themePackageInfo->getPackageName('themeA'));
- }
- public function testGetFullThemePath()
- {
- $themeFileContents = '{"name": "package"}';
- $this->componentRegistrar->expects($this->once())->method('getPaths')->willReturn(['themeA' => 'path/to/A']);
- $this->dirRead->expects($this->once())->method('isExist')->willReturn(true);
- $this->dirRead->expects($this->once())->method('readFile')->willReturn($themeFileContents);
- $this->serializerMock->expects($this->once())
- ->method('unserialize')
- ->willReturn(json_decode($themeFileContents, true));
- $this->assertEquals('themeA', $this->themePackageInfo->getFullThemePath('package'));
- // call one more time to make sure only initialize once
- $this->assertEquals('themeA', $this->themePackageInfo->getFullThemePath('package'));
- }
- public function testGetFullThemePathNonExist()
- {
- $this->componentRegistrar->expects($this->once())->method('getPaths')->willReturn(['themeA' => 'path/to/A']);
- $this->dirRead->expects($this->once())->method('isExist')->willReturn(true);
- $this->dirRead->expects($this->once())->method('readFile')->willReturn('{"name": "package"}');
- $this->assertEquals('', $this->themePackageInfo->getFullThemePath('package-other'));
- }
- public function testGetPackageNameInvalidJson()
- {
- $this->componentRegistrar->expects($this->once())->method('getPath')->willReturn('path/to/A');
- $this->dirRead->expects($this->once())->method('isExist')->willReturn(true);
- $this->dirRead->expects($this->once())->method('readFile')->willReturn('{"name": }');
- $this->serializerMock->expects($this->once())
- ->method('unserialize')
- ->willReturn(null);
- $this->assertEquals('', $this->themePackageInfo->getPackageName('themeA'));
- }
- }
|