Integrating new data fixtures code.
This commit is contained in:
parent
2525998f6e
commit
ff683a694e
|
@ -11,6 +11,7 @@ $loader->registerNamespaces(array(
|
|||
'Doctrine\\Common' => __DIR__.'/vendor/doctrine-common/lib',
|
||||
'Doctrine\\DBAL\\Migrations' => __DIR__.'/vendor/doctrine-migrations/lib',
|
||||
'Doctrine\\DBAL' => __DIR__.'/vendor/doctrine-dbal/lib',
|
||||
'Doctrine\\ORM\\DataFixtures' => __DIR__.'/vendor/doctrine-orm-data-fixtures',
|
||||
'Doctrine' => __DIR__.'/vendor/doctrine/lib',
|
||||
'Zend' => __DIR__.'/vendor/zend/library',
|
||||
));
|
||||
|
|
|
@ -12,6 +12,9 @@ cd vendor
|
|||
# Doctrine ORM
|
||||
git clone git://github.com/doctrine/doctrine2.git doctrine
|
||||
|
||||
# Doctrine ORM Data Fixtures Extension
|
||||
git clone git://github.com/doctrine/orm-data-fixtures doctrine-orm-data-fixtures
|
||||
|
||||
# Doctrine DBAL
|
||||
git clone git://github.com/doctrine/dbal.git doctrine-dbal
|
||||
|
||||
|
|
|
@ -39,6 +39,7 @@ class LoadDataFixturesDoctrineCommand extends DoctrineCommand
|
|||
->setDescription('Load data fixtures to your database.')
|
||||
->addOption('fixtures', null, InputOption::PARAMETER_OPTIONAL | InputOption::PARAMETER_IS_ARRAY, 'The directory or file to load data fixtures from.')
|
||||
->addOption('append', null, InputOption::PARAMETER_OPTIONAL, 'Whether or not to append the data fixtures.', false)
|
||||
->addOption('em', null, InputOption::PARAMETER_REQUIRED, 'The entity manager to use for this command.')
|
||||
->setHelp(<<<EOT
|
||||
The <info>doctrine:data:load</info> command loads data fixtures from your bundles:
|
||||
|
||||
|
@ -57,7 +58,10 @@ EOT
|
|||
|
||||
protected function execute(InputInterface $input, OutputInterface $output)
|
||||
{
|
||||
$defaultEm = $this->container->getDoctrine_ORM_EntityManagerService();
|
||||
$emName = $input->getOption('em');
|
||||
$emName = $emName ? $emName : 'default';
|
||||
$emServiceName = sprintf('doctrine.orm.%s_entity_manager', $emName);
|
||||
$em = $this->container->get($emServiceName);
|
||||
$dirOrFile = $input->getOption('fixtures');
|
||||
if ($dirOrFile) {
|
||||
$paths = is_array($dirOrFile) ? $dirOrFile : array($dirOrFile);
|
||||
|
@ -69,139 +73,19 @@ EOT
|
|||
$namespace = str_replace('/', '\\', dirname($tmp));
|
||||
$class = basename($tmp);
|
||||
|
||||
if (isset($bundleDirs[$namespace]) && is_dir($dir = $bundleDirs[$namespace].'/'.$class.'/Resources/data/fixtures/doctrine/orm')) {
|
||||
if (isset($bundleDirs[$namespace]) && is_dir($dir = $bundleDirs[$namespace].'/'.$class.'/DataFixtures/ORM')) {
|
||||
$paths[] = $dir;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$files = array();
|
||||
$loader = new \Doctrine\Common\DataFixtures\Loader();
|
||||
foreach ($paths as $path) {
|
||||
if (is_dir($path)) {
|
||||
$finder = new Finder();
|
||||
$found = iterator_to_array($finder
|
||||
->files()
|
||||
->name('*.php')
|
||||
->in($path));
|
||||
} else {
|
||||
$found = array($path);
|
||||
$loader->loadFromDirectory($path);
|
||||
}
|
||||
$files = array_merge($files, $found);
|
||||
}
|
||||
|
||||
$ems = array();
|
||||
$emEntities = array();
|
||||
$files = array_unique($files);
|
||||
foreach ($files as $file) {
|
||||
$em = $defaultEm;
|
||||
$output->writeln(sprintf('<info>Loading data fixtures from <comment>"%s"</comment></info>', $file));
|
||||
|
||||
$before = array_keys(get_defined_vars());
|
||||
include($file);
|
||||
$after = array_keys(get_defined_vars());
|
||||
$new = array_diff($after, $before);
|
||||
$params = $em->getConnection()->getParams();
|
||||
$emName = isset($params['path']) ? $params['path']:$params['dbname'];
|
||||
|
||||
$ems[$emName] = $em;
|
||||
$emEntities[$emName] = array();
|
||||
$variables = array_values($new);
|
||||
|
||||
foreach ($variables as $variable) {
|
||||
$value = $$variable;
|
||||
if (!is_object($value) || $value instanceof \Doctrine\ORM\EntityManager) {
|
||||
continue;
|
||||
}
|
||||
$emEntities[$emName][] = $value;
|
||||
}
|
||||
foreach ($ems as $emName => $em) {
|
||||
if (!$input->getOption('append')) {
|
||||
$output->writeln(sprintf('<info>Purging data from entity manager named <comment>"%s"</comment></info>', $emName));
|
||||
$this->purgeEntityManager($em);
|
||||
}
|
||||
|
||||
$entities = $emEntities[$emName];
|
||||
$numEntities = count($entities);
|
||||
$output->writeln(sprintf('<info>Persisting "%s" '.($numEntities > 1 ? 'entities' : 'entity').'</info>', count($entities)));
|
||||
|
||||
foreach ($entities as $entity) {
|
||||
$em->persist($entity);
|
||||
}
|
||||
$output->writeln('<info>Flushing entity manager</info>');
|
||||
$em->flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function purgeEntityManager(EntityManager $em)
|
||||
{
|
||||
$classes = array();
|
||||
$metadatas = $em->getMetadataFactory()->getAllMetadata();
|
||||
|
||||
foreach ($metadatas as $metadata) {
|
||||
if (!$metadata->isMappedSuperclass) {
|
||||
$classes[] = $metadata;
|
||||
}
|
||||
}
|
||||
|
||||
$commitOrder = $this->getCommitOrder($em, $classes);
|
||||
|
||||
// Drop association tables first
|
||||
$orderedTables = $this->getAssociationTables($commitOrder);
|
||||
|
||||
// Drop tables in reverse commit order
|
||||
for ($i = count($commitOrder) - 1; $i >= 0; --$i) {
|
||||
$class = $commitOrder[$i];
|
||||
|
||||
if (($class->isInheritanceTypeSingleTable() && $class->name != $class->rootEntityName)
|
||||
|| $class->isMappedSuperclass) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$orderedTables[] = $class->getTableName();
|
||||
}
|
||||
|
||||
foreach($orderedTables as $tbl) {
|
||||
$em->getConnection()->executeUpdate("DELETE FROM $tbl");
|
||||
}
|
||||
}
|
||||
|
||||
protected function getCommitOrder(EntityManager $em, array $classes)
|
||||
{
|
||||
$calc = new CommitOrderCalculator;
|
||||
|
||||
foreach ($classes as $class) {
|
||||
$calc->addClass($class);
|
||||
|
||||
foreach ($class->associationMappings as $assoc) {
|
||||
if ($assoc['isOwningSide']) {
|
||||
$targetClass = $em->getClassMetadata($assoc['targetEntity']);
|
||||
|
||||
if ( ! $calc->hasClass($targetClass->name)) {
|
||||
$calc->addClass($targetClass);
|
||||
}
|
||||
|
||||
// add dependency ($targetClass before $class)
|
||||
$calc->addDependency($targetClass, $class);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $calc->getCommitOrder();
|
||||
}
|
||||
|
||||
protected function getAssociationTables(array $classes)
|
||||
{
|
||||
$associationTables = array();
|
||||
|
||||
foreach ($classes as $class) {
|
||||
foreach ($class->associationMappings as $assoc) {
|
||||
if ($assoc['isOwningSide'] && $assoc['type'] == ClassMetadata::MANY_TO_MANY) {
|
||||
$associationTables[] = $assoc['joinTable']['name'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $associationTables;
|
||||
$fixtures = $loader->getFixtures();
|
||||
$purger = new \Doctrine\Common\DataFixtures\Purger\ORMPurger($em);
|
||||
$executor = new \Doctrine\Common\DataFixtures\Executor\ORMExecutor($em, $purger);
|
||||
$executor->execute($fixtures, $input->getOption('append'));
|
||||
}
|
||||
}
|
|
@ -7,15 +7,16 @@
|
|||
<parameters>
|
||||
<parameter key="doctrine.dbal.default_connection">default</parameter>
|
||||
<parameter key="doctrine.dbal.connection_class">Doctrine\DBAL\Connection</parameter>
|
||||
|
||||
<parameter key="doctrine.dbal.logger.debug_class">Doctrine\DBAL\Logging\DebugStack</parameter>
|
||||
<parameter key="doctrine.dbal.logger_class">Symfony\Bundle\DoctrineBundle\Logger\DbalLogger</parameter>
|
||||
<parameter key="doctrine.data_collector.class">Symfony\Bundle\DoctrineBundle\DataCollector\DoctrineDataCollector</parameter>
|
||||
<parameter key="doctrine.dbal.default_connection">default</parameter>
|
||||
</parameters>
|
||||
|
||||
<services>
|
||||
<service id="doctrine.dbal.logger.debug" class="Doctrine\DBAL\Logging\DebugStack" />
|
||||
<service id="doctrine.dbal.logger.debug" class="%doctrine.dbal.logger.debug_class%" />
|
||||
|
||||
<service id="doctrine.dbal.logger" class="Symfony\Bundle\DoctrineBundle\Logger\DbalLogger">
|
||||
<service id="doctrine.dbal.logger" class="%doctrine.dbal.logger_class%">
|
||||
<argument type="service" id="logger" on-invalid="null" />
|
||||
</service>
|
||||
|
||||
|
|
|
@ -42,13 +42,12 @@
|
|||
|
||||
<services>
|
||||
<!--- Annotation Metadata Driver Service -->
|
||||
<service id="doctrine.orm.metadata_driver.annotation" class="Doctrine\ORM\Mapping\Driver\AnnotationDriver">
|
||||
<service id="doctrine.orm.metadata_driver.annotation" class="%doctrine.orm.metadata.annotation_class%">
|
||||
<argument type="service" id="doctrine.orm.metadata_driver.annotation.reader" />
|
||||
<argument>%doctrine.orm.metadata_driver.entity_dirs%</argument>
|
||||
</service>
|
||||
|
||||
<service id="doctrine.orm.metadata_driver.annotation.reader" class="Doctrine\Common\Annotations\AnnotationReader">
|
||||
<call method="setDefaultAnnotationNamespace"><argument>%doctrine.orm.metadata.annotation_default_namespace%</argument></call>
|
||||
<service id="doctrine.orm.metadata_driver.annotation.reader" class="%doctrine.orm.metadata.annotation_reader_class%">
|
||||
<call method="setAnnotationNamespaceAlias">
|
||||
<argument>Doctrine\ORM\Mapping\</argument>
|
||||
<argument>orm</argument>
|
||||
|
@ -56,12 +55,12 @@
|
|||
</service>
|
||||
|
||||
<!--- XML Metadata Driver Service -->
|
||||
<service id="doctrine.orm.metadata_driver.xml" class="Doctrine\ORM\Mapping\Driver\XmlDriver">
|
||||
<service id="doctrine.orm.metadata_driver.xml" class="%doctrine.orm.metadata.xml_class%">
|
||||
<argument>%doctrine.orm.metadata_driver.mapping_dirs%</argument>
|
||||
</service>
|
||||
|
||||
<!--- YAML Metadata Driver Service -->
|
||||
<service id="doctrine.orm.metadata_driver.yml" class="Doctrine\ORM\Mapping\Driver\YamlDriver">
|
||||
<service id="doctrine.orm.metadata_driver.yml" class="%doctrine.orm.metadata.yml_class%">
|
||||
<argument>%doctrine.orm.metadata_driver.mapping_dirs%</argument>
|
||||
</service>
|
||||
</services>
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien.potencier@symfony-project.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Bundle\DoctrineBundle\Tests;
|
||||
|
||||
use Symfony\Component\DependencyInjection\Dumper\PhpDumper;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
|
||||
use Symfony\Bundle\DoctrineBundle\DependencyInjection\DoctrineExtension;
|
||||
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
|
||||
|
||||
class ContainerTest extends TestCase
|
||||
{
|
||||
public function getContainer()
|
||||
{
|
||||
$container = new ContainerBuilder(new ParameterBag(array(
|
||||
'kernel.bundle_dirs' => array(),
|
||||
'kernel.bundles' => array(),
|
||||
'kernel.cache_dir' => sys_get_temp_dir(),
|
||||
)));
|
||||
$loader = new DoctrineExtension();
|
||||
$container->registerExtension($loader);
|
||||
$loader->dbalLoad(array(), $container);
|
||||
$loader->ormLoad(array(), $container);
|
||||
|
||||
$dumper = new PhpDumper($container);
|
||||
$code = $dumper->dump();
|
||||
eval(str_replace('<?php', null, $code));
|
||||
return new \ProjectServiceContainer;
|
||||
}
|
||||
|
||||
public function testContainer()
|
||||
{
|
||||
$container = $this->getContainer();
|
||||
$this->assertInstanceOf('Doctrine\DBAL\Logging\DebugStack', $container->get('doctrine.dbal.logger.debug'));
|
||||
$this->assertInstanceOf('Doctrine\DBAL\Logging\DebugStack', $container->get('doctrine.dbal.logger'));
|
||||
$this->assertInstanceOf('Symfony\Bundle\DoctrineBundle\DataCollector\DoctrineDataCollector', $container->get('doctrine.data_collector'));
|
||||
$this->assertInstanceOf('Doctrine\DBAL\Configuration', $container->get('doctrine.dbal.default_connection.configuration'));
|
||||
$this->assertInstanceOf('Doctrine\Common\EventManager', $container->get('doctrine.dbal.default_connection.event_manager'));
|
||||
$this->assertInstanceOf('Doctrine\DBAL\Connection', $container->get('doctrine.dbal.default_connection'));
|
||||
$this->assertInstanceOf('Doctrine\ORM\Mapping\Driver\AnnotationDriver', $container->get('doctrine.orm.metadata_driver.annotation'));
|
||||
$this->assertInstanceOf('Doctrine\Common\Annotations\AnnotationReader', $container->get('doctrine.orm.metadata_driver.annotation.reader'));
|
||||
$this->assertInstanceOf('Doctrine\ORM\Mapping\Driver\XmlDriver', $container->get('doctrine.orm.metadata_driver.xml'));
|
||||
$this->assertInstanceOf('Doctrine\ORM\Mapping\Driver\YamlDriver', $container->get('doctrine.orm.metadata_driver.yml'));
|
||||
$this->assertInstanceOf('Doctrine\ORM\Configuration', $container->get('doctrine.orm.default_configuration'));
|
||||
$this->assertInstanceOf('Doctrine\ORM\Mapping\Driver\DriverChain', $container->get('doctrine.orm.metadata_driver'));
|
||||
$this->assertInstanceOf('Doctrine\Common\Cache\ArrayCache', $container->get('doctrine.orm.default_metadata_cache'));
|
||||
$this->assertInstanceOf('Doctrine\Common\Cache\ArrayCache', $container->get('doctrine.orm.default_query_cache'));
|
||||
$this->assertInstanceOf('Doctrine\Common\Cache\ArrayCache', $container->get('doctrine.orm.default_result_cache'));
|
||||
$this->assertInstanceOf('Doctrine\ORM\EntityManager', $container->get('doctrine.orm.default_entity_manager'));
|
||||
$this->assertInstanceOf('Doctrine\DBAL\Connection', $container->get('database_connection'));
|
||||
$this->assertInstanceOf('Doctrine\ORM\EntityManager', $container->get('doctrine.orm.entity_manager'));
|
||||
}
|
||||
}
|
|
@ -21,16 +21,16 @@ class CreateSchemaDoctrineODMCommand extends CreateCommand
|
|||
parent::configure();
|
||||
|
||||
$this
|
||||
->setName('doctrine:odm:schema:create')
|
||||
->setName('doctrine:mongodb:schema:create')
|
||||
->addOption('dm', null, InputOption::PARAMETER_REQUIRED, 'The document manager to use for this command.')
|
||||
->setHelp(<<<EOT
|
||||
The <info>doctrine:odm:schema:create</info> command creates the default document manager's schema:
|
||||
The <info>doctrine:mongodb:schema:create</info> command creates the default document manager's schema:
|
||||
|
||||
<info>./symfony doctrine:odm:schema:create</info>
|
||||
<info>./symfony doctrine:mongodb:schema:create</info>
|
||||
|
||||
You can also optionally specify the name of a document manager to create the schema for:
|
||||
|
||||
<info>./symfony doctrine:odm:schema:create --dm=default</info>
|
||||
<info>./symfony doctrine:mongodb:schema:create --dm=default</info>
|
||||
EOT
|
||||
);
|
||||
}
|
||||
|
|
|
@ -21,16 +21,16 @@ class DropSchemaDoctrineODMCommand extends DropCommand
|
|||
parent::configure();
|
||||
|
||||
$this
|
||||
->setName('doctrine:odm:schema:drop')
|
||||
->setName('doctrine:mongodb:schema:drop')
|
||||
->addOption('dm', null, InputOption::PARAMETER_REQUIRED, 'The document manager to use for this command.')
|
||||
->setHelp(<<<EOT
|
||||
The <info>doctrine:odm:schema:drop</info> command drops the default document manager's schema:
|
||||
The <info>doctrine:mongodb:schema:drop</info> command drops the default document manager's schema:
|
||||
|
||||
<info>./symfony doctrine:odm:schema:drop</info>
|
||||
<info>./symfony doctrine:mongodb:schema:drop</info>
|
||||
|
||||
You can also optionally specify the name of a document manager to drop the schema for:
|
||||
|
||||
<info>./symfony doctrine:odm:schema:drop --dm=default</info>
|
||||
<info>./symfony doctrine:mongodb:schema:drop --dm=default</info>
|
||||
EOT
|
||||
);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,91 @@
|
|||
<?php
|
||||
|
||||
namespace Symfony\Bundle\DoctrineMongoDBBundle\Command;
|
||||
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Symfony\Component\Console\Output\Output;
|
||||
use Symfony\Component\Finder\Finder;
|
||||
use Symfony\Bundle\FrameworkBundle\Util\Filesystem;
|
||||
use Doctrine\Common\Cli\Configuration;
|
||||
use Doctrine\Common\Cli\CliController as DoctrineCliController;
|
||||
use Doctrine\ODM\MongoDB\DocumentManager;
|
||||
use Doctrine\ODM\MongoDB\Internal\CommitOrderCalculator;
|
||||
use Doctrine\ODM\MongoDB\Mapping\ClassMetadata;
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony framework.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien.potencier@symfony-project.com>
|
||||
*
|
||||
* This source file is subject to the MIT license that is bundled
|
||||
* with this source code in the file LICENSE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Load data fixtures from bundles.
|
||||
*
|
||||
* @author Fabien Potencier <fabien.potencier@symfony-project.com>
|
||||
* @author Jonathan H. Wage <jonwage@gmail.com>
|
||||
*/
|
||||
class LoadDataFixturesDoctrineODMCommand extends DoctrineODMCommand
|
||||
{
|
||||
protected function configure()
|
||||
{
|
||||
$this
|
||||
->setName('doctrine:mongodb:data:load')
|
||||
->setDescription('Load data fixtures to your database.')
|
||||
->addOption('fixtures', null, InputOption::PARAMETER_OPTIONAL | InputOption::PARAMETER_IS_ARRAY, 'The directory or file to load data fixtures from.')
|
||||
->addOption('append', null, InputOption::PARAMETER_OPTIONAL, 'Whether or not to append the data fixtures.', false)
|
||||
->addOption('dm', null, InputOption::PARAMETER_REQUIRED, 'The document manager to use for this command.')
|
||||
->setHelp(<<<EOT
|
||||
The <info>doctrine:mongodb:data:load</info> command loads data fixtures from your bundles:
|
||||
|
||||
<info>./symfony doctrine:mongodb:data:load</info>
|
||||
|
||||
You can also optionally specify the path to fixtures with the <info>--fixtures</info> option:
|
||||
|
||||
<info>./symfony doctrine:mongodb:data:load --fixtures=/path/to/fixtures1 --fixtures=/path/to/fixtures2</info>
|
||||
|
||||
If you want to append the fixtures instead of flushing the database first you can use the <info>--append</info> option:
|
||||
|
||||
<info>./symfony doctrine:mongodb:data:load --append</info>
|
||||
EOT
|
||||
);
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output)
|
||||
{
|
||||
$dmName = $input->getOption('dm');
|
||||
$dmName = $dmName ? $dmName : 'default';
|
||||
$dmServiceName = sprintf('doctrine.odm.mongodb.%s_document_manager', $dmName);
|
||||
$dm = $this->container->get($dmServiceName);
|
||||
$dirOrFile = $input->getOption('fixtures');
|
||||
if ($dirOrFile) {
|
||||
$paths = is_array($dirOrFile) ? $dirOrFile : array($dirOrFile);
|
||||
} else {
|
||||
$paths = array();
|
||||
$bundleDirs = $this->container->getKernelService()->getBundleDirs();
|
||||
foreach ($this->container->getKernelService()->getBundles() as $bundle) {
|
||||
$tmp = dirname(str_replace('\\', '/', get_class($bundle)));
|
||||
$namespace = str_replace('/', '\\', dirname($tmp));
|
||||
$class = basename($tmp);
|
||||
|
||||
if (isset($bundleDirs[$namespace]) && is_dir($dir = $bundleDirs[$namespace].'/'.$class.'/DataFixtures/MongoDB')) {
|
||||
$paths[] = $dir;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$loader = new \Doctrine\Common\DataFixtures\Loader();
|
||||
foreach ($paths as $path) {
|
||||
$loader->loadFromDirectory($path);
|
||||
}
|
||||
$fixtures = $loader->getFixtures();
|
||||
$purger = new \Doctrine\Common\DataFixtures\Purger\MongoDBPurger($dm);
|
||||
$executor = new \Doctrine\Common\DataFixtures\Executor\MongoDBExecutor($dm, $purger);
|
||||
$executor->execute($fixtures, $input->getOption('append'));
|
||||
}
|
||||
}
|
|
@ -56,7 +56,6 @@
|
|||
</service>
|
||||
<service id="doctrine.odm.mongodb.metadata.annotation_reader" class="%doctrine.odm.mongodb.metadata.annotation_reader_class%">
|
||||
<argument type="service" id="doctrine.odm.mongodb.cache" />
|
||||
<call method="setDefaultAnnotationNamespace"><argument>%doctrine.odm.mongodb.metadata.annotation_default_namespace%</argument></call>
|
||||
<call method="setAnnotationNamespaceAlias">
|
||||
<argument>Doctrine\ODM\MongoDB\Mapping\</argument>
|
||||
<argument>mongodb</argument>
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien.potencier@symfony-project.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Bundle\DoctrineBundle\Tests;
|
||||
|
||||
use Symfony\Component\DependencyInjection\Dumper\PhpDumper;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
|
||||
use Symfony\Bundle\DoctrineMongoDBBundle\DependencyInjection\DoctrineMongoDBExtension;
|
||||
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
|
||||
|
||||
class ContainerTest extends TestCase
|
||||
{
|
||||
public function getContainer()
|
||||
{
|
||||
$container = new ContainerBuilder(new ParameterBag(array(
|
||||
'kernel.bundle_dirs' => array(),
|
||||
'kernel.bundles' => array(),
|
||||
'kernel.cache_dir' => sys_get_temp_dir(),
|
||||
)));
|
||||
$loader = new DoctrineMongoDBExtension();
|
||||
$container->registerExtension($loader);
|
||||
$loader->mongodbLoad(array(), $container);
|
||||
|
||||
$dumper = new PhpDumper($container);
|
||||
$code = $dumper->dump();
|
||||
eval(str_replace('<?php', null, $code));
|
||||
return new \ProjectServiceContainer;
|
||||
}
|
||||
|
||||
public function testContainer()
|
||||
{
|
||||
$container = $this->getContainer();
|
||||
$this->assertInstanceOf('Doctrine\ODM\MongoDB\Mapping\Driver\DriverChain', $container->get('doctrine.odm.mongodb.metadata.chain'));
|
||||
$this->assertInstanceOf('Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver', $container->get('doctrine.odm.mongodb.metadata.annotation'));
|
||||
$this->assertInstanceOf('Doctrine\Common\Annotations\AnnotationReader', $container->get('doctrine.odm.mongodb.metadata.annotation_reader'));
|
||||
$this->assertInstanceOf('Doctrine\ODM\MongoDB\Mapping\Driver\XmlDriver', $container->get('doctrine.odm.mongodb.metadata.xml'));
|
||||
$this->assertInstanceOf('Doctrine\ODM\MongoDB\Mapping\Driver\YamlDriver', $container->get('doctrine.odm.mongodb.metadata.yml'));
|
||||
$this->assertInstanceOf('Doctrine\Common\Cache\ArrayCache', $container->get('doctrine.odm.mongodb.cache.array'));
|
||||
$this->assertInstanceOf('Symfony\Bundle\DoctrineMongoDBBundle\Logger\DoctrineMongoDBLogger', $container->get('doctrine.odm.mongodb.logger'));
|
||||
$this->assertInstanceOf('Symfony\Bundle\DoctrineMongoDBBundle\DataCollector\DoctrineMongoDBDataCollector', $container->get('doctrine.odm.mongodb.data_collector'));
|
||||
$this->assertInstanceOf('Doctrine\ODM\MongoDB\Mongo', $container->get('doctrine.odm.mongodb.default_connection'));
|
||||
$this->assertInstanceOf('Doctrine\ODM\MongoDB\Configuration', $container->get('doctrine.odm.mongodb.default_configuration'));
|
||||
$this->assertInstanceOf('Doctrine\ODM\MongoDB\Mapping\Driver\DriverChain', $container->get('doctrine.odm.mongodb.metadata'));
|
||||
$this->assertInstanceOf('Doctrine\Common\Cache\ArrayCache', $container->get('doctrine.odm.mongodb.default_metadata_cache'));
|
||||
$this->assertInstanceOf('Doctrine\ODM\MongoDB\DocumentManager', $container->get('doctrine.odm.mongodb.default_document_manager'));
|
||||
$this->assertInstanceOf('Doctrine\Common\Cache\ArrayCache', $container->get('doctrine.odm.mongodb.cache'));
|
||||
$this->assertInstanceOf('Doctrine\ODM\MongoDB\DocumentManager', $container->get('doctrine.odm.mongodb.document_manager'));
|
||||
}
|
||||
}
|
|
@ -5,6 +5,9 @@ CURRENT=`pwd`/vendor
|
|||
# Doctrine ORM
|
||||
cd $CURRENT/doctrine && git pull
|
||||
|
||||
# Doctrine ORM Data Fixtures Extension
|
||||
cd $CURRENT/doctrine-orm-data-fixtures && git pull
|
||||
|
||||
# Doctrine DBAL
|
||||
cd $CURRENT/doctrine-dbal && git pull
|
||||
|
||||
|
|
Reference in New Issue