Skip to content

Commit 6c508dc

Browse files
authored
Bugfix for XMLElementEntry losing parent relation (#1992)
1 parent 7d3c2a0 commit 6c508dc

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

src/core/etl/src/Flow/ETL/Row/Entry/XMLElementEntry.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,6 @@ public function __construct(
4040
}
4141

4242
$value = $doc->documentElement;
43-
} elseif ($value instanceof \DOMElement) {
44-
/** @var \DOMElement $value */
45-
$value = (new \DOMDocument())->importNode($value, true);
4643
}
4744

4845
$this->metadata = $metadata ?: Metadata::empty();

src/core/etl/tests/Flow/ETL/Tests/Unit/Row/Entry/XMLElementEntryTest.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,25 @@
1212

1313
final class XMLElementEntryTest extends FlowTestCase
1414
{
15+
public function test_create_from_dom_document() : void
16+
{
17+
$document = new \DOMDocument();
18+
$document->loadXML('<root><name>User Name</name><id>01</id></root>');
19+
20+
/* @phpstan-ignore-next-line */
21+
$entry = xml_element_entry('node', $document->documentElement->firstChild);
22+
23+
self::assertInstanceOf(\DOMElement::class, $entry->value());
24+
self::assertSame('<name>User Name</name>', $entry->toString());
25+
self::assertSame($document->documentElement, $entry->value()->parentNode);
26+
}
27+
1528
public function test_create_from_string() : void
1629
{
1730
$entry = xml_element_entry('node', '<node attr="test">value</node>');
1831

1932
self::assertInstanceOf(\DOMElement::class, $entry->value());
20-
self::assertEquals('<node attr="test">value</node>', $entry->toString());
33+
self::assertSame('<node attr="test">value</node>', $entry->toString());
2134
}
2235

2336
public function test_create_from_string_fails_with_invalid_xml() : void
@@ -34,7 +47,7 @@ public function test_duplicating_entry() : void
3447
$duplicated = $entry->duplicate();
3548

3649
self::assertNotSame($entry, $duplicated);
37-
self::assertEquals($entry->toString(), $duplicated->toString());
50+
self::assertSame($entry->toString(), $duplicated->toString());
3851
}
3952

4053
public function test_serialization() : void

0 commit comments

Comments
 (0)