123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Ui\Test\Unit\Component;
- use PHPUnit_Framework_MockObject_MockObject as MockObject;
- use Magento\Framework\View\Element\UiComponent\ContextInterface;
- use Magento\Framework\View\Element\UiComponent\ContentType\ContentTypeInterface;
- use Magento\Framework\View\Element\UiComponentInterface;
- class AbstractComponentTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var \Magento\Ui\Component\AbstractComponent
- */
- protected $abstractComponent;
- /**
- * @var ContextInterface|MockObject
- */
- protected $contextMock;
- /**
- * @return void
- */
- protected function setUp()
- {
- $this->contextMock = $this->createMock(\Magento\Framework\View\Element\UiComponent\ContextInterface::class);
- $this->contextMock->expects($this->never())->method('getProcessor');
- $this->abstractComponent = $this->getMockBuilder(\Magento\Ui\Component\AbstractComponent::class)
- ->enableOriginalConstructor()
- ->setMethods(['getComponentName'])
- ->setConstructorArgs(['context' => $this->contextMock])
- ->getMock();
- }
- /**
- * @return void
- */
- public function testGetContext()
- {
- $this->assertSame($this->contextMock, $this->abstractComponent->getContext());
- }
- /**
- * @return void
- */
- public function testGetName()
- {
- $name = 'some name';
- $this->abstractComponent->setData('name', $name);
- $this->assertEquals($name, $this->abstractComponent->getName());
- }
- /**
- * @param string $renderResult
- * @return void
- */
- protected function initTestRender($renderResult)
- {
- $template = 'template';
- $this->abstractComponent->setData('template', $template);
- /** @var ContentTypeInterface|MockObject $renderEngineMock */
- $renderEngineMock = $this->createMock(ContentTypeInterface::class);
- $renderEngineMock->expects($this->once())
- ->method('render')
- ->with($this->abstractComponent, $template . '.xhtml')
- ->willReturn($renderResult);
- $this->contextMock->expects($this->once())
- ->method('getRenderEngine')
- ->willReturn($renderEngineMock);
- }
- /**
- * @return void
- */
- public function testRender()
- {
- $renderResult = 'some html code';
- $this->initTestRender($renderResult);
- $this->assertEquals($renderResult, $this->abstractComponent->render());
- }
- /**
- * @return void
- */
- public function testGetComponentNotExists()
- {
- $this->assertNull($this->abstractComponent->getComponent('nameComponent'));
- }
- /**
- * @return void
- */
- public function testGetChildComponentsEmptyArray()
- {
- $this->assertEquals([], $this->abstractComponent->getChildComponents());
- }
- /**
- * @return void
- */
- public function testAddGetChildComponents()
- {
- /** @var \Magento\Framework\View\Element\UiComponentInterface|MockObject $uiComponentMock */
- $uiComponentMock = $this->createMock(\Magento\Framework\View\Element\UiComponentInterface::class);
- $name = 'componentName';
- $this->abstractComponent->addComponent($name, $uiComponentMock);
- $this->assertEquals($uiComponentMock, $this->abstractComponent->getComponent($name));
- }
- /**
- * @return void
- */
- public function testGetChildComponents()
- {
- /** @var \Magento\Framework\View\Element\UiComponentInterface|MockObject $uiComponentMock */
- $uiComponentMock = $this->createMock(\Magento\Framework\View\Element\UiComponentInterface::class);
- $name = 'componentName';
- $expectedResult = [$name => $uiComponentMock];
- $this->abstractComponent->addComponent($name, $uiComponentMock);
- $this->assertEquals($expectedResult, $this->abstractComponent->getChildComponents());
- }
- /**
- * @return void
- */
- public function testRenderChildComponentNotExists()
- {
- $this->assertEquals(null, $this->abstractComponent->renderChildComponent('someComponent'));
- }
- /**
- * @return void
- */
- public function testRenderChildComponent()
- {
- $name = 'componentName';
- $expectedResult = 'some html code';
- /** @var \Magento\Framework\View\Element\UiComponentInterface|MockObject $uiComponentMock */
- $uiComponentMock = $this->createMock(\Magento\Framework\View\Element\UiComponentInterface::class);
- $uiComponentMock->expects($this->once())
- ->method('render')
- ->willReturn($expectedResult);
- $this->abstractComponent->addComponent($name, $uiComponentMock);
- $this->assertEquals($expectedResult, $this->abstractComponent->renderChildComponent($name));
- }
- /**
- * @return void
- */
- public function testGetTemplate()
- {
- $template = 'sample';
- $this->abstractComponent->setData('template', $template);
- $this->assertEquals($template . '.xhtml', $this->abstractComponent->getTemplate());
- }
- /**
- * @param mixed $config
- * @param array $expectedResult
- * @return void
- * @dataProvider getConfigurationDataProvider
- */
- public function testGetConfiguration($config, array $expectedResult)
- {
- $this->abstractComponent->setData('config', $config);
- $this->assertSame($expectedResult, $this->abstractComponent->getConfiguration());
- }
- /**
- * @return array
- */
- public function getConfigurationDataProvider()
- {
- return [
- ['config' => null, 'expectedResult' => []],
- ['config' => [], 'expectedResult' => []],
- ['config' => ['visible' => true], 'expectedResult' => ['visible' => true]],
- ];
- }
- /**
- * @param array $jsConfig
- * @param array $expectedResult
- * @return void
- * @dataProvider getJsConfigDataProvider
- */
- public function testGetJsConfig(array $jsConfig, array $expectedResult)
- {
- $namespace = 'my_namespace';
- /** @var \Magento\Framework\View\Element\UiComponentInterface|MockObject $uiComponentMock */
- $uiComponentMock = $this->getMockBuilder(\Magento\Framework\View\Element\UiComponentInterface::class)
- ->setMethods(['getData'])
- ->getMockForAbstractClass();
- $uiComponentMock->expects($this->once())
- ->method('getData')
- ->with('js_config')
- ->willReturnOnConsecutiveCalls($jsConfig);
- $uiComponentMock->expects($this->any())
- ->method('getContext')
- ->willReturn($this->contextMock);
- $this->contextMock->expects($this->any())
- ->method('getNamespace')
- ->willReturn($namespace);
- $this->assertEquals($expectedResult, $this->abstractComponent->getJsConfig($uiComponentMock));
- }
- /**
- * @return array
- */
- public function getJsConfigDataProvider()
- {
- return [
- [
- 'jsConfig' => [],
- 'expectedResult' => ['extends' => 'my_namespace']
- ],
- [
- 'jsConfig' => ['name' => 'test'],
- 'expectedResult' => ['name' => 'test', 'extends' => 'my_namespace']
- ],
- [
- 'jsConfig' => ['name' => 'test', 'extends' => 'some_extends'],
- 'expectedResult' => ['name' => 'test', 'extends' => 'some_extends']
- ],
- ];
- }
- }
|