Author: Jonathan H. Wage (jonwage@gmail.com)
Inheritance: implements Doctrine\Common\DataFixtures\Purger\PurgerInterface
 /**
  * @BeforeScenario
  */
 public function purgeDatabase(BeforeScenarioScope $scope)
 {
     $entityManager = $this->get('doctrine.orm.entity_manager');
     $purger = new ORMPurger($entityManager);
     $purger->purge();
     $entityManager->clear();
 }
 /**
  * {@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)
 {
     $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'));
 }
 protected function givenDatabaseIsClear()
 {
     if (0 !== count($this->items->findAll())) {
         $purger = new ORMPurger($this->entityManager);
         $purger->purge();
     }
 }
 /**
  * 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);
 }
 /**
  * @EXT\Route(
  *     "/reinstall",
  *     name="claro_test_reinstall",
  * )
  *
  * @return Response
  */
 public function reinstallAction()
 {
     $kernel = $this->container->get('kernel');
     $start = new \DateTime();
     $om = $this->container->get('claroline.persistence.object_manager');
     // purge database
     $purger = new ORMPurger($this->container->get('doctrine.orm.entity_manager'));
     $purger->purge();
     // load required core fixtures
     $fixture = new LoadRequiredFixturesData();
     $referenceRepo = new ReferenceRepository($om);
     $fixture->setReferenceRepository($referenceRepo);
     $fixture->setContainer($this->container);
     $fixture->load($om);
     $om->startFlushSuite();
     // reset default template
     $defaultTemplatePath = $this->container->getParameter('kernel.root_dir') . '/../templates/default.zip';
     TemplateBuilder::buildDefault($defaultTemplatePath);
     // install plugin fixtures
     $bundles = $kernel->getBundles();
     $installer = $this->container->get('claroline.plugin.installer');
     foreach ($bundles as $bundle) {
         if ($bundle instanceof PluginBundle) {
             $installer->install($bundle);
         }
     }
     $om->endFlushSuite();
     $end = new \DateTime();
     $diff = $start->diff($end);
     $duration = $diff->i > 0 ? $diff->i . 'm ' : '';
     $duration .= $diff->s . 's';
     return new Response('Platform reinstalled (duration: ' . $duration . ')');
 }
 /**
  * @BeforeScenario
  */
 public function purgeDatabase()
 {
     $this->entityManager->getConnection()->getConfiguration()->setSQLLogger(null);
     $purger = new ORMPurger($this->entityManager);
     $purger->purge();
     $this->entityManager->clear();
 }
 protected function tearDown()
 {
     $purger = new ORMPurger($this->getDoctrine()->getManager());
     $purger->setPurgeMode(ORMPurger::PURGE_MODE_DELETE);
     $purger->purge();
     parent::tearDown();
 }
Beispiel #9
0
 /**
  * {@inheritDoc}
  */
 public function setUp()
 {
     self::bootKernel();
     $this->em = static::$kernel->getContainer()->get('doctrine')->getManager("dblog");
     $purger = new ORMPurger($this->em);
     $purger->setPurgeMode(ORMPurger::PURGE_MODE_DELETE);
     $purger->purge();
 }
Beispiel #10
0
 /**
  * Method that allows to purge database before load the scenario.
  *
  *
  * @BeforeScenario
  */
 public function purgeDatabase()
 {
     $connection = $this->getManager()->getConnection();
     $connection->executeUpdate('SET foreign_key_checks = 0;');
     $purger = new ORMPurger($this->getManager());
     $purger->purge();
     $connection->executeUpdate('SET foreign_key_checks = 1;');
 }
