ReaderTest.php 3.3 KB

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