Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ThemeTest.php
Go to the documentation of this file.
1 <?php
8 
9 class ThemeTest extends \PHPUnit\Framework\TestCase
10 {
16  public function testGetCssAssets($layoutStr, $expectedResult)
17  {
18  $theme = $this->getMockForAbstractClass(\Magento\Framework\View\Design\ThemeInterface::class);
19  $theme->expects($this->once())->method('getArea')->will($this->returnValue('area'));
20  $layoutMergeFactory = $this->_getLayoutMergeFactory($theme, $layoutStr);
21  $assetRepo = $this->createPartialMock(\Magento\Framework\View\Asset\Repository::class, ['createAsset']);
22  $assetRepo->expects($this->any())
23  ->method('createAsset')
24  ->will($this->returnArgument(0));
25  $helper = new \Magento\Theme\Helper\Theme(
26  $this->createMock(\Magento\Framework\App\Helper\Context::class),
27  $layoutMergeFactory,
28  $assetRepo
29  );
30  $result = $helper->getCssAssets($theme);
31  $this->assertSame($expectedResult, $result);
32  }
33 
38  public function getCssAssetsDataProvider()
39  {
40  // @codingStandardsIgnoreStart
41  return [
42  [
43  '<block class="Magento\Theme\Block\Html\Head" name="head">
44  <block class="Magento\Theme\Block\Html\Head\Css" name="magento-loader-js">
45  <arguments><argument name="file" xsi:type="string">test1.css</argument></arguments>
46  </block>
47  </block>',
48  ['test1.css' => 'test1.css'],
49  ],
50  [
51  '<block class="Magento\Theme\Block\Html\Head" name="head">
52  <block class="Magento\Theme\Block\Html\Head\Css" name="magento-loader-js">
53  <arguments>
54  <argument name="file" xsi:type="string">Magento_Theme::test3.css</argument>
55  </arguments>
56  </block>
57  </block>',
58  ['Magento_Theme::test3.css' => 'Magento_Theme::test3.css'],
59  ],
60  [
61  '<block class="Magento\Theme\Block\Html\Head" name="head">
62  <block class="Magento\Theme\Block\Html\Head\Css" name="magento-loader-js">
63  <arguments><argument name="file" xsi:type="string">test.css</argument></arguments>
64  </block>
65  <block class="Magento\Theme\Block\Html\Head\Css" name="magento-loader-js">
66  <arguments>
67  <argument name="file" xsi:type="string">Magento_Theme::test.css</argument>
68  </arguments>
69  </block>
70  </block>
71  <referenceBlock name="head">
72  <block class="Magento\Theme\Block\Html\Head\Css" name="magento-loader-js">
73  <arguments><argument name="file" xsi:type="string">testh.css</argument></arguments>
74  </block>
75  <block class="Magento\Theme\Block\Html\Head\Css" name="magento-loader-js">
76  <arguments><argument name="file" xsi:type="string">Magento_Theme::test.css</argument></arguments>
77  </block>
78  </referenceBlock>
79  <block type="Some_Block_Class">
80  <block class="Magento\Theme\Block\Html\Head\Css" name="magento-loader-js">
81  <arguments><argument name="file" xsi:type="string">testa.css</argument></arguments>
82  </block>
83  <block class="Magento\Theme\Block\Html\Head\Css" name="magento-loader-js">
84  <arguments>
85  <argument name="file" xsi:type="string">Magento_Theme::testa.css</argument>
86  </arguments>
87  </block>
88  </block>
89  <referenceBlock name="some_block_name">
90  <block class="Magento\Theme\Block\Html\Head\Css" name="magento-loader-js">
91  <arguments><argument name="file" xsi:type="string">testb.css</argument></arguments>
92  </block>
93  <block class="Magento\Theme\Block\Html\Head\Css" name="magento-loader-js">
94  <arguments>
95  <argument name="file" xsi:type="string">Magento_Theme::testb.css</argument>
96  </arguments>
97  </block>
98  </referenceBlock>',
99  [
100  'Magento_Theme::test.css' => 'Magento_Theme::test.css',
101  'test.css' => 'test.css',
102  'testh.css' => 'testh.css',
103  ],
104  ],
105  ];
106  // @codingStandardsIgnoreEnd
107  }
108 
114  protected function _getLayoutMergeFactory($theme, $layoutStr)
115  {
117  $layoutProcessor = $this->getMockBuilder(\Magento\Framework\View\Layout\ProcessorInterface::class)
118  ->getMockForAbstractClass();
119  $xml = '<layouts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">' . $layoutStr . '</layouts>';
120  $layoutElement = simplexml_load_string($xml);
121  $layoutProcessor->expects(
122  $this->any()
123  )->method(
124  'getFileLayoutUpdatesXml'
125  )->will(
126  $this->returnValue($layoutElement)
127  );
128 
130  $processorFactory = $this->createPartialMock(
131  \Magento\Framework\View\Layout\ProcessorFactory::class,
132  ['create']
133  );
134  $processorFactory->expects($this->any())
135  ->method('create')
136  ->with(['theme' => $theme])
137  ->will($this->returnValue($layoutProcessor));
138 
139  return $processorFactory;
140  }
141 }
$helper
Definition: iframe.phtml:13
$processorFactory
Definition: 404.php:9
testGetCssAssets($layoutStr, $expectedResult)
Definition: ThemeTest.php:16
$theme