Rajout de doctrine/orm
[zf2.biz/application_blanche.git] / vendor / doctrine / orm / tests / Doctrine / Tests / OrmTestCase.php
diff --git a/vendor/doctrine/orm/tests/Doctrine/Tests/OrmTestCase.php b/vendor/doctrine/orm/tests/Doctrine/Tests/OrmTestCase.php
new file mode 100644 (file)
index 0000000..4ad60d6
--- /dev/null
@@ -0,0 +1,117 @@
+<?php
+
+namespace Doctrine\Tests;
+
+use Doctrine\Common\Cache\ArrayCache;
+
+/**
+ * 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\ORM\Mapping\Driver\AnnotationDriver
+     */
+    protected function createAnnotationDriver($paths = array(), $alias = null)
+    {
+        if (version_compare(\Doctrine\Common\Version::VERSION, '3.0.0', '>=')) {
+            $reader = new \Doctrine\Common\Annotations\CachedReader(
+                new \Doctrine\Common\Annotations\AnnotationReader(), new ArrayCache()
+            );
+        }
+        else if (version_compare(\Doctrine\Common\Version::VERSION, '2.2.0-DEV', '>=')) {
+            // Register the ORM Annotations in the AnnotationRegistry
+            $reader = new \Doctrine\Common\Annotations\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\\');
+            }
+        }
+        \Doctrine\Common\Annotations\AnnotationRegistry::registerFile(
+            __DIR__ . "/../../../lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php");
+        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)
+    {
+        $metadataCache = $withSharedMetadata
+            ? self::getSharedMetadataCacheImpl()
+            : new \Doctrine\Common\Cache\ArrayCache;
+
+        $config = new \Doctrine\ORM\Configuration();
+
+        $config->setMetadataCacheImpl($metadataCache);
+        $config->setMetadataDriverImpl($config->newDefaultAnnotationDriver(array(), true));
+        $config->setQueryCacheImpl(self::getSharedQueryCacheImpl());
+        $config->setProxyDir(__DIR__ . '/Proxies');
+        $config->setProxyNamespace('Doctrine\Tests\Proxies');
+
+        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;
+    }
+}