Beispiel #11
0
 /**
  * @BeforeScenario
  */
 public function purgeDatabase(BeforeScenarioScope $scope)
 {
     $entityManager = $this->getService('doctrine.orm.entity_manager');
     $entityManager->getConnection()->executeUpdate("SET foreign_key_checks = 0;");
     $purger = new ORMPurger($entityManager);
     $purger->purge();
     $entityManager->getConnection()->executeUpdate("SET foreign_key_checks = 1;");
 }
 /**
  * {@inheritDoc}
  */
 public function setUp()
 {
     self::bootKernel();
     $this->em = static::$kernel->getContainer()->get('doctrine')->getManager("dblog");
     $this->rep = $this->em->getRepository("MaallsDBLogBundle:DbLog");
     $purger = new ORMPurger($this->em);
     $purger->setPurgeMode(ORMPurger::PURGE_MODE_DELETE);
     $purger->purge();
 }
 /**
  * @BeforeScenario
  */
 public function purgeDatabase()
 {
     if (null === $this->entityManager) {
         throw new \RuntimeException('Cannot purge database. Entity manager is not set');
     }
     $this->entityManager->getConnection()->getConfiguration()->setSQLLogger(null);
     $purger = new ORMPurger($this->entityManager);
     $purger->purge();
     $this->entityManager->clear();
 }
 /**
  * {@inheritdoc}
  */
 public function beforeSuite(SuiteEvent $suiteEvent, array $options)
 {
     foreach ($options['managers'] as $managerName) {
         /** @var EntityManagerInterface $manager */
         $manager = $this->managerRegistry->getManager($managerName);
         $purger = new ORMPurger($manager);
         $purger->setPurgeMode(static::$purgeModes[$options['mode']]);
         $purger->purge();
     }
 }
 public function tearDown()
 {
     if (!$this->em) {
         return;
     }
     $purger = new ORMPurger($this->em);
     $purger->purge();
     $fixtures = new Data();
     $fixtures->load($this->em);
 }
 /**
  * @return $this
  */
 public function purgeDatabase()
 {
     try {
         $purger = new ORMPurger($this->em);
         $purger->purge();
     } catch (\Exception $e) {
         $this->recreateDb();
     }
     return $this;
 }
Beispiel #17
0
 protected function doPurgeFixtures()
 {
     $purger = new ORMPurger();
     $purger->setPurgeMode(ORMPurger::PURGE_MODE_DELETE);
     $managers = $this->getContainer()->get('doctrine')->getManagerNames();
     foreach ($managers as $name => $service) {
         $purger->setEntityManager($this->getEntityManager($name));
         $purger->purge();
     }
 }
Beispiel #18
0
 /**
  * @param InputInterface $input
  * @param OutputInterface $output
  *
  * @return void
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $loader = new Loader();
     $purger = new ORMPurger();
     $purger->setPurgeMode(ORMPurger::PURGE_MODE_TRUNCATE);
     $executor = new ORMExecutor($this->em, $purger);
     $loader->loadFromDirectory($this->mainDir);
     foreach ($this->dirs as $dir) {
         $loader->loadFromDirectory($dir);
     }
     $executor->execute($loader->getFixtures());
 }
Beispiel #19
0
 /**
  * This is a performance improvement.
  * https://github.com/KnpLabs/FriendlyContexts/issues/195
  *
  * @BeforeScenario
  */
 public function beforeScenario($event)
 {
     $this->storeTags($event);
     if ($this->hasTags(['reset-schema', '~not-reset-schema'])) {
         $em = $this->get('doctrine')->getManager();
         $em->getConnection()->executeUpdate("SET FOREIGN_KEY_CHECKS=0;");
         $purger = new ORMPurger($em);
         $purger->setPurgeMode(ORMPurger::PURGE_MODE_TRUNCATE);
         $purger->purge();
         $em->getConnection()->executeUpdate("SET FOREIGN_KEY_CHECKS=1;");
     }
 }
Beispiel #20
0
 /**
  * @see Command
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $listenerManager = $this->container->get('doctrine_extensions.listener_manager');
     $listenerManager->addAllListeners($this->container->get('doctrine.orm.entity_manager'));
     $purger = new ORMPurger($this->container->get('doctrine.orm.entity_manager'));
     $purger->purge();
     $string_input = new StringInput('yrch:populate');
     $application = new Application($this->application->getKernel());
     $application->setAutoExit(false);
     $application->run($string_input, $output);
     $string_input = new StringInput('doctrine:data:load --append=true');
     $application->run($string_input, $output);
 }
Beispiel #21
0
 public function execute(InputInterface $input, OutputInterface $output)
 {
     $loader = new Loader();
     $purger = new ORMPurger();
     if ($input->getOption('purge-with-truncate')) {
         $purger->setPurgeMode(self::PURGE_MODE_TRUNCATE);
     }
     $executor = new ORMExecutor($this->em, $purger);
     foreach ($this->paths as $key => $value) {
         $loader->loadFromDirectory($value);
     }
     $executor->execute($loader->getFixtures(), $input->getOption('append'));
 }
Beispiel #22
0
 public function loadFixtures()
 {
     $path = sprintf('%s/Fixtures', __DIR__);
     $loader = new DataFixturesLoader($this->container);
     $loader->loadFromDirectory($path);
     $fixtures = $loader->getFixtures();
     if (!$fixtures) {
         throw new InvalidArgumentException(sprintf('Could not find any fixtures to load in: %s', $path));
     }
     $purger = new ORMPurger($this->em);
     $purger->setPurgeMode(ORMPurger::PURGE_MODE_DELETE);
     $executor = new ORMExecutor($this->em, $purger);
     $executor->execute($fixtures);
 }
Beispiel #23
0
 /**
  * @BeforeScenario
  */
 public function purgeDatabase(BeforeScenarioScope $scope)
 {
     $entityManager = $this->getService('doctrine.orm.entity_manager');
     $entityManager->getConnection()->getConfiguration()->setSQLLogger(null);
     $isMySqlDriver = $entityManager->getConnection()->getDriver() instanceof PDOMySqlDriver;
     if ($isMySqlDriver) {
         $entityManager->getConnection()->executeUpdate("SET foreign_key_checks = 0;");
     }
     $purger = new ORMPurger($entityManager);
     $purger->purge();
     if ($isMySqlDriver) {
         $entityManager->getConnection()->executeUpdate("SET foreign_key_checks = 1;");
     }
     $entityManager->clear();
 }
