95 lines
3.2 KiB
PHP
Executable File
95 lines
3.2 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\Theme\Model;
|
|
|
|
class ThemeTest extends \PHPUnit\Framework\TestCase
|
|
{
|
|
/**
|
|
* Test crud operations for theme model using valid data
|
|
*
|
|
* @magentoDbIsolation enabled
|
|
*/
|
|
public function testCrud()
|
|
{
|
|
/** @var $themeModel \Magento\Framework\View\Design\ThemeInterface */
|
|
$themeModel = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
|
|
\Magento\Framework\View\Design\ThemeInterface::class
|
|
);
|
|
$themeModel->setData($this->_getThemeValidData());
|
|
|
|
$crud = new \Magento\TestFramework\Entity($themeModel, []);
|
|
$crud->testCrud();
|
|
}
|
|
|
|
/**
|
|
* Get theme valid data
|
|
*
|
|
* @return array
|
|
*/
|
|
protected function _getThemeValidData()
|
|
{
|
|
return [
|
|
'area' => 'space_area',
|
|
'theme_title' => 'Space theme',
|
|
'parent_id' => null,
|
|
'is_featured' => false,
|
|
'theme_path' => 'default/space',
|
|
'preview_image' => 'images/preview.png',
|
|
'type' => \Magento\Framework\View\Design\ThemeInterface::TYPE_VIRTUAL
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Test theme on child relations
|
|
*/
|
|
public function testChildRelation()
|
|
{
|
|
/** @var $theme \Magento\Framework\View\Design\ThemeInterface */
|
|
$theme = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Framework\View\Design\ThemeInterface::class
|
|
);
|
|
$collection = $theme->getCollection()
|
|
->addTypeFilter(\Magento\Framework\View\Design\ThemeInterface::TYPE_VIRTUAL);
|
|
/** @var $currentTheme \Magento\Framework\View\Design\ThemeInterface */
|
|
foreach ($collection as $currentTheme) {
|
|
$parentTheme = $currentTheme->getParentTheme();
|
|
if (!empty($parentTheme)) {
|
|
$this->assertTrue($parentTheme->hasChildThemes());
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @magentoComponentsDir Magento/Theme/Model/_files/design
|
|
* @magentoAppIsolation enabled
|
|
* @magentoDbIsolation enabled
|
|
* @magentoAppArea frontend
|
|
*/
|
|
public function testGetInheritedThemes()
|
|
{
|
|
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
|
|
/** @var \Magento\Theme\Model\Theme\Registration $registration */
|
|
$registration = $objectManager->get(
|
|
\Magento\Theme\Model\Theme\Registration::class
|
|
);
|
|
$registration->register();
|
|
/** @var \Magento\Framework\View\Design\Theme\FlyweightFactory $themeFactory */
|
|
$themeFactory = $objectManager->get(
|
|
\Magento\Framework\View\Design\Theme\FlyweightFactory::class
|
|
);
|
|
$theme = $themeFactory->create('Vendor_FrameworkThemeTest/custom_theme');
|
|
$this->assertCount(2, $theme->getInheritedThemes());
|
|
$expected = [];
|
|
foreach ($theme->getInheritedThemes() as $someTheme) {
|
|
$expected[] = $someTheme->getFullPath();
|
|
}
|
|
$this->assertEquals(
|
|
['frontend/Vendor_FrameworkThemeTest/default', 'frontend/Vendor_FrameworkThemeTest/custom_theme'],
|
|
$expected
|
|
);
|
|
}
|
|
}
|