コード例 #1
0
ファイル: LoadBasicDataCommand.php プロジェクト: blitzik/CMS
 /**
  * Executes the current command.
  *
  * This method is not abstract because you can use this class
  * as a concrete class. In this case, instead of defining the
  * execute() method, you set the code to execute by passing
  * a Closure to the setCode() method.
  *
  * @param InputInterface $input An InputInterface instance
  * @param OutputInterface $output An OutputInterface instance
  *
  * @return null|int null or 0 if everything went fine, or an error code
  *
  * @throws LogicException When this abstract method is not implemented
  *
  * @see setCode()
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     if (empty($this->fixtures)) {
         $output->writeln('No fixtures found.');
         return -1;
     }
     $loader = new Loader();
     foreach ($this->fixtures as $fixture) {
         $loader->addFixture($fixture);
     }
     $purger = new ORMPurger($this->em);
     $executor = new ORMExecutor($this->em, $purger);
     $executor->setLogger(function ($message) use($output) {
         $output->writeln(sprintf('  <comment>></comment> <info>%s</info>', $message));
     });
     /** @var QuestionHelper $questionHelper */
     $questionHelper = $this->getHelper('question');
     $question = new ConfirmationQuestion('WARNING! Database will be purged before loading initialization data. Do you want to continue?', false);
     if (!$questionHelper->ask($input, $output, $question)) {
         $output->writeln('CMS initialization has been CANCELED!');
         return;
     }
     try {
         $executor->execute($loader->getFixtures());
         $output->writeln('Basic CMS data has been SUCCESSFULLY loaded!');
         return 0;
     } catch (\Exception $e) {
         $output->writeLn("That's bad. An Error occurred: <error>{$e->getMessage()}</error>");
         return -1;
     }
 }
コード例 #2
0
ファイル: ORMExecutorTest.php プロジェクト: Dren-x/mobit
 public function testExecuteTransaction()
 {
     $em = $this->getMockSqliteEntityManager();
     $executor = new ORMExecutor($em);
     $fixture = $this->getMockFixture($em);
     $executor->execute(array($fixture), true);
 }
コード例 #3
0
ファイル: DefaultDataCommand.php プロジェクト: blitzik/CMS
 /**
  * Executes the current command.
  *
  * This method is not abstract because you can use this class
  * as a concrete class. In this case, instead of defining the
  * execute() method, you set the code to execute by passing
  * a Closure to the setCode() method.
  *
  * @param InputInterface $input An InputInterface instance
  * @param OutputInterface $output An OutputInterface instance
  *
  * @return null|int null or 0 if everything went fine, or an error code
  *
  * @throws LogicException When this abstract method is not implemented
  *
  * @see setCode()
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     /** @var QuestionHelper $helper */
     $helper = $this->getHelper('question');
     $question = new ConfirmationQuestion('All data in User table will be purged before inserting default data.
          Are you sure you want to continue?', false);
     if (!$helper->ask($input, $output, $question)) {
         return;
     }
     try {
         $loader = new Loader();
         $loader->loadFromDirectory(__DIR__ . '/../fixtures');
         $fixtures = $loader->getFixtures();
         $purger = new ORMPurger($this->em);
         $executor = new ORMExecutor($this->em, $purger);
         $executor->setLogger(function ($message) use($output) {
             $output->writeln(sprintf('  <comment>></comment> <info>%s</info>', $message));
         });
         $executor->execute($fixtures);
         $output->writeln('Default users have been successfully loaded!');
         return 0;
     } catch (\Exception $e) {
         $output->writeLn("That's bad. An Error occurred: <error>{$e->getMessage()}</error>");
         return 1;
     }
 }
