DomTest.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Ui\Config\Reader;
  7. use Magento\TestFramework\Helper\Bootstrap;
  8. use Magento\Framework\Config\FileIterator;
  9. use Magento\Framework\Filesystem\DriverPool;
  10. use Magento\Framework\Filesystem\File\ReadFactory;
  11. class DomTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /**
  14. * @var Dom
  15. */
  16. private $dom;
  17. /**
  18. * @return void
  19. */
  20. public function testConfigurationDom()
  21. {
  22. $filename = 'test_component.xml';
  23. foreach ($this->getComponentFiles($filename) as $content) {
  24. if (!$this->dom) {
  25. $objectManager = Bootstrap::getObjectManager();
  26. $this->dom = $objectManager->create(Dom::class, ['xml' => $content]);
  27. } else {
  28. $this->dom->merge($content);
  29. }
  30. }
  31. $this->assertXmlStringEqualsXmlFile(
  32. $this->getMergedFilePath('test_component_merged.xml'),
  33. $this->dom->getDom()->saveXML()
  34. );
  35. }
  36. /**
  37. * @return void
  38. */
  39. public function testDefinitionDom()
  40. {
  41. $filename = 'etc/test_definition.xml';
  42. foreach ($this->getComponentFiles($filename) as $content) {
  43. if (!$this->dom) {
  44. $objectManager = Bootstrap::getObjectManager();
  45. $this->dom = $objectManager->create(
  46. Dom::class,
  47. [
  48. 'xml' => $content,
  49. 'idAttributes' => ['/' => 'name'],
  50. 'schemaLocator' => $objectManager->create(Definition\SchemaLocator::class)
  51. ]
  52. );
  53. } else {
  54. $this->dom->merge($content);
  55. }
  56. }
  57. $this->assertXmlStringEqualsXmlFile(
  58. $this->getMergedFilePath('etc/test_definition_merged.xml'),
  59. $this->dom->getDom()->saveXML()
  60. );
  61. }
  62. /**
  63. * @param string $filename
  64. * @return \Magento\Framework\Config\FileIterator
  65. */
  66. private function getComponentFiles($filename)
  67. {
  68. $path = realpath(__DIR__ . '/../../_files/view');
  69. $paths = [
  70. $path . '/module_one/ui_component/' . $filename,
  71. $path . '/module_two/ui_component/' . $filename
  72. ];
  73. return new FileIterator(new ReadFactory(new DriverPool), $paths);
  74. }
  75. /**
  76. * @param $filename
  77. * @return string
  78. */
  79. private function getMergedFilePath($filename)
  80. {
  81. return realpath(__DIR__ . '/../../_files/view/ui_component') . DIRECTORY_SEPARATOR. $filename;
  82. }
  83. }