ReaderPoolTest.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\View\Test\Unit\Layout;
  7. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
  8. class ReaderPoolTest extends \PHPUnit\Framework\TestCase
  9. {
  10. /** @var ObjectManagerHelper */
  11. protected $objectManagerHelper;
  12. /** @var \Magento\Framework\View\Layout\ReaderPool */
  13. protected $pool;
  14. /** @var \Magento\Framework\View\Layout\ReaderFactory|\PHPUnit_Framework_MockObject_MockObject */
  15. protected $readerFactoryMock;
  16. protected function setUp()
  17. {
  18. $this->objectManagerHelper = new ObjectManagerHelper($this);
  19. $this->readerFactoryMock = $this->getMockBuilder(\Magento\Framework\View\Layout\ReaderFactory::class)
  20. ->disableOriginalConstructor()->getMock();
  21. $this->pool = $this->objectManagerHelper->getObject(
  22. \Magento\Framework\View\Layout\ReaderPool::class,
  23. [
  24. 'readerFactory' => $this->readerFactoryMock,
  25. 'readers' => ['move' => \Magento\Framework\View\Layout\Reader\Move::class]
  26. ]
  27. );
  28. }
  29. public function testInterpret()
  30. {
  31. /** @var Reader\Context $contextMock */
  32. $contextMock = $this->getMockBuilder(\Magento\Framework\View\Layout\Reader\Context::class)
  33. ->disableOriginalConstructor()->getMock();
  34. $currentElement = new \Magento\Framework\View\Layout\Element(
  35. '<element><move name="block"/><remove name="container"/><ignored name="user"/></element>'
  36. );
  37. /**
  38. * @var \Magento\Framework\View\Layout\Reader\Move|\PHPUnit_Framework_MockObject_MockObject $moveReaderMock
  39. */
  40. $moveReaderMock = $this->getMockBuilder(\Magento\Framework\View\Layout\Reader\Move::class)
  41. ->disableOriginalConstructor()->getMock();
  42. $moveReaderMock->expects($this->exactly(2))->method('interpret')
  43. ->willReturn($this->returnSelf());
  44. $moveReaderMock->method('getSupportedNodes')
  45. ->willReturn(['move']);
  46. $this->readerFactoryMock->expects($this->once())
  47. ->method('create')
  48. ->willReturnMap([[\Magento\Framework\View\Layout\Reader\Move::class, [], $moveReaderMock]]);
  49. $this->pool->interpret($contextMock, $currentElement);
  50. $this->pool->interpret($contextMock, $currentElement);
  51. }
  52. }