コード例 #4
0
 /**
  * {@inheritDoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $app = $this->getApplication()->getApp();
     $em = $app['em'];
     $dirOrFile = $input->getOption('fixtures');
     if ($dirOrFile) {
         $paths = is_array($dirOrFile) ? $dirOrFile : array($dirOrFile);
     } else {
         $paths = isset($app['em.fixtures']) ? $app['em.fixtures'] : array();
     }
     $loader = new Loader();
     foreach ($paths as $path) {
         if (is_dir($path)) {
             $loader->loadFromDirectory($path);
         }
     }
     $fixtures = $loader->getFixtures();
     if (!$fixtures) {
         throw new InvalidArgumentException(sprintf('Could not find any fixtures to load in: %s', "\n\n- " . implode("\n- ", $paths)));
     }
     $purger = new ORMPurger($em);
     $purger->setPurgeMode($input->getOption('purge-with-truncate') ? ORMPurger::PURGE_MODE_TRUNCATE : ORMPurger::PURGE_MODE_DELETE);
     $executor = new ORMExecutor($em, $purger);
     $executor->setLogger(function ($message) use($output) {
         $output->writeln(sprintf('  <comment>></comment> <info>%s</info>', $message));
     });
     $executor->execute($fixtures, $input->getOption('append'));
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $emName = $input->getOption('em');
     $emName = $emName ? $emName : 'default';
     $emServiceName = sprintf('doctrine.orm.%s_entity_manager', $emName);
     if (!$this->getContainer()->has($emServiceName)) {
         throw new InvalidArgumentException(sprintf('Could not find an entity manager configured with the name "%s". Check your ' . 'application configuration to configure your Doctrine entity managers.', $emName));
     }
     $em = $this->getContainer()->get($emServiceName);
     $dirOrFile = $input->getOption('fixtures');
     if ($dirOrFile) {
         $paths = is_array($dirOrFile) ? $dirOrFile : array($dirOrFile);
     } else {
         $paths = array();
         foreach ($this->getApplication()->getKernel()->getBundles() as $bundle) {
             $paths[] = $bundle->getPath() . '/DataFixtures/ORM';
         }
     }
     $loader = new DataFixturesLoader($this->getContainer());
     foreach ($paths as $path) {
         if (is_dir($path)) {
             $loader->loadFromDirectory($path);
         }
     }
     $fixtures = $loader->getFixtures();
     if (!$fixtures) {
         throw new InvalidArgumentException(sprintf('Could not find any fixtures to load in: %s', "\n\n- " . implode("\n- ", $paths)));
     }
     $purger = new ORMPurger($em);
     $executor = new ORMExecutor($em, $purger);
     $executor->setLogger(function ($message) use($output) {
         $output->writeln(sprintf('  <comment>></comment> <info>%s</info>', $message));
     });
     $executor->execute($fixtures, $input->getOption('append'));
 }
コード例 #6
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $em = $this->getEntityManager();
     if ($input->isInteractive() && !$input->getOption('append')) {
         if (!$this->askConfirmation($input, $output, '<question>Careful, database will be purged. Do you want to continue y/N ?</question>', false)) {
             return;
         }
     }
     $app = $this->getApp();
     $path = $app->getApplicationBase($app->getAppNamespace()) . '/DataFixture';
     $loader = new DataFixturesLoader();
     $loader->loadFromDirectory($path);
     $fixtures = $loader->getFixtures();
     if (!$fixtures) {
         throw new InvalidArgumentException(sprintf('Could not find any fixtures to load in: %s', "\n\n- {$path}"));
     }
     foreach ($fixtures as $fixture) {
         if ($fixture instanceof ContainerAwareInterface) {
             $fixture->setContainer($this->getContainer());
         }
     }
     $purger = new ORMPurger($em);
     if ($input->getOption('truncate-only')) {
         $purger->setPurgeMode(ORMPurger::PURGE_MODE_TRUNCATE);
         $purger->purge();
         exit(0);
     }
     $purger->setPurgeMode($input->getOption('truncate') ? ORMPurger::PURGE_MODE_TRUNCATE : ORMPurger::PURGE_MODE_DELETE);
     $executor = new ORMExecutor($em, $purger);
     $executor->setLogger(function ($message) use($output) {
         $output->writeln(sprintf('  <comment>></comment> <info>%s</info>', $message));
     });
     $executor->execute($fixtures, $input->getOption('append'));
 }
コード例 #7
0
 /** @test */
 public function should_find_post_by_id()
 {
     $this->executor->execute($this->loader->getFixtures());
     $post = $this->repository->threadOfId(PostId::fromString('d16f9fe7-e947-460e-99f6-2d64d65f46bc'));
     $this->assertInstanceOf('Cribbb\\Domain\\Model\\Discussion\\Post', $post);
     $this->assertEquals('d16f9fe7-e947-460e-99f6-2d64d65f46bc', $post->id());
 }
