assertTrue(isset($xml->node3->node4)); $xml->node3->unsetSelf(); $this->assertFalse(isset($xml->node3->node4)); $this->assertFalse(isset($xml->node3)); $this->assertTrue(isset($xml->node1)); } /** * @dataProvider xmlDataProvider * @expectedException \InvalidArgumentException * @expectedExceptionMessage Root node could not be unset. */ public function testGetParent($xmlData) { /** @var $xml \Magento\Framework\Simplexml\Element */ $xml = simplexml_load_file($xmlData[0], $xmlData[1]); $this->assertTrue($xml->getName() == 'root'); $xml->unsetSelf(); } /** * Data Provider for testUnsetSelf and testUnsetSelfException */ public static function xmlDataProvider() { return [ [[__DIR__ . '/_files/data.xml', \Magento\Framework\Simplexml\Element::class]] ]; } public function testAsNiceXmlMixedData() { $dataFile = file_get_contents(__DIR__ . '/_files/mixed_data.xml'); /** @var \Magento\Framework\Simplexml\Element $xml */ $xml = simplexml_load_string($dataFile, \Magento\Framework\Simplexml\Element::class); $expected = << Value 1 Value 1.1 Value 1.1.1 Value 2.1 XML; $this->assertEquals($expected, $xml->asNiceXml()); } public function testAppendChild() { /** @var \Magento\Framework\Simplexml\Element $baseXml */ $baseXml = simplexml_load_string('', \Magento\Framework\Simplexml\Element::class); /** @var \Magento\Framework\Simplexml\Element $appendXml */ $appendXml = simplexml_load_string( 'text', \Magento\Framework\Simplexml\Element::class ); $baseXml->appendChild($appendXml); $expectedXml = 'text'; $this->assertXmlStringEqualsXmlString($expectedXml, $baseXml->asNiceXml()); } public function testSetNode() { $path = '/node1/node2'; $value = 'value'; /** @var \Magento\Framework\Simplexml\Element $xml */ $xml = simplexml_load_string('', \Magento\Framework\Simplexml\Element::class); $this->assertEmpty($xml->xpath('/root/node1/node2')); $xml->setNode($path, $value); $this->assertNotEmpty($xml->xpath('/root/node1/node2')); $this->assertEquals($value, (string)$xml->xpath('/root/node1/node2')[0]); } /** * @dataProvider setAttributeDataProvider * @param string $name * @param string $value */ public function testSetAttribute($name, $value) { /** @var \Magento\Framework\Simplexml\Element $xml */ $xml = simplexml_load_string('', \Magento\Framework\Simplexml\Element::class); $this->assertEquals($xml->getAttribute('name'), 'test2'); $this->assertNull($xml->getAttribute('new')); $xml->setAttribute($name, $value); $this->assertEquals($xml->getAttribute($name), $value); } /** * @return array */ public function setAttributeDataProvider() { return [ ['name', 'test'], ['new', 'beard'], ['data', 'some-data'] ]; } }