ConfigTest.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Simplexml\Test\Unit;
  7. use Magento\Framework\Simplexml\Config;
  8. class ConfigTest extends \PHPUnit\Framework\TestCase
  9. {
  10. /**
  11. * @var Config
  12. */
  13. protected $config;
  14. protected function setUp()
  15. {
  16. $this->config = new Config();
  17. }
  18. public function testConstruct()
  19. {
  20. $xml = '<root><node1><node2/></node1><node3><node4/></node3></root>';
  21. $file = __DIR__ . '/_files/data.xml';
  22. $config = new Config($xml);
  23. $this->assertXmlStringEqualsXmlString($xml, $config->getXmlString());
  24. $config = new Config($file);
  25. $this->assertXmlStringEqualsXmlString($xml, $config->getXmlString());
  26. /** @var Element $simpleXml */
  27. $simpleXml = simplexml_load_string(file_get_contents($file), \Magento\Framework\Simplexml\Element::class);
  28. $config = new Config($simpleXml);
  29. $this->assertXmlStringEqualsXmlString($xml, $config->getXmlString());
  30. }
  31. public function testLoadString()
  32. {
  33. $xml = '<?xml version="1.0"?><config><node>1</node></config>';
  34. $this->assertFalse($this->config->loadString(''));
  35. $this->assertTrue($this->config->loadString($xml));
  36. $this->assertXmlStringEqualsXmlString($xml, $this->config->getXmlString());
  37. }
  38. public function testLoadDom()
  39. {
  40. $dom = new \DOMDocument();
  41. $dom->loadXML('<?xml version="1.0"?><config><node>1</node></config>');
  42. $this->assertTrue($this->config->loadDom($dom));
  43. }
  44. public function testGetNode()
  45. {
  46. $this->assertFalse($this->config->getNode());
  47. $config = new Config(__DIR__ . '/_files/mixed_data.xml');
  48. $this->assertSame('Value 2.1', $config->getNode('node_2/node_2_1')->asArray());
  49. }
  50. public function testGetXpath()
  51. {
  52. $this->assertFalse($this->config->getXpath('wrong_xpath'));
  53. $config = new Config(__DIR__ . '/_files/mixed_data.xml');
  54. $this->assertFalse($config->getXpath('wrong_xpath'));
  55. $element = $config->getXpath('/root/node_2/node_2_1');
  56. $this->assertArrayHasKey(0, $element);
  57. $this->assertInstanceOf(\Magento\Framework\Simplexml\Element::class, $element[0]);
  58. $this->assertSame('Value 2.1', $element[0]->asArray());
  59. }
  60. public function testLoadWrongFile()
  61. {
  62. $this->assertFalse($this->config->loadFile('wrong_file'));
  63. }
  64. public function testSetNode()
  65. {
  66. $config = new Config(__DIR__ . '/_files/mixed_data.xml');
  67. $config->setNode('node_2', 'new_value');
  68. $this->assertSame('new_value', $config->getNode('node_2')->asArray());
  69. }
  70. public function testApplyExtends()
  71. {
  72. $config = new Config(__DIR__ . '/_files/extend_data.xml');
  73. $config->applyExtends();
  74. $this->assertEquals(
  75. $config->getNode('node_1/node_1_1')->asArray(),
  76. $config->getNode('node_3/node_1_1')->asArray()
  77. );
  78. $config = new Config(__DIR__ . '/_files/data.xml');
  79. $config->applyExtends();
  80. }
  81. public function testExtendNode()
  82. {
  83. $config = new Config(__DIR__ . '/_files/data.xml');
  84. $config->extend(new Config('<config><node>1</node></config>'));
  85. $this->assertSame('1', $config->getNode('node')->asArray());
  86. }
  87. }