コード例 #8
0
 private function loadFixtures(OutputInterface $output, EntityManager $em, array $loaded)
 {
     $logger = function ($message) use($output) {
         $output->writeln(sprintf('  <comment>></comment> <info>%s</info>', $message));
     };
     $executor = new ORMExecutor($em);
     $paths = [];
     foreach ($this->getApplication()->getKernel()->getBundles() as $bundle) {
         $paths[] = $bundle->getPath() . '/Fixture';
     }
     $loader = new DataFixturesLoader($this->getContainer());
     foreach ($paths as $path) {
         if (is_dir($path)) {
             $loader->loadFromDirectory($path);
         }
     }
     $env = $this->getContainer()->getParameter('kernel.environment');
     $output->writeln("Loading <comment>fixtures</comment>...");
     $has = array_map(function (Fixture $fixture) {
         return $fixture->getName();
     }, $loaded);
     $fixtures = array_filter($loader->getFixtures(), function (FixtureInterface $fixture) use($has) {
         return !in_array(get_class($fixture), $has);
     });
     if (!$fixtures) {
         $output->writeln("  Could not find any new <comment>fixtures</comment> to load..");
         return [];
     }
     $executor->setLogger($logger);
     $executor->execute($fixtures, true);
     return $fixtures;
 }
コード例 #9
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $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);
     } else {
         $paths = array();
         foreach ($this->application->getKernel()->getBundles() as $bundle) {
             $paths[] = $bundle->getPath() . '/DataFixtures/ORM';
         }
     }
     $loader = new DataFixturesLoader($this->container);
     foreach ($paths as $path) {
         if (is_dir($path)) {
             $loader->loadFromDirectory($path);
         }
     }
     $fixtures = $loader->getFixtures();
     $purger = new ORMPurger($em);
     $executor = new ORMExecutor($em, $purger);
     $executor->setLogger(function ($message) use($output) {
         $output->writeln(sprintf('  <comment>></comment> <info>%s</info>', $message));
     });
     $executor->execute($fixtures, $input->getOption('append'));
 }
コード例 #10
0
ファイル: DatabaseTestCase.php プロジェクト: ekyna/commerce
 /**
  * Initializes the database (once).
  *
  * @throws \Doctrine\DBAL\DBALException
  * @throws \Doctrine\ORM\ORMException
  * @throws \Doctrine\ORM\Tools\ToolsException
  */
 protected function setUp()
 {
     if (null === static::$_conn) {
         $dbPath = __DIR__ . '/../../../db.sqlite';
         if (file_exists($dbPath)) {
             unlink($dbPath);
         }
         $params = ['driver' => 'pdo_sqlite', 'path' => $dbPath];
         static::$_conn = DriverManager::getConnection($params);
         static::$_conn->getConfiguration()->setSQLLogger(null);
     }
     if (null === static::$_em) {
         $paths = [__DIR__ . '/../../../../../src/Ekyna/Commerce/Bridge/Doctrine/ORM/Resources/mapping'];
         $isDevMode = true;
         $config = Setup::createXMLMetadataConfiguration($paths, $isDevMode);
         $em = EntityManager::create(static::$_conn, $config);
         $classes = [];
         foreach (static::$_classes as $class) {
             array_push($classes, $em->getClassMetadata($class));
         }
         $schemaTool = new SchemaTool($em);
         $schemaTool->dropSchema($classes);
         $schemaTool->createSchema($classes);
         // Load fixtures
         $loader = new Loader();
         $loader->loadFromDirectory(__DIR__ . '/../../../../../src/Ekyna/Commerce/Bridge/Doctrine/Fixtures');
         $purger = new ORMPurger();
         $executor = new ORMExecutor($em, $purger);
         $executor->execute($loader->getFixtures());
         static::$_em = $em;
     }
 }
コード例 #11
0
 /** @test */
 public function should_find_group_by_slug()
 {
     $this->executor->execute($this->loader->getFixtures());
     $group = $this->repository->groupOfSlug('cribbb');
     $this->assertInstanceOf('Cribbb\\Domain\\Model\\Groups\\Group', $group);
     $this->assertEquals('cribbb', $group->slug());
 }
