PoolTest.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Ui\Test\Unit\DataProvider\Modifier;
  7. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  8. use Magento\Ui\DataProvider\Modifier\ModifierFactory;
  9. use Magento\Ui\DataProvider\Modifier\ModifierInterface;
  10. use Magento\Ui\DataProvider\Modifier\Pool;
  11. /**
  12. * Class PoolTest
  13. */
  14. class PoolTest extends \PHPUnit\Framework\TestCase
  15. {
  16. /**
  17. * @var ObjectManager
  18. */
  19. protected $objectManager;
  20. /**
  21. * @var ModifierFactory|\PHPUnit_Framework_MockObject_MockObject
  22. */
  23. protected $factoryMock;
  24. /**
  25. * @var ModifierInterface|\PHPUnit_Framework_MockObject_MockObject
  26. */
  27. protected $dataProviderMockOne;
  28. /**
  29. * @var ModifierInterface|\PHPUnit_Framework_MockObject_MockObject
  30. */
  31. protected $dataProviderMockTwo;
  32. protected function setUp()
  33. {
  34. $this->objectManager = new ObjectManager($this);
  35. $this->factoryMock = $this->getMockBuilder(ModifierFactory::class)
  36. ->disableOriginalConstructor()
  37. ->getMock();
  38. $this->dataProviderMockOne =
  39. $this->getMockBuilder(ModifierInterface::class)
  40. ->setMethods(['getData', 'getMeta', 'setData', 'setMeta'])
  41. ->getMockForAbstractClass();
  42. $this->dataProviderMockTwo = clone $this->dataProviderMockOne;
  43. $this->factoryMock->expects($this->any())
  44. ->method('create')
  45. ->willReturnMap([
  46. ['DataProviderMockOne', [], $this->dataProviderMockOne],
  47. ['DataProviderMockTwo', [], $this->dataProviderMockTwo],
  48. ]);
  49. }
  50. public function testWithOneDataProvider()
  51. {
  52. $expectedData = ['DataProviderMockOne' => $this->dataProviderMockOne];
  53. /** @var Pool $model */
  54. $model = $this->objectManager->getObject(Pool::class, [
  55. 'factory' => $this->factoryMock,
  56. 'modifiers' => [
  57. [
  58. 'class' => 'DataProviderMockOne',
  59. 'sortOrder' => 10,
  60. ],
  61. ]
  62. ]);
  63. $this->assertSame($expectedData, $model->getModifiersInstances());
  64. }
  65. public function testWithFewmodifiers()
  66. {
  67. $expectedData = [
  68. 'DataProviderMockOne' => $this->dataProviderMockOne,
  69. 'DataProviderMockTwo' => $this->dataProviderMockTwo,
  70. ];
  71. /** @var Pool $model */
  72. $model = $this->objectManager->getObject(Pool::class, [
  73. 'factory' => $this->factoryMock,
  74. 'modifiers' => [
  75. [
  76. 'class' => 'DataProviderMockOne',
  77. 'sortOrder' => 10,
  78. ],
  79. [
  80. 'class' => 'DataProviderMockTwo',
  81. 'sortOrder' => 20,
  82. ],
  83. ]
  84. ]);
  85. $this->assertSame($expectedData, $model->getModifiersInstances());
  86. }
  87. /**
  88. * @expectedException \Magento\Framework\Exception\LocalizedException
  89. * @expectedExceptionMessage The parameter "sortOrder" is missing. Set the "sortOrder" and try again.
  90. */
  91. public function testWithSortOrderException()
  92. {
  93. /** @var Pool $model */
  94. $model = $this->objectManager->getObject(Pool::class, [
  95. 'factory' => $this->factoryMock,
  96. 'modifiers' => [
  97. [
  98. 'class' => 'DataProviderMockOne',
  99. ],
  100. ]
  101. ]);
  102. $model->getModifiersInstances();
  103. }
  104. /**
  105. * @expectedException \Magento\Framework\Exception\LocalizedException
  106. * @expectedExceptionMessage The parameter "class" is missing. Set the "class" and try again.
  107. */
  108. public function testWithClassException()
  109. {
  110. /** @var Pool $model */
  111. $model = $this->objectManager->getObject(Pool::class, [
  112. 'factory' => $this->factoryMock,
  113. 'modifiers' => [
  114. [
  115. 'sortOrder' => 10,
  116. ],
  117. ]
  118. ]);
  119. $model->getModifiersInstances();
  120. }
  121. /**
  122. * @param array $modifiers
  123. * @param array $expectedResult
  124. * @dataProvider getModifiersDataProvider
  125. */
  126. public function testGetModifiers($modifiers, $expectedResult)
  127. {
  128. /** @var Pool $model */
  129. $model = $this->objectManager->getObject(Pool::class, [
  130. 'factory' => $this->factoryMock,
  131. 'modifiers' => $modifiers
  132. ]);
  133. $this->assertSame($model->getModifiers(), $expectedResult);
  134. }
  135. /**
  136. * @return array
  137. */
  138. public function getModifiersDataProvider()
  139. {
  140. return [
  141. [
  142. [
  143. ['class' => 'DataProviderMockTwo', 'sortOrder' => 20],
  144. ['class' => 'DataProviderMockOne', 'sortOrder' => 10]
  145. ],
  146. [
  147. ['class' => 'DataProviderMockOne', 'sortOrder' => 10],
  148. ['class' => 'DataProviderMockTwo', 'sortOrder' => 20]
  149. ],
  150. ],
  151. [
  152. [
  153. ['class' => 'DataProviderMockOne', 'sortOrder' => 20],
  154. ['class' => 'DataProviderMockFour', 'sortOrder' => 140],
  155. ['class' => 'DataProviderMockTwo', 'sortOrder' => 31],
  156. ['class' => 'DataProviderMockThree', 'sortOrder' => 77],
  157. ],
  158. [
  159. ['class' => 'DataProviderMockOne', 'sortOrder' => 20],
  160. ['class' => 'DataProviderMockTwo', 'sortOrder' => 31],
  161. ['class' => 'DataProviderMockThree', 'sortOrder' => 77],
  162. ['class' => 'DataProviderMockFour', 'sortOrder' => 140],
  163. ],
  164. ],
  165. ];
  166. }
  167. }