XmlMappingDriverTest.php 3.1 KB

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