コード例 #12
0
ファイル: ApiControllerTest.php プロジェクト: rikon/jobeet
 public function setUp()
 {
     static::$kernel = static::createKernel();
     static::$kernel->boot();
     $this->application = new Application(static::$kernel);
     //drop the database
     $command = new DropDatabaseDoctrineCommand();
     $this->application->add($command);
     $input = new ArrayInput(array('command' => 'doctrine:database:drop', '--force' => true));
     $command->run($input, new NullOutput());
     //"no database selected" error
     $connection = $this->application->getKernel()->getContainer()->get('doctrine')->getConnection();
     if ($connection->isConnected()) {
         $connection->close();
     }
     //create database
     $command = new CreateDatabaseDoctrineCommand();
     $this->application->add($command);
     $input = new ArrayInput(array('command' => 'doctrine:database:create'));
     $command->run($input, new NullOutput());
     //create schema
     $command = new CreateSchemaDoctrineCommand();
     $this->application->add($command);
     $input = new ArrayInput(array('command' => 'doctrine:schema:create'));
     $command->run($input, new NullOutput());
     //get entity manager
     $this->em = static::$kernel->getContainer()->get('doctrine')->getManager();
     //load fixtures;
     $client = static::createClient();
     $loader = new ContainerAwareLoader($client->getContainer());
     $loader->loadFromDirectory(static::$kernel->locateResource('@IbwJobeetBundle/DataFixtures/ORM'));
     $purger = new ORMPurger($this->em);
     $executor = new ORMExecutor($this->em, $purger);
     $executor->execute($loader->getFixtures());
 }
コード例 #13
0
 /**
  * Napolni podatke iz Fixtures
  */
 public function populateTestAction()
 {
     $logger = function ($message) {
         echo $message . PHP_EOL;
     };
     $em = $this->serviceLocator->get("\\Doctrine\\ORM\\EntityManager");
     $config = new Config($this->serviceLocator->get('config'));
     $loader = new Loader();
     $fixtures = isset($config->test_fixtures) ? $config->test_fixtures : [];
     $fixturename = $this->params('fixturename');
     if (!empty($fixturename)) {
         foreach ($fixtures as $dir) {
             $loader->loadFromFile($dir . '/' . $fixturename . 'Fixture.php');
             /**
              * če je dependent naj ne izvede nobenega
              */
             if (count($loader->getFixtures()) > 1) {
                 throw new \InvalidArgumentException('Loadanih več fixtur-jev -verjetno zaradi dependencies. Kot parameter možen le fixture brez odvisnosti.');
             }
         }
     } else {
         foreach ($fixtures as $dir) {
             $loader->loadFromDirectory($dir);
         }
     }
     $executor = new ORMExecutor($em);
     $executor->setLogger($logger);
     $executor->execute($loader->getFixtures(), true);
 }
コード例 #14
0
 /**
  * Loads data fixtures (ported from LoadDataFixturesDoctrineCommand class)
  *
  * @throws \Codeception\Exception\Module
  */
 public function reloadFixtures()
 {
     $container = $this->getModule('Symfony2')->container;
     $kernel = $this->getModule('Symfony2')->kernel;
     $doctrine = $container->get('doctrine');
     $em = $doctrine->getManager();
     $paths = array();
     foreach ($kernel->getBundles() as $bundle) {
         $paths[] = $bundle->getPath() . '/DataFixtures/ORM';
     }
     $loader = new DataFixturesLoader($container);
     foreach ($paths as $path) {
         if (is_dir($path)) {
             $loader->loadFromDirectory($path);
         }
     }
     $fixtures = $loader->getFixtures();
     if (!$fixtures) {
         throw new InvalidArgumentException(sprintf('Could not find any fixtures to load in: %s', "\n\n- " . implode("\n- ", $paths)));
     }
     $purger = new ORMPurger($em);
     $purger->setPurgeMode(ORMPurger::PURGE_MODE_DELETE);
     $executor = new ORMExecutor($em, $purger);
     $executor->execute($fixtures, false);
 }
コード例 #15
0
 public function adminRefreshDatabaseAction(Request $request, Application $app)
 {
     $conn = $app['db'];
     $em = $app['doctrine.orm.entity_manager'];
     $params = $conn->getParams();
     $name = isset($params['path']) ? $params['path'] : (isset($params['dbname']) ? $params['dbname'] : false);
     try {
         $conn->getSchemaManager()->dropDatabase($name);
         $conn->getSchemaManager()->createDatabase($name);
         $conn->close();
     } catch (\Exception $e) {
         return 1;
     }
     $classes = [];
     foreach ($app['authbucket_oauth2.model'] as $class) {
         $classes[] = $em->getClassMetadata($class);
     }
     PersistentObject::setObjectManager($em);
     $tool = new SchemaTool($em);
     $tool->dropSchema($classes);
     $tool->createSchema($classes);
     $purger = new ORMPurger();
     $executor = new ORMExecutor($em, $purger);
     $loader = new Loader();
     $loader->loadFromDirectory(__DIR__ . '/../DataFixtures/ORM');
     $executor->execute($loader->getFixtures());
     return $app->redirect($app['url_generator']->generate('index'));
 }
