3 namespace Doctrine\Tests\ORM\Mapping;
5 use Doctrine\ORM\Mapping\ClassMetadata,
6 Doctrine\ORM\Mapping\Driver\XmlDriver,
7 Doctrine\ORM\Mapping\Driver\YamlDriver;
9 require_once __DIR__ . '/../../TestInit.php';
11 class XmlMappingDriverTest extends AbstractMappingDriverTest
13 protected function _loadDriver()
15 return new XmlDriver(__DIR__ . DIRECTORY_SEPARATOR . 'xml');
18 public function testClassTableInheritanceDiscriminatorMap()
20 $className = 'Doctrine\Tests\ORM\Mapping\CTI';
21 $mappingDriver = $this->_loadDriver();
23 $class = new ClassMetadata($className);
24 $class->initializeReflection(new \Doctrine\Common\Persistence\Mapping\RuntimeReflectionService);
25 $mappingDriver->loadMetadataForClass($className, $class);
28 "foo" => "Doctrine\Tests\ORM\Mapping\CTIFoo",
29 "bar" => "Doctrine\Tests\ORM\Mapping\CTIBar",
30 "baz" => "Doctrine\Tests\ORM\Mapping\CTIBaz",
33 $this->assertEquals(3, count($class->discriminatorMap));
34 $this->assertEquals($expectedMap, $class->discriminatorMap);
37 public function testIdentifierWithAssociationKey()
39 $driver = $this->_loadDriver();
40 $em = $this->_getTestEntityManager();
41 $factory = new \Doctrine\ORM\Mapping\ClassMetadataFactory();
43 $em->getConfiguration()->setMetadataDriverImpl($driver);
44 $factory->setEntityManager($em);
46 $class = $factory->getMetadataFor('Doctrine\Tests\Models\DDC117\DDC117Translation');
48 $this->assertEquals(array('language', 'article'), $class->identifier);
49 $this->assertArrayHasKey('article', $class->associationMappings);
51 $this->assertArrayHasKey('id', $class->associationMappings['article']);
52 $this->assertTrue($class->associationMappings['article']['id']);
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'.
61 public function testInvalidMappingFileException()
63 $this->createClassMetadata('Doctrine\Tests\Models\Generic\SerializationModel');
67 * @param string $xmlMappingFile
68 * @dataProvider dataValidSchema
70 public function testValidateXmlSchema($xmlMappingFile)
72 $xsdSchemaFile = __DIR__ . "/../../../../../doctrine-mapping.xsd";
74 $dom = new \DOMDocument('UTF-8');
75 $dom->load($xmlMappingFile);
76 $this->assertTrue($dom->schemaValidate($xsdSchemaFile));
79 static public function dataValidSchema()
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"),
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'.
93 public function testinvalidEntityOrMappedSuperClassShouldMentionParentClasses()
95 $this->createClassMetadata('Doctrine\Tests\Models\DDC889\DDC889Class');
104 class CTIFoo extends CTI {}
105 class CTIBar extends CTI {}
106 class CTIBaz extends CTI {}