Skip to content

Commit 5ccf2ea

Browse files
authoredDec 23, 2021
Fix XML export for change-tracking-policy (#9285)
1 parent 6696b0d commit 5ccf2ea

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed
 

‎lib/Doctrine/ORM/Tools/Export/Driver/XmlExporter.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public function exportClassMetadata(ClassMetadataInfo $metadata)
9090
$trackingPolicy = $this->_getChangeTrackingPolicyString($metadata->changeTrackingPolicy);
9191

9292
if ($trackingPolicy !== 'DEFERRED_IMPLICIT') {
93-
$root->addChild('change-tracking-policy', $trackingPolicy);
93+
$root->addAttribute('change-tracking-policy', $trackingPolicy);
9494
}
9595

9696
if (isset($metadata->table['indexes'])) {

‎tests/Doctrine/Tests/ORM/Tools/Export/XmlClassMetadataExporterTest.php

+42
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,48 @@ public function testFieldOptionsExport(): void
9999
</field>
100100
</entity>
101101
</doctrine-mapping>
102+
XML;
103+
104+
self::assertXmlStringEqualsXmlString($expectedFileContent, $exporter->exportClassMetadata($metadata));
105+
}
106+
107+
public function testPolicyExport(): void
108+
{
109+
$exporter = new XmlExporter();
110+
$metadata = new ClassMetadata('entityTest');
111+
112+
// DEFERRED_IMPLICIT
113+
$metadata->setChangeTrackingPolicy(ClassMetadata::CHANGETRACKING_DEFERRED_IMPLICIT);
114+
115+
$expectedFileContent = <<<'XML'
116+
<?xml version="1.0" encoding="utf-8"?>
117+
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping https://www.doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
118+
<entity name="entityTest"/>
119+
</doctrine-mapping>
120+
XML;
121+
122+
self::assertXmlStringEqualsXmlString($expectedFileContent, $exporter->exportClassMetadata($metadata));
123+
124+
// DEFERRED_EXPLICIT
125+
$metadata->setChangeTrackingPolicy(ClassMetadata::CHANGETRACKING_DEFERRED_EXPLICIT);
126+
127+
$expectedFileContent = <<<'XML'
128+
<?xml version="1.0" encoding="utf-8"?>
129+
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping https://www.doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
130+
<entity name="entityTest" change-tracking-policy="DEFERRED_EXPLICIT"/>
131+
</doctrine-mapping>
132+
XML;
133+
134+
self::assertXmlStringEqualsXmlString($expectedFileContent, $exporter->exportClassMetadata($metadata));
135+
136+
// NOTIFY
137+
$metadata->setChangeTrackingPolicy(ClassMetadata::CHANGETRACKING_NOTIFY);
138+
139+
$expectedFileContent = <<<'XML'
140+
<?xml version="1.0" encoding="utf-8"?>
141+
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping https://www.doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
142+
<entity name="entityTest" change-tracking-policy="NOTIFY"/>
143+
</doctrine-mapping>
102144
XML;
103145

104146
self::assertXmlStringEqualsXmlString($expectedFileContent, $exporter->exportClassMetadata($metadata));

0 commit comments

Comments
 (0)
Please sign in to comment.