123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- /**
- * Test theme virtual model
- */
- namespace Magento\Theme\Test\Unit\Model\Theme\Domain;
- class VirtualTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * Test get existing staging theme
- *
- * @covers \Magento\Theme\Model\Theme\Domain\Virtual::__construct
- * @covers \Magento\Theme\Model\Theme\Domain\Virtual::getStagingTheme
- */
- public function testGetStagingThemeExisting()
- {
- $themeStaging = $this->createMock(\Magento\Theme\Model\Theme::class);
- $theme = $this->createPartialMock(\Magento\Theme\Model\Theme::class, ['__wakeup', 'getStagingVersion']);
- $theme->expects($this->once())->method('getStagingVersion')->will($this->returnValue($themeStaging));
- $themeFactory = $this->createPartialMock(\Magento\Theme\Model\ThemeFactory::class, ['create']);
- $themeFactory->expects($this->never())->method('create');
- $themeCopyService = $this->createPartialMock(\Magento\Theme\Model\CopyService::class, ['copy']);
- $themeCopyService->expects($this->never())->method('copy');
- $customizationConfig = $this->createMock(\Magento\Theme\Model\Config\Customization::class);
- $object = new \Magento\Theme\Model\Theme\Domain\Virtual(
- $theme,
- $themeFactory,
- $themeCopyService,
- $customizationConfig
- );
- $this->assertSame($themeStaging, $object->getStagingTheme());
- }
- /**
- * Test creating staging theme
- *
- * @covers \Magento\Theme\Model\Theme\Domain\Virtual::_createStagingTheme
- * @covers \Magento\Theme\Model\Theme\Domain\Virtual::getStagingTheme
- */
- public function testGetStagingThemeNew()
- {
- $theme = $this->createPartialMock(\Magento\Theme\Model\Theme::class, ['__wakeup', 'getStagingVersion']);
- $theme->expects($this->once())->method('getStagingVersion')->will($this->returnValue(null));
- $appState = $this->createPartialMock(\Magento\Framework\App\State::class, ['getAreaCode']);
- $appState->expects($this->any())->method('getAreaCode')->will($this->returnValue('fixture_area'));
- $appStateProperty = new \ReflectionProperty(\Magento\Theme\Model\Theme::class, '_appState');
- $appStateProperty->setAccessible(true);
- /** @var $theme \Magento\Framework\DataObject */
- $theme->setData(
- [
- 'id' => 'fixture_theme_id',
- 'theme_title' => 'fixture_theme_title',
- 'preview_image' => 'fixture_preview_image',
- 'is_featured' => 'fixture_is_featured',
- 'type' => \Magento\Framework\View\Design\ThemeInterface::TYPE_VIRTUAL,
- ]
- );
- $appStateProperty->setValue($theme, $appState);
- $themeStaging = $this->createPartialMock(\Magento\Theme\Model\Theme::class, ['__wakeup', 'setData', 'save']);
- $themeStaging->expects(
- $this->at(0)
- )->method(
- 'setData'
- )->with(
- [
- 'parent_id' => 'fixture_theme_id',
- 'theme_path' => null,
- 'theme_title' => 'fixture_theme_title - Staging',
- 'preview_image' => 'fixture_preview_image',
- 'is_featured' => 'fixture_is_featured',
- 'type' => \Magento\Framework\View\Design\ThemeInterface::TYPE_STAGING,
- ]
- );
- $appStateProperty->setValue($themeStaging, $appState);
- $themeStaging->expects($this->at(1))->method('save');
- $themeFactory = $this->createPartialMock(\Magento\Theme\Model\ThemeFactory::class, ['create']);
- $themeFactory->expects($this->once())->method('create')->will($this->returnValue($themeStaging));
- $themeCopyService = $this->createPartialMock(\Magento\Theme\Model\CopyService::class, ['copy']);
- $themeCopyService->expects($this->once())->method('copy')->with($theme, $themeStaging);
- $customizationConfig = $this->createMock(\Magento\Theme\Model\Config\Customization::class);
- $object = new \Magento\Theme\Model\Theme\Domain\Virtual(
- $theme,
- $themeFactory,
- $themeCopyService,
- $customizationConfig
- );
- $this->assertSame($themeStaging, $object->getStagingTheme());
- $this->assertSame($themeStaging, $object->getStagingTheme());
- }
- /**
- * Test for is assigned method
- *
- * @covers \Magento\Theme\Model\Theme\Domain\Virtual::isAssigned
- */
- public function testIsAssigned()
- {
- $customizationConfig = $this->createPartialMock(
- \Magento\Theme\Model\Config\Customization::class,
- ['isThemeAssignedToStore']
- );
- $themeMock = $this->createPartialMock(
- \Magento\Theme\Model\Theme::class,
- ['__wakeup', 'getCollection', 'getId']
- );
- $customizationConfig->expects(
- $this->atLeastOnce()
- )->method(
- 'isThemeAssignedToStore'
- )->with(
- $themeMock
- )->will(
- $this->returnValue(true)
- );
- $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
- $constructArguments = $objectManagerHelper->getConstructArguments(
- \Magento\Theme\Model\Theme\Domain\Virtual::class,
- ['theme' => $themeMock, 'customizationConfig' => $customizationConfig]
- );
- /** @var $model \Magento\Theme\Model\Theme\Domain\Virtual */
- $model = $objectManagerHelper->getObject(\Magento\Theme\Model\Theme\Domain\Virtual::class, $constructArguments);
- $this->assertEquals(true, $model->isAssigned());
- }
- /**
- * @return array
- */
- public function physicalThemeDataProvider()
- {
- $physicalTheme = $this->getMockBuilder(\Magento\Framework\View\Design\ThemeInterface::class)
- ->setMethods(['isPhysical', 'getId'])
- ->getMockForAbstractClass();
- $physicalTheme->expects($this->once())
- ->method('isPhysical')
- ->willReturn(true);
- $physicalTheme->expects($this->once())
- ->method('getId')
- ->willReturn(1);
- return [
- 'empty' => [null],
- 'theme' => [$physicalTheme],
- ];
- }
- /**
- * @test
- * @return void
- * @dataProvider physicalThemeDataProvider
- * @covers \Magento\Theme\Model\Theme\Domain\Virtual::getPhysicalTheme
- */
- public function testGetPhysicalTheme($data)
- {
- $themeMock = $this->createPartialMock(\Magento\Theme\Model\Theme::class, ['__wakeup', 'getParentTheme']);
- $parentThemeMock = $this->createPartialMock(
- \Magento\Theme\Model\Theme::class,
- ['__wakeup', 'isPhysical', 'getParentTheme']
- );
- $themeMock->expects($this->once())
- ->method('getParentTheme')
- ->willReturn($parentThemeMock);
- $parentThemeMock->expects($this->once())
- ->method('getParentTheme')
- ->willReturn($data);
- $parentThemeMock->expects($this->once())
- ->method('isPhysical')
- ->willReturn(false);
- $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
- $object = $objectManagerHelper->getObject(
- \Magento\Theme\Model\Theme\Domain\Virtual::class,
- ['theme' => $themeMock]
- );
- /** @var $object \Magento\Theme\Model\Theme\Domain\Virtual */
- $this->assertEquals($data, $object->getPhysicalTheme());
- }
- }
|