コード例 #16
0
 /**
  * @BeforeScenario
  */
 public function setUp()
 {
     $entityManager = $this->getContainer()->get('doctrine')->getManager();
     $purger = new ORMPurger($entityManager);
     $executor = new ORMExecutor($entityManager, $purger);
     $executor->purge();
     $entityManager->clear();
 }
コード例 #17
0
ファイル: PTest.php プロジェクト: Kafei59/bound
 private function loadFixtures()
 {
     $loader = new Loader();
     $loader->addFixture(new LoadAchievementData());
     $purger = new ORMPurger();
     $executor = new ORMExecutor($this->manager, $purger);
     $executor->execute($loader->getFixtures());
 }
コード例 #18
0
ファイル: ApiTestCase.php プロジェクト: Strontium-90/Sylius
 public function setUp()
 {
     $bundle = $this->get('kernel')->getBundle('SyliusFixturesBundle');
     $this->loader = new ContainerAwareLoader(static::createClient()->getContainer());
     $this->loader->loadFromDirectory($bundle->getPath() . '/DataFixtures/ORM');
     $executor = new ORMExecutor($this->get('doctrine.orm.entity_manager'), new ORMPurger());
     $executor->execute($this->loader->getFixtures(), true);
 }
コード例 #19
0
 /**
  * @param FixtureInterface[] $fixtures
  * @param string $mode
  */
 public function load(array $fixtures, $mode = self::MODE_APPEND)
 {
     $append = $this->isAppendMode($mode);
     if (!$append) {
         $this->executor->setPurger($this->purger);
     }
     $this->executor->execute($this->getLoadedFixtures($fixtures), $append);
 }
コード例 #20
0
ファイル: WebTestCase.php プロジェクト: nawrasg/tvguide
 protected function loadFixtures()
 {
     $loader = new Loader();
     $loader->addFixture(new DataFixtures());
     $purger = new ORMPurger();
     $executor = new ORMExecutor($this->app['orm.em'], $purger);
     $executor->execute($loader->getFixtures());
 }
コード例 #21
0
 /**
  * Load the given fixture
  *
  * @param \Doctrine\Common\DataFixtures\FixtureInterface $fixture
  */
 protected function loadFixture(FixtureInterface $fixture)
 {
     $loader = new Loader();
     $loader->addFixture($fixture);
     $purger = new ORMPurger();
     $executor = new ORMExecutor(static::$em, $purger);
     $executor->execute($loader->getFixtures());
 }
コード例 #22
0
 /**
  * @BeforeScenario
  */
 public function purgeDb()
 {
     /** @var EntityManagerInterface $em */
     $em = $this->kernel->getContainer()->get('doctrine')->getManager();
     $purger = new ORMPurger();
     $executor = new ORMExecutor($em, $purger);
     $executor->purge();
 }
コード例 #23
0
 private function loadWholeFixtures()
 {
     $loader = new Loader();
     $loader->addFixture(new LoadItems());
     $purger = new ORMPurger($this->getEntityManager());
     $executor = new ORMExecutor($this->getEntityManager(), $purger);
     $executor->execute($loader->getFixtures());
 }
コード例 #24
0
 protected function loadFixtures()
 {
     $loader = new Loader();
     $loader->loadFromDirectory(__DIR__ . '/Fixtures');
     $purger = new ORMPurger();
     $executor = new ORMExecutor($this->entityManager, $purger);
     $executor->execute($loader->getFixtures());
 }
コード例 #25
0
ファイル: doctrineTest.php プロジェクト: alirezarahmani/tddLD
 /** @test */
 public function file()
 {
     $purger = new ORMPurger();
     $executor = new ORMExecutor($this->em, $purger);
     $executor->execute($this->loader->getFixtures());
     $user = $this->repository->PostOfTitle('hio');
     $this->em->clear();
     $this->assertInstanceOf('App\\Entity\\Post', $user);
 }
