PageRenderTime 27ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/vendor/magento/module-ui/Test/Unit/Model/ManagerTest.php

https://gitlab.com/yousafsyed/easternglamor
PHP | 314 lines | 245 code | 24 blank | 45 comment | 2 complexity | 5a774af846f2770a04da0470b92d172c MD5 | raw file
  1. <?php
  2. /**
  3. * Copyright © 2016 Magento. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Ui\Test\Unit\Model;
  7. use Magento\Framework\Config\CacheInterface;
  8. use Magento\Framework\View\Element\UiComponent\ArrayObjectFactory;
  9. use Magento\Framework\View\Element\UiComponent\Config\DomMergerInterface;
  10. use Magento\Framework\View\Element\UiComponent\Config\FileCollector\AggregatedFileCollector;
  11. use Magento\Framework\View\Element\UiComponent\Config\FileCollector\AggregatedFileCollectorFactory;
  12. use Magento\Framework\View\Element\UiComponent\Config\UiReaderInterface;
  13. use Magento\Ui\Model\Manager;
  14. use Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition as ComponentDefinition;
  15. use Magento\Framework\Data\Argument\InterpreterInterface;
  16. use Magento\Framework\View\Element\UiComponent\Config\ManagerInterface;
  17. use Magento\Framework\View\Element\UiComponent\Config\Converter;
  18. /**
  19. * Class ManagerTest
  20. *
  21. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  22. */
  23. class ManagerTest extends \PHPUnit_Framework_TestCase
  24. {
  25. /**
  26. * @var Manager
  27. */
  28. protected $manager;
  29. /**
  30. * @var ComponentDefinition|\PHPUnit_Framework_MockObject_MockObject
  31. */
  32. protected $componentConfigProvider;
  33. /**
  34. * @var CacheInterface|\PHPUnit_Framework_MockObject_MockObject
  35. */
  36. protected $cacheConfig;
  37. /**
  38. * @var InterpreterInterface|\PHPUnit_Framework_MockObject_MockObject
  39. */
  40. protected $argumentInterpreter;
  41. /**
  42. * @var UiReaderInterface|\PHPUnit_Framework_MockObject_MockObject
  43. */
  44. protected $uiReader;
  45. /**
  46. * @var \Magento\Framework\View\Element\UiComponent\Config\ReaderFactory|\PHPUnit_Framework_MockObject_MockObject
  47. */
  48. protected $readerFactory;
  49. /**
  50. * @var AggregatedFileCollector|\PHPUnit_Framework_MockObject_MockObject
  51. */
  52. protected $aggregatedFileCollector;
  53. /**
  54. * @var DomMergerInterface|\PHPUnit_Framework_MockObject_MockObject
  55. */
  56. protected $domMerger;
  57. /**
  58. * @var ArrayObjectFactory|\PHPUnit_Framework_MockObject_MockObject
  59. */
  60. protected $arrayObjectFactory;
  61. /**
  62. * @var AggregatedFileCollectorFactory|\PHPUnit_Framework_MockObject_MockObject
  63. */
  64. protected $aggregatedFileCollectorFactory;
  65. public function setUp()
  66. {
  67. $this->componentConfigProvider = $this->getMockBuilder(
  68. 'Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition'
  69. )->disableOriginalConstructor()->getMock();
  70. $this->domMerger = $this->getMockBuilder('Magento\Framework\View\Element\UiComponent\Config\DomMergerInterface')
  71. ->getMockForAbstractClass();
  72. $this->aggregatedFileCollector = $this->getMockBuilder(
  73. 'Magento\Framework\View\Element\UiComponent\Config\FileCollector\AggregatedFileCollector'
  74. )->disableOriginalConstructor()->getMock();
  75. $this->aggregatedFileCollectorFactory = $this->getMockBuilder(
  76. 'Magento\Framework\View\Element\UiComponent\Config\FileCollector\AggregatedFileCollectorFactory'
  77. )->disableOriginalConstructor()->getMock();
  78. $this->arrayObjectFactory = $this->getMockBuilder(
  79. 'Magento\Framework\View\Element\UiComponent\ArrayObjectFactory'
  80. )->disableOriginalConstructor()->getMock();
  81. $this->arrayObjectFactory->expects($this->at(0))
  82. ->method('create')
  83. ->willReturn(new \ArrayObject([]));
  84. $this->uiReader = $this->getMockBuilder('Magento\Framework\View\Element\UiComponent\Config\UiReaderInterface')
  85. ->getMockForAbstractClass();
  86. $this->readerFactory = $this->getMockBuilder('Magento\Framework\View\Element\UiComponent\Config\ReaderFactory')
  87. ->disableOriginalConstructor()
  88. ->getMock();
  89. $this->cacheConfig = $this->getMockBuilder('Magento\Framework\Config\CacheInterface')
  90. ->getMockForAbstractClass();
  91. $this->argumentInterpreter = $this->getMockBuilder('Magento\Framework\Data\Argument\InterpreterInterface')
  92. ->getMockForAbstractClass();
  93. $this->manager = new Manager(
  94. $this->componentConfigProvider,
  95. $this->domMerger,
  96. $this->readerFactory,
  97. $this->arrayObjectFactory,
  98. $this->aggregatedFileCollectorFactory,
  99. $this->cacheConfig,
  100. $this->argumentInterpreter
  101. );
  102. }
  103. public function testGetReader()
  104. {
  105. $this->readerFactory->expects($this->once())
  106. ->method('create')
  107. ->with(['fileCollector' => $this->aggregatedFileCollector, 'domMerger' => $this->domMerger])
  108. ->willReturn($this->uiReader);
  109. $this->aggregatedFileCollectorFactory->expects($this->once())
  110. ->method('create')
  111. ->willReturn($this->aggregatedFileCollector);
  112. $this->assertEquals($this->uiReader, $this->manager->getReader('some_name'));
  113. }
  114. public function testPrepareDataWithException()
  115. {
  116. $this->setExpectedException(
  117. 'Magento\Framework\Exception\LocalizedException',
  118. __('Initialization error component, check the spelling of the name or the correctness of the call.')
  119. );
  120. $this->manager->prepareData(null);
  121. }
  122. /**
  123. * @dataProvider getComponentData()
  124. */
  125. public function testPrepareGetData($componentName, $componentData, $isCached, $readerData, $expectedResult)
  126. {
  127. $this->readerFactory->expects($this->any())
  128. ->method('create')
  129. ->with(['fileCollector' => $this->aggregatedFileCollector, 'domMerger' => $this->domMerger])
  130. ->willReturn($this->uiReader);
  131. $this->aggregatedFileCollectorFactory->expects($this->any())
  132. ->method('create')
  133. ->willReturn($this->aggregatedFileCollector);
  134. $this->argumentInterpreter->expects($this->any())
  135. ->method('evaluate')
  136. ->willReturnCallback(function ($argument) {
  137. return ['argument' => $argument['value']];
  138. });
  139. $this->arrayObjectFactory->expects($this->any())
  140. ->method('create')
  141. ->willReturn($componentData);
  142. $this->cacheConfig->expects($this->any())
  143. ->method('load')
  144. ->with(Manager::CACHE_ID . '_' . $componentName)
  145. ->willReturn($isCached);
  146. $this->uiReader->expects($this->any())
  147. ->method('read')
  148. ->willReturn($readerData);
  149. $this->assertEquals(
  150. $expectedResult,
  151. $this->manager->prepareData($componentName)->getData($componentName)
  152. );
  153. }
  154. public function getComponentData()
  155. {
  156. $cachedData = new \ArrayObject(
  157. ['test_component1' =>
  158. [
  159. ManagerInterface::COMPONENT_ARGUMENTS_KEY => ['argument_name1' => ['value' => 'value1']],
  160. ManagerInterface::CHILDREN_KEY => [
  161. 'custom' => [
  162. ManagerInterface::COMPONENT_ARGUMENTS_KEY =>
  163. ['custom_name1' => ['value' => 'custom_value1']],
  164. ManagerInterface::CHILDREN_KEY => [],
  165. ],
  166. ],
  167. ]
  168. ]
  169. );
  170. return [
  171. [
  172. 'test_component1',
  173. new \ArrayObject(),
  174. $cachedData->serialize(),
  175. [],
  176. [
  177. 'test_component1' => [
  178. ManagerInterface::COMPONENT_ARGUMENTS_KEY => ['argument_name1' => ['argument' => 'value1']],
  179. ManagerInterface::CHILDREN_KEY => [
  180. 'custom' => [
  181. ManagerInterface::COMPONENT_ARGUMENTS_KEY =>
  182. ['custom_name1' => ['argument' => 'custom_value1']],
  183. ManagerInterface::CHILDREN_KEY => [],
  184. ]
  185. ]
  186. ],
  187. ],
  188. ],
  189. [
  190. 'test_component2',
  191. new \ArrayObject(
  192. ['test_component2' =>
  193. [
  194. ManagerInterface::COMPONENT_ARGUMENTS_KEY => ['argument_name2' => ['value' => 'value2']],
  195. ManagerInterface::CHILDREN_KEY => [
  196. 'test_component21' => [
  197. ManagerInterface::COMPONENT_ARGUMENTS_KEY =>
  198. ['argument_name21' => ['value' => 'value21']],
  199. ManagerInterface::CHILDREN_KEY => [],
  200. ],
  201. ],
  202. ]
  203. ]
  204. ),
  205. false,
  206. ['componentGroup' => [0 => [
  207. Converter::DATA_ARGUMENTS_KEY => ['argument_name2' => ['value' => 'value2']],
  208. Converter::DATA_ATTRIBUTES_KEY => ['name' => 'attribute_name2'],
  209. 'test_component21' => [0 => [
  210. Converter::DATA_ARGUMENTS_KEY => ['argument_name21' => ['value' => 'value21']],
  211. Converter::DATA_ATTRIBUTES_KEY => ['name' => 'attribute_name21'],
  212. ]
  213. ],
  214. ]]],
  215. [
  216. 'test_component2' => [
  217. ManagerInterface::COMPONENT_ARGUMENTS_KEY => ['argument_name2' => ['argument' => 'value2']],
  218. ManagerInterface::COMPONENT_ATTRIBUTES_KEY => ['name' => 'attribute_name2'],
  219. ManagerInterface::CHILDREN_KEY => [
  220. 'attribute_name21' => [
  221. ManagerInterface::COMPONENT_ARGUMENTS_KEY =>
  222. ['argument_name21' => ['argument' => 'value21']],
  223. ManagerInterface::COMPONENT_ATTRIBUTES_KEY => ['name' => 'attribute_name21'],
  224. ManagerInterface::CHILDREN_KEY => [],
  225. ],
  226. ],
  227. ],
  228. ],
  229. ],
  230. ];
  231. }
  232. /**
  233. * @dataProvider getComponentDataProvider()
  234. */
  235. public function testCreateRawComponentData($componentName, $configData, $componentData, $needEvaluate)
  236. {
  237. $this->componentConfigProvider->expects($this->any())
  238. ->method('getComponentData')
  239. ->willReturn($configData);
  240. if ($needEvaluate === true) {
  241. $this->argumentInterpreter->expects($this->once())
  242. ->method('evaluate')
  243. ->willReturnCallback(function ($argument) {
  244. return ['argument' => $argument['value']];
  245. });
  246. } else {
  247. $this->argumentInterpreter->expects($this->never())->method('evaluate');
  248. }
  249. $this->assertEquals($componentData, $this->manager->createRawComponentData($componentName, $needEvaluate));
  250. }
  251. public function getComponentDataProvider()
  252. {
  253. return [
  254. [
  255. 'test_component1',
  256. [
  257. Converter::DATA_ATTRIBUTES_KEY => ['name' => 'attribute_name1'],
  258. ],
  259. [
  260. ManagerInterface::COMPONENT_ATTRIBUTES_KEY => ['name' => 'attribute_name1'],
  261. ManagerInterface::COMPONENT_ARGUMENTS_KEY => [],
  262. ],
  263. false,
  264. ],
  265. [
  266. 'test_component2',
  267. [
  268. Converter::DATA_ARGUMENTS_KEY => ['argument_name2' => ['value' => 'value2']],
  269. ],
  270. [
  271. ManagerInterface::COMPONENT_ATTRIBUTES_KEY => [],
  272. ManagerInterface::COMPONENT_ARGUMENTS_KEY => ['argument_name2' => ['value' => 'value2']],
  273. ],
  274. false,
  275. ],
  276. [
  277. 'test_component3',
  278. [
  279. Converter::DATA_ATTRIBUTES_KEY => ['name' => 'attribute_name3'],
  280. Converter::DATA_ARGUMENTS_KEY => ['argument_name3' => ['value' => 'value3']],
  281. ],
  282. [
  283. ManagerInterface::COMPONENT_ATTRIBUTES_KEY => ['name' => 'attribute_name3'],
  284. ManagerInterface::COMPONENT_ARGUMENTS_KEY => ['argument_name3' => ['argument' => 'value3']],
  285. ],
  286. true,
  287. ],
  288. ];
  289. }
  290. }