/** * @group DDC-268 */ public function testLoadMetadataForNonEntityThrowsException() { $cm = new ClassMetadata('stdClass'); $reader = new \Doctrine\Common\Annotations\AnnotationReader(new \Doctrine\Common\Cache\ArrayCache()); $annotationDriver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($reader); $this->setExpectedException('Doctrine\\ORM\\Mapping\\MappingException'); $annotationDriver->loadMetadataForClass('stdClass', $cm); }
/** * @group DDC-268 */ public function testColumnWithMissingTypeDefaultsToString() { $cm = new ClassMetadata('Doctrine\\Tests\\ORM\\Mapping\\ColumnWithoutType'); $reader = new \Doctrine\Common\Annotations\AnnotationReader(new \Doctrine\Common\Cache\ArrayCache()); $reader->setDefaultAnnotationNamespace('Doctrine\\ORM\\Mapping\\'); $annotationDriver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($reader); $annotationDriver->loadMetadataForClass('Doctrine\\Tests\\ORM\\Mapping\\InvalidColumn', $cm); $this->assertEquals('string', $cm->fieldMappings['id']['type']); }
public function testHasGetMetadata_NamespaceSeperatorIsNotNormalized() { require_once __DIR__ . "/../../Models/Global/GlobalNamespaceModel.php"; $reader = new \Doctrine\Common\Annotations\AnnotationReader(new \Doctrine\Common\Cache\ArrayCache()); $reader->setDefaultAnnotationNamespace('Doctrine\\ORM\\Mapping\\'); $metadataDriver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($reader); $metadataDriver->addPaths(array(__DIR__ . '/../../Models/Global/')); $entityManager = $this->_createEntityManager($metadataDriver); $mf = $entityManager->getMetadataFactory(); $m1 = $mf->getMetadataFor("DoctrineGlobal_Article"); $h1 = $mf->hasMetadataFor("DoctrineGlobal_Article"); $h2 = $mf->hasMetadataFor("\\DoctrineGlobal_Article"); $m2 = $mf->getMetadataFor("\\DoctrineGlobal_Article"); $this->assertNotSame($m1, $m2); $this->assertFalse($h2); $this->assertTrue($h1); }
public function testLoadPrefixedMetadata() { $this->_generator->setAnnotationPrefix('ORM\\'); $metadata = $this->generateBookEntityFixture(); $reader = new \Doctrine\Common\Annotations\AnnotationReader(); $driver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($reader, array()); $book = $this->newInstance($metadata); $cm = new \Doctrine\ORM\Mapping\ClassMetadata($metadata->name); $cm->initializeReflection(new \Doctrine\Common\Persistence\Mapping\RuntimeReflectionService()); $driver->loadMetadataForClass($cm->name, $cm); $this->assertEquals($cm->columnNames, $metadata->columnNames); $this->assertEquals($cm->getTableName(), $metadata->getTableName()); $this->assertEquals($cm->lifecycleCallbacks, $metadata->lifecycleCallbacks); $this->assertEquals($cm->identifier, $metadata->identifier); $this->assertEquals($cm->idGenerator, $metadata->idGenerator); $this->assertEquals($cm->customRepositoryClassName, $metadata->customRepositoryClassName); }
/** * Setup the metadata driver if necessary options are set. Otherwise Doctrine defaults are used (AnnotationReader). * * @param array $options * @param Doctrine\ORM\Configuration $config * @param Doctrine\Common\Cache\AbstractCache $cache * @param Doctrine\DBAL\Connection $conn */ protected function _setupMetadataDriver($options, $config, $cache, $conn) { $driver = false; if (isset($options['metadata'])) { if (isset($options['metadata']['driver'])) { $driverName = $options['metadata']['driver']; switch (strtolower($driverName)) { case 'annotation': $driverName = 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver'; break; case 'yaml': $driverName = 'Doctrine\\ORM\\Mapping\\Driver\\YamlDriver'; break; case 'xml': $driverName = 'Doctrine\\ORM\\Mapping\\Driver\\XmlDriver'; break; case 'php': $driverName = 'Doctrine\\ORM\\Mapping\\Driver\\PhpDriver'; break; case 'database': $driverName = 'Doctrine\\ORM\\Mapping\\Driver\\DatabaseDriver'; break; } if (!class_exists($driverName)) { throw new ZendX_Doctrine2_Exception("MetadataDriver class '" . $driverName . "' does not exist"); } if (in_array('Doctrine\\ORM\\Mapping\\Driver\\AbstractFileDriver', class_parents($driverName))) { if (!isset($options['metadata']['paths'])) { throw new ZendX_Doctrine2_Exception("Metadata Driver is file based, but no config file paths were given."); } if (!isset($options['metadata']['mode'])) { $options['metadata']['mode'] = \Doctrine\ORM\Mapping\Driver\AbstractFileDriver::FILE_PER_CLASS; } $driver = new $driverName($options['metadata']['paths'], $options['metadata']['mode']); } elseif ($driverName == 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver') { $reader = new \Doctrine\Common\Annotations\AnnotationReader($cache); $reader->setDefaultAnnotationNamespace('Doctrine\\ORM\\Mapping\\'); $driver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($reader); if (isset($options['metadata']['classDirectory'])) { $driver->addPaths(array($options['metadata']['classDirectory'])); } else { throw new ZendX_Doctrine2_Exception("Doctrine Annotation Driver requires to set a class directory for the entities."); } //$driverImpl = $config->newDefaultAnnotationDriver("var/www/zfbench/application/models")); //$config->setMetadataDriverImpl($driverImpl); } elseif ($driverName == 'Doctrine\\ORM\\Mapping\\Driver\\DatabaseDriver') { $schemaManager = $conn->getSchemaManager(); $driver = new \Doctrine\ORM\Mapping\Driver\DatabaseDriver($schemaManager); } if (!$driver instanceof \Doctrine\ORM\Mapping\Driver\Driver) { throw new ZendX_Doctrine2_Exception("No metadata driver could be loaded."); } $config->setMetadataDriverImpl($driver); } } }
public function testLoadPrefixedMetadata() { $this->_generator->setAnnotationPrefix('orm:'); $metadata = $this->generateBookEntityFixture(); $book = $this->newInstance($metadata); $cm = new \Doctrine\ORM\Mapping\ClassMetadata($metadata->name); $reader = new \Doctrine\Common\Annotations\AnnotationReader(); $reader->setAnnotationNamespaceAlias("Doctrine\\ORM\\Mapping\\", "orm"); $driver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($reader); $driver->loadMetadataForClass($cm->name, $cm); $this->assertEquals($cm->columnNames, $metadata->columnNames); $this->assertEquals($cm->getTableName(), $metadata->getTableName()); $this->assertEquals($cm->lifecycleCallbacks, $metadata->lifecycleCallbacks); $this->assertEquals($cm->identifier, $metadata->identifier); $this->assertEquals($cm->idGenerator, $metadata->idGenerator); $this->assertEquals($cm->customRepositoryClassName, $metadata->customRepositoryClassName); }