From 213cc5c69538476eade3c3ad964e7401ee9f65b6 Mon Sep 17 00:00:00 2001 From: Menno Holtkamp <menno.holtkamp@gmail.com> Date: Thu, 20 Mar 2014 11:08:29 +0100 Subject: [PATCH 1/2] Use boolean values for 'unique' attribute As defined in: https://github.com/doctrine/doctrine2/blob/master/doctrine-mapping.xsd#L294 Same as 'nullable' attribute. It was being exported as a "1" for TRUE and "0" for false --- lib/Doctrine/ORM/Tools/Export/Driver/XmlExporter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Doctrine/ORM/Tools/Export/Driver/XmlExporter.php b/lib/Doctrine/ORM/Tools/Export/Driver/XmlExporter.php index 1a8fde184..150fc9b40 100644 --- a/lib/Doctrine/ORM/Tools/Export/Driver/XmlExporter.php +++ b/lib/Doctrine/ORM/Tools/Export/Driver/XmlExporter.php @@ -193,7 +193,7 @@ class XmlExporter extends AbstractExporter } if (isset($field['unique']) && $field['unique']) { - $fieldXml->addAttribute('unique', $field['unique']); + $fieldXml->addAttribute('unique', $field['unique'] ? 'true' : 'false'); } if (isset($field['options'])) { From 6bb367f48803e187e423ea6296f978c82827c1ee Mon Sep 17 00:00:00 2001 From: Menno Holtkamp <menno.holtkamp@weev.nl> Date: Thu, 20 Mar 2014 21:29:52 +0100 Subject: [PATCH 2/2] Added test to ensure boolean metadata is properly exported/serialized to XML --- .../AbstractClassMetadataExporterTest.php | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/Doctrine/Tests/ORM/Tools/Export/AbstractClassMetadataExporterTest.php b/tests/Doctrine/Tests/ORM/Tools/Export/AbstractClassMetadataExporterTest.php index 060345c83..229b3d67a 100644 --- a/tests/Doctrine/Tests/ORM/Tools/Export/AbstractClassMetadataExporterTest.php +++ b/tests/Doctrine/Tests/ORM/Tools/Export/AbstractClassMetadataExporterTest.php @@ -209,6 +209,27 @@ abstract class AbstractClassMetadataExporterTest extends \Doctrine\Tests\OrmTest return $class; } + /** + * @depends testExportDirectoryAndFilesAreCreated + */ + public function testFieldsAreProperlySerialized() + { + $type = $this->_getType(); + if ($type == 'xml') { + $xml = simplexml_load_file(__DIR__ . '/export/'.$type.'/Doctrine.Tests.ORM.Tools.Export.ExportedUser.dcm.xml'); + + $xml->registerXPathNamespace("d", "http://doctrine-project.org/schemas/orm/doctrine-mapping"); + $nodes = $xml->xpath("/d:doctrine-mapping/d:entity/d:field[@name='name' and @type='string' and @nullable='true']"); + $this->assertEquals(1, count($nodes)); + + $nodes = $xml->xpath("/d:doctrine-mapping/d:entity/d:field[@name='name' and @type='string' and @unique='true']"); + $this->assertEquals(1, count($nodes)); + } + else { + $this->markTestSkipped('Test available only for '.$type.' driver'); + } + } + /** * @depends testFieldsAreExported * @param ClassMetadataInfo $class