Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AbstractComponentTest.php
Go to the documentation of this file.
1 <?php
7 
8 use PHPUnit_Framework_MockObject_MockObject as MockObject;
12 
13 class AbstractComponentTest extends \PHPUnit\Framework\TestCase
14 {
18  protected $abstractComponent;
19 
23  protected $contextMock;
24 
28  protected function setUp()
29  {
30  $this->contextMock = $this->createMock(\Magento\Framework\View\Element\UiComponent\ContextInterface::class);
31  $this->contextMock->expects($this->never())->method('getProcessor');
32  $this->abstractComponent = $this->getMockBuilder(\Magento\Ui\Component\AbstractComponent::class)
33  ->enableOriginalConstructor()
34  ->setMethods(['getComponentName'])
35  ->setConstructorArgs(['context' => $this->contextMock])
36  ->getMock();
37  }
38 
42  public function testGetContext()
43  {
44  $this->assertSame($this->contextMock, $this->abstractComponent->getContext());
45  }
46 
50  public function testGetName()
51  {
52  $name = 'some name';
53  $this->abstractComponent->setData('name', $name);
54  $this->assertEquals($name, $this->abstractComponent->getName());
55  }
56 
61  protected function initTestRender($renderResult)
62  {
63  $template = 'template';
64  $this->abstractComponent->setData('template', $template);
65 
67  $renderEngineMock = $this->createMock(ContentTypeInterface::class);
68  $renderEngineMock->expects($this->once())
69  ->method('render')
70  ->with($this->abstractComponent, $template . '.xhtml')
71  ->willReturn($renderResult);
72 
73  $this->contextMock->expects($this->once())
74  ->method('getRenderEngine')
75  ->willReturn($renderEngineMock);
76  }
77 
81  public function testRender()
82  {
83  $renderResult = 'some html code';
84  $this->initTestRender($renderResult);
85  $this->assertEquals($renderResult, $this->abstractComponent->render());
86  }
87 
91  public function testGetComponentNotExists()
92  {
93  $this->assertNull($this->abstractComponent->getComponent('nameComponent'));
94  }
95 
100  {
101  $this->assertEquals([], $this->abstractComponent->getChildComponents());
102  }
103 
107  public function testAddGetChildComponents()
108  {
110  $uiComponentMock = $this->createMock(\Magento\Framework\View\Element\UiComponentInterface::class);
111  $name = 'componentName';
112 
113  $this->abstractComponent->addComponent($name, $uiComponentMock);
114  $this->assertEquals($uiComponentMock, $this->abstractComponent->getComponent($name));
115  }
116 
120  public function testGetChildComponents()
121  {
123  $uiComponentMock = $this->createMock(\Magento\Framework\View\Element\UiComponentInterface::class);
124  $name = 'componentName';
125  $expectedResult = [$name => $uiComponentMock];
126 
127  $this->abstractComponent->addComponent($name, $uiComponentMock);
128  $this->assertEquals($expectedResult, $this->abstractComponent->getChildComponents());
129  }
130 
135  {
136  $this->assertEquals(null, $this->abstractComponent->renderChildComponent('someComponent'));
137  }
138 
142  public function testRenderChildComponent()
143  {
144  $name = 'componentName';
145  $expectedResult = 'some html code';
147  $uiComponentMock = $this->createMock(\Magento\Framework\View\Element\UiComponentInterface::class);
148  $uiComponentMock->expects($this->once())
149  ->method('render')
150  ->willReturn($expectedResult);
151 
152  $this->abstractComponent->addComponent($name, $uiComponentMock);
153  $this->assertEquals($expectedResult, $this->abstractComponent->renderChildComponent($name));
154  }
155 
159  public function testGetTemplate()
160  {
161  $template = 'sample';
162  $this->abstractComponent->setData('template', $template);
163 
164  $this->assertEquals($template . '.xhtml', $this->abstractComponent->getTemplate());
165  }
166 
173  public function testGetConfiguration($config, array $expectedResult)
174  {
175  $this->abstractComponent->setData('config', $config);
176  $this->assertSame($expectedResult, $this->abstractComponent->getConfiguration());
177  }
178 
183  {
184  return [
185  ['config' => null, 'expectedResult' => []],
186  ['config' => [], 'expectedResult' => []],
187  ['config' => ['visible' => true], 'expectedResult' => ['visible' => true]],
188  ];
189  }
190 
197  public function testGetJsConfig(array $jsConfig, array $expectedResult)
198  {
199  $namespace = 'my_namespace';
201  $uiComponentMock = $this->getMockBuilder(\Magento\Framework\View\Element\UiComponentInterface::class)
202  ->setMethods(['getData'])
203  ->getMockForAbstractClass();
204  $uiComponentMock->expects($this->once())
205  ->method('getData')
206  ->with('js_config')
207  ->willReturnOnConsecutiveCalls($jsConfig);
208  $uiComponentMock->expects($this->any())
209  ->method('getContext')
210  ->willReturn($this->contextMock);
211  $this->contextMock->expects($this->any())
212  ->method('getNamespace')
213  ->willReturn($namespace);
214 
215  $this->assertEquals($expectedResult, $this->abstractComponent->getJsConfig($uiComponentMock));
216  }
217 
221  public function getJsConfigDataProvider()
222  {
223  return [
224  [
225  'jsConfig' => [],
226  'expectedResult' => ['extends' => 'my_namespace']
227  ],
228  [
229  'jsConfig' => ['name' => 'test'],
230  'expectedResult' => ['name' => 'test', 'extends' => 'my_namespace']
231  ],
232  [
233  'jsConfig' => ['name' => 'test', 'extends' => 'some_extends'],
234  'expectedResult' => ['name' => 'test', 'extends' => 'some_extends']
235  ],
236  ];
237  }
238 }
$config
Definition: fraud_order.php:17
$template
Definition: export.php:12
if(!isset($_GET['name'])) $name
Definition: log.php:14