Beispiel #24
0
 /**
  * @BeforeScenario
  */
 public function beforeScenario()
 {
     $loader = new Loader();
     $loader->addFixture(new \Stfalcon\Bundle\EventBundle\DataFixtures\ORM\LoadEventData());
     $loader->addFixture(new \Stfalcon\Bundle\EventBundle\DataFixtures\ORM\LoadNewsData());
     $loader->addFixture(new \Application\Bundle\UserBundle\DataFixtures\ORM\LoadUserData());
     $this->em = $this->kernel->getContainer()->get('doctrine.orm.entity_manager');
     $this->em->getConnection()->executeUpdate("SET foreign_key_checks = 0;");
     $purger = new ORMPurger();
     $purger->setPurgeMode(ORMPurger::PURGE_MODE_TRUNCATE);
     $executor = new ORMExecutor($this->em, $purger);
     $executor->purge();
     $executor->execute($loader->getFixtures(), true);
     $this->em->getConnection()->executeUpdate("SET foreign_key_checks = 1;");
 }
 public function importAction()
 {
     if (!$this->getRequest() instanceof ConsoleRequest) {
         throw new RuntimeException('You can only use this action from a console.');
     }
     $loader = new Loader();
     $purger = new ORMPurger();
     foreach ($this->dataFixtureManager->getAll() as $fixture) {
         $loader->addFixture($fixture);
     }
     if ($this->params()->fromRoute('purge-with-truncate')) {
         $purger->setPurgeMode(ORMPurger::PURGE_MODE_TRUNCATE);
     }
     $executor = new ORMExecutor($this->dataFixtureManager->getObjectManager(), $purger);
     $executor->execute($loader->getFixtures(), (bool) $this->params()->fromRoute('append'));
 }
Beispiel #26
0
 /**
  * @BeforeScenario
  */
 public function purgeDatabase(BeforeScenarioScope $scope)
 {
     $entityManager = $this->getContainer()->get('doctrine.orm.entity_manager');
     $entityManager->getConnection()->getConfiguration()->setSQLLogger(null);
     $driver = $entityManager->getConnection()->getDriver();
     $supportsForeignKeyConstraints = $driver->getDatabasePlatform()->supportsForeignKeyConstraints();
     if ($supportsForeignKeyConstraints) {
         $entityManager->getConnection()->executeUpdate("SET foreign_key_checks = 0;");
     }
     $purger = new ORMPurger($entityManager);
     $purger->purge();
     if ($driver->getDatabasePlatform()->supportsIdentityColumns()) {
         $entityManager->getConnection()->executeUpdate("ALTER TABLE expenses AUTO_INCREMENT = 1;");
     }
     if ($supportsForeignKeyConstraints) {
         $entityManager->getConnection()->executeUpdate("SET foreign_key_checks = 1;");
     }
     $entityManager->clear();
 }
 /**
  * Execute test purge
  * 
  * @param string|null $expression
  * @param array $list
  */
 public function executeTestPurge($expression, array $list)
 {
     $em = $this->loadTestData();
     $excludedRepository = $em->getRepository(self::TEST_ENTITY_EXCLUDED);
     $includedRepository = $em->getRepository(self::TEST_ENTITY_INCLUDED);
     $excluded = $excludedRepository->findAll();
     $included = $includedRepository->findAll();
     $this->assertGreaterThan(0, count($included));
     $this->assertGreaterThan(0, count($excluded));
     $connection = $em->getConnection();
     $configuration = $connection->getConfiguration();
     $configuration->setFilterSchemaAssetsExpression($expression);
     $purger = new ORMPurger($em, $list);
     $purger->purge();
     $excluded = $excludedRepository->findAll();
     $included = $includedRepository->findAll();
     $this->assertEquals(0, count($included));
     $this->assertGreaterThan(0, count($excluded));
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     /** @var $doctrine \Doctrine\Common\Persistence\ManagerRegistry */
     $doctrine = $this->getContainer()->get('doctrine');
     $em = $doctrine->getManager($input->getOption('em'));
     if ($input->isInteractive() && !$input->getOption('append')) {
         $dialog = $this->getHelperSet()->get('dialog');
         if (!$dialog->askConfirmation($output, '<question>Careful, database will be purged. Do you want to continue Y/N ?</question>', false)) {
             return;
         }
     }
     $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);
     $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'));
     // Serialize reference repository to a file. So fixtures will be accessible by names inside functional tests.
     $referenceRepositoryFile = $this->getContainer()->getParameter('fixtures.reference_repository_path');
     $serializedReferenceRepository = (new FixtureReferenceRepositorySerializer())->serialize($executor->getReferenceRepository());
     file_put_contents($referenceRepositoryFile, $serializedReferenceRepository);
     $output->writeln(sprintf('<info>Reference repository saved to:</info> <comment>%s</comment>', realpath($referenceRepositoryFile)));
 }
