ThemeTest.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Theme\Model;
  7. class ThemeTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * Test crud operations for theme model using valid data
  11. *
  12. * @magentoDbIsolation enabled
  13. */
  14. public function testCrud()
  15. {
  16. /** @var $themeModel \Magento\Framework\View\Design\ThemeInterface */
  17. $themeModel = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
  18. \Magento\Framework\View\Design\ThemeInterface::class
  19. );
  20. $themeModel->setData($this->_getThemeValidData());
  21. $crud = new \Magento\TestFramework\Entity($themeModel, []);
  22. $crud->testCrud();
  23. }
  24. /**
  25. * Get theme valid data
  26. *
  27. * @return array
  28. */
  29. protected function _getThemeValidData()
  30. {
  31. return [
  32. 'area' => 'space_area',
  33. 'theme_title' => 'Space theme',
  34. 'parent_id' => null,
  35. 'is_featured' => false,
  36. 'theme_path' => 'default/space',
  37. 'preview_image' => 'images/preview.png',
  38. 'type' => \Magento\Framework\View\Design\ThemeInterface::TYPE_VIRTUAL
  39. ];
  40. }
  41. /**
  42. * Test theme on child relations
  43. */
  44. public function testChildRelation()
  45. {
  46. /** @var $theme \Magento\Framework\View\Design\ThemeInterface */
  47. $theme = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
  48. \Magento\Framework\View\Design\ThemeInterface::class
  49. );
  50. $collection = $theme->getCollection()
  51. ->addTypeFilter(\Magento\Framework\View\Design\ThemeInterface::TYPE_VIRTUAL);
  52. /** @var $currentTheme \Magento\Framework\View\Design\ThemeInterface */
  53. foreach ($collection as $currentTheme) {
  54. $parentTheme = $currentTheme->getParentTheme();
  55. if (!empty($parentTheme)) {
  56. $this->assertTrue($parentTheme->hasChildThemes());
  57. }
  58. }
  59. }
  60. /**
  61. * @magentoComponentsDir Magento/Theme/Model/_files/design
  62. * @magentoAppIsolation enabled
  63. * @magentoDbIsolation enabled
  64. * @magentoAppArea frontend
  65. */
  66. public function testGetInheritedThemes()
  67. {
  68. $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
  69. /** @var \Magento\Theme\Model\Theme\Registration $registration */
  70. $registration = $objectManager->get(
  71. \Magento\Theme\Model\Theme\Registration::class
  72. );
  73. $registration->register();
  74. /** @var \Magento\Framework\View\Design\Theme\FlyweightFactory $themeFactory */
  75. $themeFactory = $objectManager->get(
  76. \Magento\Framework\View\Design\Theme\FlyweightFactory::class
  77. );
  78. $theme = $themeFactory->create('Vendor_FrameworkThemeTest/custom_theme');
  79. $this->assertCount(2, $theme->getInheritedThemes());
  80. $expected = [];
  81. foreach ($theme->getInheritedThemes() as $someTheme) {
  82. $expected[] = $someTheme->getFullPath();
  83. }
  84. $this->assertEquals(
  85. ['frontend/Vendor_FrameworkThemeTest/default', 'frontend/Vendor_FrameworkThemeTest/custom_theme'],
  86. $expected
  87. );
  88. }
  89. }