123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- <?php
-
- namespace Doctrine\Tests;
-
- use Doctrine\Common\Cache\ArrayCache;
- use Doctrine\Common\Annotations\AnnotationRegistry;
- use Doctrine\Common\Annotations\SimpleAnnotationReader;
-
- /**
- * Base testcase class for all ORM testcases.
- */
- abstract class OrmTestCase extends DoctrineTestCase
- {
- /** The metadata cache that is shared between all ORM tests (except functional tests). */
- private static $_metadataCacheImpl = null;
- /** The query cache that is shared between all ORM tests (except functional tests). */
- private static $_queryCacheImpl = null;
-
- /**
- * @param array $paths
- * @return \Doctrine\Common\Annotations\AnnotationReader
- */
- protected function createAnnotationDriver($paths = array(), $alias = null)
- {
- if (version_compare(\Doctrine\Common\Version::VERSION, '2.2.0-DEV', '>=')) {
- // Register the ORM Annotations in the AnnotationRegistry
- AnnotationRegistry::registerFile(__DIR__ . '/../../../lib/Doctrine/ORM//Mapping/Driver/DoctrineAnnotations.php');
-
- $reader = new SimpleAnnotationReader();
- $reader->addNamespace('Doctrine\ORM\Mapping');
- $reader = new \Doctrine\Common\Annotations\CachedReader($reader, new ArrayCache());
- } else if (version_compare(\Doctrine\Common\Version::VERSION, '2.1.0-BETA3-DEV', '>=')) {
- $reader = new \Doctrine\Common\Annotations\AnnotationReader();
- $reader->setIgnoreNotImportedAnnotations(true);
- $reader->setEnableParsePhpImports(false);
- if ($alias) {
- $reader->setAnnotationNamespaceAlias('Doctrine\ORM\Mapping\\', $alias);
- } else {
- $reader->setDefaultAnnotationNamespace('Doctrine\ORM\Mapping\\');
- }
- $reader = new \Doctrine\Common\Annotations\CachedReader(
- new \Doctrine\Common\Annotations\IndexedReader($reader), new ArrayCache()
- );
- } else {
- $reader = new \Doctrine\Common\Annotations\AnnotationReader();
- if ($alias) {
- $reader->setAnnotationNamespaceAlias('Doctrine\ORM\Mapping\\', $alias);
- } else {
- $reader->setDefaultAnnotationNamespace('Doctrine\ORM\Mapping\\');
- }
- }
- return new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($reader, (array)$paths);
- }
-
- /**
- * Creates an EntityManager for testing purposes.
- *
- * NOTE: The created EntityManager will have its dependant DBAL parts completely
- * mocked out using a DriverMock, ConnectionMock, etc. These mocks can then
- * be configured in the tests to simulate the DBAL behavior that is desired
- * for a particular test,
- *
- * @return Doctrine\ORM\EntityManager
- */
- protected function _getTestEntityManager($conn = null, $conf = null, $eventManager = null, $withSharedMetadata = true)
- {
- $config = new \Doctrine\ORM\Configuration();
- if($withSharedMetadata) {
- $config->setMetadataCacheImpl(self::getSharedMetadataCacheImpl());
- } else {
- $config->setMetadataCacheImpl(new \Doctrine\Common\Cache\ArrayCache);
- }
-
- $config->setMetadataDriverImpl($config->newDefaultAnnotationDriver());
-
- $config->setQueryCacheImpl(self::getSharedQueryCacheImpl());
- $config->setProxyDir(__DIR__ . '/Proxies');
- $config->setProxyNamespace('Doctrine\Tests\Proxies');
- $eventManager = new \Doctrine\Common\EventManager();
- if ($conn === null) {
- $conn = array(
- 'driverClass' => 'Doctrine\Tests\Mocks\DriverMock',
- 'wrapperClass' => 'Doctrine\Tests\Mocks\ConnectionMock',
- 'user' => 'john',
- 'password' => 'wayne'
- );
- }
- if (is_array($conn)) {
- $conn = \Doctrine\DBAL\DriverManager::getConnection($conn, $config, $eventManager);
- }
- return \Doctrine\Tests\Mocks\EntityManagerMock::create($conn, $config, $eventManager);
- }
-
- private static function getSharedMetadataCacheImpl()
- {
- if (self::$_metadataCacheImpl === null) {
- self::$_metadataCacheImpl = new \Doctrine\Common\Cache\ArrayCache;
- }
- return self::$_metadataCacheImpl;
- }
-
- private static function getSharedQueryCacheImpl()
- {
- if (self::$_queryCacheImpl === null) {
- self::$_queryCacheImpl = new \Doctrine\Common\Cache\ArrayCache;
- }
- return self::$_queryCacheImpl;
- }
- }
|