ReaderTest.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Mview\Test\Unit\Config;
  7. class ReaderTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * @var \Magento\Framework\Mview\Config\Reader
  11. */
  12. protected $_model;
  13. /**
  14. * @var \Magento\Framework\Mview\Config\Converter|\PHPUnit_Framework_MockObject_MockObject
  15. */
  16. protected $_converter;
  17. /**
  18. * @var \Magento\Framework\App\Config\FileResolver|\PHPUnit_Framework_MockObject_MockObject
  19. */
  20. protected $_fileResolverMock;
  21. protected function setUp()
  22. {
  23. $this->_fileResolverMock = $this->createPartialMock(\Magento\Framework\App\Config\FileResolver::class, ['get']);
  24. $this->_converter = $this->createPartialMock(\Magento\Framework\Mview\Config\Converter::class, ['convert']);
  25. $urnResolverMock = $this->createMock(\Magento\Framework\Config\Dom\UrnResolver::class);
  26. $urnResolverMock->expects($this->once())
  27. ->method('getRealPath')
  28. ->with('urn:magento:framework:Mview/etc/mview.xsd')
  29. ->willReturn('test_folder');
  30. $schemaLocator = new \Magento\Framework\Mview\Config\SchemaLocator($urnResolverMock);
  31. $validationState = $this->createMock(\Magento\Framework\Config\ValidationStateInterface::class);
  32. $validationState->expects($this->any())
  33. ->method('isValidationRequired')
  34. ->willReturn(false);
  35. $this->_model = new \Magento\Framework\Mview\Config\Reader(
  36. $this->_fileResolverMock,
  37. $this->_converter,
  38. $schemaLocator,
  39. $validationState
  40. );
  41. }
  42. /**
  43. * @dataProvider readerDataProvider
  44. */
  45. public function testReadValidConfig($files, $expectedFile)
  46. {
  47. $this->_fileResolverMock->expects(
  48. $this->once()
  49. )->method(
  50. 'get'
  51. )->with(
  52. 'mview.xml',
  53. 'scope'
  54. )->will(
  55. $this->returnValue($files)
  56. );
  57. $constraint = function (\DOMDocument $actual) use ($expectedFile) {
  58. try {
  59. $expected = file_get_contents(__DIR__ . '/../_files/' . $expectedFile);
  60. \PHPUnit\Framework\Assert::assertXmlStringEqualsXmlString($expected, $actual->saveXML());
  61. return true;
  62. } catch (\PHPUnit\Framework\AssertionFailedError $e) {
  63. return false;
  64. }
  65. };
  66. $expectedResult = new \stdClass();
  67. $this->_converter->expects(
  68. $this->once()
  69. )->method(
  70. 'convert'
  71. )->with(
  72. $this->callback($constraint)
  73. )->will(
  74. $this->returnValue($expectedResult)
  75. );
  76. $this->assertSame($expectedResult, $this->_model->read('scope'));
  77. }
  78. /**
  79. * @return array
  80. */
  81. public function readerDataProvider()
  82. {
  83. return [
  84. 'mview_merged_one' => [
  85. [
  86. 'mview_one.xml' => file_get_contents(__DIR__ . '/../_files/mview_one.xml'),
  87. 'mview_two.xml' => file_get_contents(__DIR__ . '/../_files/mview_two.xml'),
  88. ],
  89. 'mview_merged_one.xml',
  90. ],
  91. 'mview_merged_two' => [
  92. [
  93. 'mview_one.xml' => file_get_contents(__DIR__ . '/../_files/mview_one.xml'),
  94. 'mview_three.xml' => file_get_contents(__DIR__ . '/../_files/mview_three.xml'),
  95. ],
  96. 'mview_merged_two.xml',
  97. ]
  98. ];
  99. }
  100. }