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