Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Mapping / XmlMappingDriverTest.php
1 <?php
2
3 namespace Doctrine\Tests\ORM\Mapping;
4
5 use Doctrine\ORM\Mapping\ClassMetadata,
6     Doctrine\ORM\Mapping\Driver\XmlDriver,
7     Doctrine\ORM\Mapping\Driver\YamlDriver;
8
9 require_once __DIR__ . '/../../TestInit.php';
10
11 class XmlMappingDriverTest extends AbstractMappingDriverTest
12 {
13     protected function _loadDriver()
14     {
15         return new XmlDriver(__DIR__ . DIRECTORY_SEPARATOR . 'xml');
16     }
17
18     public function testClassTableInheritanceDiscriminatorMap()
19     {
20         $className = 'Doctrine\Tests\ORM\Mapping\CTI';
21         $mappingDriver = $this->_loadDriver();
22
23         $class = new ClassMetadata($className);
24         $class->initializeReflection(new \Doctrine\Common\Persistence\Mapping\RuntimeReflectionService);
25         $mappingDriver->loadMetadataForClass($className, $class);
26
27         $expectedMap = array(
28             "foo" => "Doctrine\Tests\ORM\Mapping\CTIFoo",
29             "bar" => "Doctrine\Tests\ORM\Mapping\CTIBar",
30             "baz" => "Doctrine\Tests\ORM\Mapping\CTIBaz",
31         );
32
33         $this->assertEquals(3, count($class->discriminatorMap));
34         $this->assertEquals($expectedMap, $class->discriminatorMap);
35     }
36
37     public function testIdentifierWithAssociationKey()
38     {
39         $driver  = $this->_loadDriver();
40         $em      = $this->_getTestEntityManager();
41         $factory = new \Doctrine\ORM\Mapping\ClassMetadataFactory();
42
43         $em->getConfiguration()->setMetadataDriverImpl($driver);
44         $factory->setEntityManager($em);
45
46         $class = $factory->getMetadataFor('Doctrine\Tests\Models\DDC117\DDC117Translation');
47
48         $this->assertEquals(array('language', 'article'), $class->identifier);
49         $this->assertArrayHasKey('article', $class->associationMappings);
50
51         $this->assertArrayHasKey('id', $class->associationMappings['article']);
52         $this->assertTrue($class->associationMappings['article']['id']);
53     }
54
55     /**
56      * @group DDC-1468
57      *
58      * @expectedException Doctrine\Common\Persistence\Mapping\MappingException
59      * @expectedExceptionMessage Invalid mapping file 'Doctrine.Tests.Models.Generic.SerializationModel.dcm.xml' for class 'Doctrine\Tests\Models\Generic\SerializationModel'.
60      */
61     public function testInvalidMappingFileException()
62     {
63         $this->createClassMetadata('Doctrine\Tests\Models\Generic\SerializationModel');
64     }
65
66     /**
67      * @param string $xmlMappingFile
68      * @dataProvider dataValidSchema
69      */
70     public function testValidateXmlSchema($xmlMappingFile)
71     {
72         $xsdSchemaFile = __DIR__ . "/../../../../../doctrine-mapping.xsd";
73
74         $dom = new \DOMDocument('UTF-8');
75         $dom->load($xmlMappingFile);
76         $this->assertTrue($dom->schemaValidate($xsdSchemaFile));
77     }
78
79     static public function dataValidSchema()
80     {
81         return array(
82             array(__DIR__ . "/xml/Doctrine.Tests.ORM.Mapping.CTI.dcm.xml"),
83             array(__DIR__ . "/xml/Doctrine.Tests.ORM.Mapping.User.dcm.xml"),
84             array(__DIR__ . "/xml/CatNoId.dcm.xml"),
85         );
86     }
87
88     /**
89      * @group DDC-889
90      * @expectedException Doctrine\Common\Persistence\Mapping\MappingException
91      * @expectedExceptionMessage Invalid mapping file 'Doctrine.Tests.Models.DDC889.DDC889Class.dcm.xml' for class 'Doctrine\Tests\Models\DDC889\DDC889Class'.
92      */
93     public function testinvalidEntityOrMappedSuperClassShouldMentionParentClasses()
94     {
95         $this->createClassMetadata('Doctrine\Tests\Models\DDC889\DDC889Class');
96     }
97 }
98
99 class CTI
100 {
101     public $id;
102 }
103
104 class CTIFoo extends CTI {}
105 class CTIBar extends CTI {}
106 class CTIBaz extends CTI {}