コード例 #26
0
 protected function tearDown()
 {
     $loader = new Loader();
     $loader->loadFromFile('src/PadelTFG/GeneralBundle/DataFixtures/ORM/SponsorTest/SponsorTestRemove.php');
     $purger = new ORMPurger();
     $executor = new ORMExecutor($this->em, $purger);
     $executor->execute($loader->getFixtures(), true);
     $this->em->close();
 }
コード例 #27
0
 /** @before */
 public function doLoadFixtures()
 {
     $loader = new Loader();
     foreach ($this->loadFixtures() as $fixture) {
         $loader->addFixture($fixture);
     }
     $purger = new ORMPurger();
     $executor = new ORMExecutor($this->em, $purger);
     $executor->execute($loader->getFixtures());
 }
コード例 #28
0
 public function testCanLoadFixture()
 {
     $loader = $this->getFixtureLoader();
     $loader->addFixture(new LoadProductData());
     $purger = new ORMPurger();
     $executor = new ORMExecutor($this->getEntityManager(), $purger);
     $executor->execute($loader->getFixtures());
     $product = $this->getEntityManager()->find(Product::class, 1);
     $this->assertSame('test', $product->getName());
 }
コード例 #29
0
 /**
  * @param InputInterface $input
  * @param OutputInterface $output
  *
  * @return void
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $loader = new Loader();
     $executor = new ORMExecutor($this->em, new ORMPurger());
     $loader->loadFromDirectory($this->mainDir);
     foreach ($this->dirs as $dir) {
         $loader->loadFromDirectory($dir);
     }
     $executor->execute($loader->getFixtures(), true);
 }
コード例 #30
0
ファイル: Bootstrap.php プロジェクト: debranova/project
 public static function init()
 {
     $zf2ModulePaths = [dirname(dirname(__DIR__))];
     if ($path = static::findParentPath('vendor')) {
         $zf2ModulePaths[] = $path;
     }
     if ($path = static::findParentPath('module')) {
         $zf2ModulePaths[] = $path;
     }
     if (($path = static::findParentPath('src')) !== $zf2ModulePaths[0]) {
         $zf2ModulePaths[] = $path;
     }
     static::initAutoloader();
     $config = (include __DIR__ . '/../config/application.config.php');
     $serviceManager = new ServiceManager(new ServiceManagerConfig());
     $serviceManager->setService('ApplicationConfig', $config);
     $serviceManager->get('ModuleManager')->loadModules();
     static::$serviceManager = $serviceManager;
     if (defined("TEST_SUITE") && constant("TEST_SUITE") == 'full') {
         $entityManager = $serviceManager->get('doctrine.entitymanager.orm_default');
         //Validate the schema;
         $validator = new \Doctrine\ORM\Tools\SchemaValidator($entityManager);
         $errors = $validator->validateMapping();
         if (count($errors) > 0) {
             foreach ($errors as $entity => $errors) {
                 echo "Error in Entity: '" . $entity . "':\n";
                 echo implode("\n", $errors);
                 echo "\n";
             }
             die;
         }
         //Create the schema
         $tool = new \Doctrine\ORM\Tools\SchemaTool($entityManager);
         $mdFactory = $entityManager->getMetadataFactory();
         $mdFactory->getAllMetadata();
         $tool->dropDatabase();
         $tool->createSchema($mdFactory->getAllMetadata());
         $loader = new Loader();
         $loader->addFixture(new \ProjectTest\Fixture\LoadVersionData());
         $loader->addFixture(new \ContactTest\Fixture\LoadContactData());
         $loader->addFixture(new \ProjectTest\Fixture\LoadProjectLogoData());
         $loader->addFixture(new \ProjectTest\Fixture\LoadDocumentData());
         $loader->addFixture(new \ProjectTest\Fixture\LoadFundingStatusData());
         $loader->addFixture(new \ProjectTest\Fixture\LoadIdeaDocumentData());
         $loader->addFixture(new \ProjectTest\Fixture\LoadIdeaImageData());
         $loader->addFixture(new \ProjectTest\Fixture\LoadIdeaDescriptionData());
         $loader->addFixture(new \ProjectTest\Fixture\LoadInviteData());
         $loader->addFixture(new \ProjectTest\Fixture\LoadProjectRationaleData());
         $loader->addFixture(new \GeneralTest\Fixture\LoadWebInfoData());
         $loader->addFixture(new \OrganisationTest\Fixture\LoadOrganisationData());
         $purger = new ORMPurger();
         $executor = new ORMExecutor($entityManager, $purger);
         $executor->execute($loader->getFixtures());
     }
 }