Beispiel #29
0
 /**
  * @BeforeScenario
  */
 public function beforeScen()
 {
     $loader = new Loader();
     $this->getMainContext()->getSubcontext('DoctrineFixturesContext')->loadFixtureClasses($loader, array('Stfalcon\\Bundle\\EventBundle\\DataFixtures\\ORM\\LoadNewsData', 'Stfalcon\\Bundle\\EventBundle\\DataFixtures\\ORM\\LoadPagesData', 'Stfalcon\\Bundle\\EventBundle\\DataFixtures\\ORM\\LoadReviewData', 'Stfalcon\\Bundle\\EventBundle\\DataFixtures\\ORM\\LoadMailQueueData', 'Application\\Bundle\\UserBundle\\DataFixtures\\ORM\\LoadUserData', 'Stfalcon\\Bundle\\EventBundle\\DataFixtures\\ORM\\LoadEventData', 'Stfalcon\\Bundle\\EventBundle\\DataFixtures\\ORM\\LoadPromoCodeData', 'Stfalcon\\Bundle\\EventBundle\\DataFixtures\\ORM\\LoadPaymentData', 'Stfalcon\\Bundle\\EventBundle\\DataFixtures\\ORM\\LoadMailQueueData', 'Stfalcon\\Bundle\\EventBundle\\DataFixtures\\ORM\\LoadTicketData', 'Stfalcon\\Bundle\\EventBundle\\DataFixtures\\ORM\\LoadMailQueueData'));
     /** @var $em \Doctrine\ORM\EntityManager */
     $em = $this->kernel->getContainer()->get('doctrine.orm.entity_manager');
     $em->getConnection()->executeUpdate("SET foreign_key_checks = 0;");
     $purger = new ORMPurger();
     $purger->setPurgeMode(ORMPurger::PURGE_MODE_TRUNCATE);
     $executor = new ORMExecutor($em, $purger);
     $executor->purge();
     $executor->execute($loader->getFixtures(), true);
     $em->getConnection()->executeUpdate("SET foreign_key_checks = 1;");
     /** Maximize browser window */
     $driver = $this->getSession()->getDriver();
     if ($driver instanceof Selenium2Driver) {
         $driver->maximizeWindow();
     }
 }
Beispiel #30
0
/**
 * Remove all data from the app.
 */
function clear_app()
{
    // remove all old data from the database
    $em = doctrine()->getManager();
    $purger = new ORMPurger($em);
    $purger->setPurgeMode(ORMPurger::PURGE_MODE_TRUNCATE);
    $purger->purge();
    // clear the elasticsearch database
    if (container()->has('fos_elastica.index_manager')) {
        $es_index_manager = container()->get('fos_elastica.index_manager');
        $es_resetter = container()->get('fos_elastica.resetter');
        foreach ($es_index_manager->getAllIndexes() as $name => $index) {
            $es_resetter->resetIndex($name, false, true);
        }
    }
    $finder = new Finder();
    foreach ($finder->in(__DIR__ . "/data/")->name('*.sql') as $file) {
        load_sql($file);
    }
}