Exemplo n.º 1
0
 /**
  * 
  * @param \CSanquer\FakeryGenerator\Model\Config $config
  * @param string $directory
  * @param bool $filenameWithDate
  */
 protected function setFilename(Config $config, $directory, $filenameWithDate = false)
 {
     $fs = new Filesystem();
     if (!$fs->exists($directory)) {
         $fs->mkdir($directory);
     }
     $this->filename = realpath($directory) . DIRECTORY_SEPARATOR . $config->getClassName(true) . ($filenameWithDate ? '_' . date('Y-m-d_H-i-s') : '') . '.' . $this->getExtension();
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $app = $this->getApplication()->getSilex();
     $outputDir = realpath(is_dir($input->getArgument('output-dir')) ? $input->getArgument('output-dir') : '.');
     $format = $input->getOption('format');
     if (!in_array($format, array('json', 'xml'))) {
         throw new \InvalidArgumentException('The format ' . $format . ' is not allowed.');
     }
     $config = new Config();
     $config->setClassName('Entity\\User')->setFakeNumber(100)->setFormats(array_keys(DumpManager::getAvailableFormats()))->setLocale('en_US')->setSeed(17846134)->setCsvDialect(Dialect::createExcelDialect())->setVariables([new Variable('firstname', 'firstName'), new Variable('lastname', 'lastName'), new Variable('emailDomain', 'freeEmailDomain'), new Variable('birthday', 'dateTimeBetween', ['Y-m-d', '1970-01-01', '2014-01-01']), new Variable('phonehome', 'phoneNumber'), new Variable('phonework', 'phoneNumber'), new Variable('phonemobile', 'phoneNumber'), new Variable('street1', 'streetAddress'), new Variable('city1', 'city'), new Variable('postalcode1', 'postcode'), new Variable('country1', 'country'), new Variable('street2', 'streetAddress'), new Variable('city2', 'city'), new Variable('postalcode2', 'postcode'), new Variable('country2', 'country')])->setColumns([new Column('firstname', '%firstname%', 'capitalize'), new Column('lastname', '%lastname%', 'capitalize'), new Column('email', '%firstname%.%lastname%@%emailDomain%', 'lowercase'), new Column('birthday', '%birthday%'), new Column('address', null, null, [new Column('home', null, null, [new Column('street', '%street1%', 'capitalize'), new Column('city', '%city1%', 'capitalize'), new Column('postalcode', '%postalcode1%'), new Column('country', '%country1%', 'capitalize')]), new Column('work', null, null, [new Column('street', '%street2%', 'capitalize'), new Column('city', '%city2%', 'capitalize'), new Column('postalcode', '%postalcode2%'), new Column('country', '%country2%', 'capitalize')])]), new Column('phone', null, null, [new Column('home', '%phonehome%'), new Column('mobile', '%phonemobile%')])]);
     $serializer = $app['fakery.config_serializer'];
     $configFile = $serializer->dump($config, $outputDir, $format);
     $output->writeln('Example Config file dumped to <info>' . $configFile) . '</info>';
 }
 protected function dumpRowsToAllFiles(Config $config, array $dumpers)
 {
     // generate random data and write row by row
     $this->stopwatch->start('generating_rows', 'generate_dumps');
     $this->progress->start($this->output, $config->getFakeNumber());
     $unit = floor($config->getFakeNumber() / 100);
     $this->progress->setRedrawFrequency($unit < 1 ? 1 : $unit);
     $this->progress->setBarCharacter('<comment>=</comment>');
     $this->output->writeln('Generating <info>' . $config->getFakeNumber() . '</info> rows ...');
     parent::dumpRowsToAllFiles($config, $dumpers);
     $this->progress->finish();
     $this->output->writeln('Finalizing files ...');
     $this->stopwatch->stop('generating_rows');
     $this->stopwatch->start('finalizing_files', 'generate_dumps');
 }
Exemplo n.º 4
0
 /**
  * @covers CSanquer\FakeryGenerator\Model\Config::generateColumnValues
  */
 public function testGenerateColumnValues()
 {
     $values = ['firstname' => ['raw' => 'Allene', 'flat' => 'Allene'], 'lastname' => ['raw' => 'McGlynn', 'flat' => 'McGlynn'], 'emailDomain' => ['raw' => 'yahoo.com', 'flat' => 'yahoo.com'], 'birthday' => ['raw' => new \DateTime('2000-10-13 20:30:58', new \DateTimeZone('Europe/Paris')), 'flat' => '2000-10-13']];
     $this->config->setColumns([new Column('name', null, null, [new Column('firstname', '%firstname%', 'capitalize'), new Column('lastname', '%lastname%', 'capitalize')]), new Column('email', '%firstname%.%lastname%@%emailDomain%', 'lowercase'), new Column('birthday', '%birthday%')]);
     $columnValues = $this->config->generateColumnValues($values);
     $this->assertEquals(['name' => ['firstname' => 'Allene', 'lastname' => 'McGlynn'], 'email' => '*****@*****.**', 'birthday' => '2000-10-13'], $columnValues);
 }
 public function providerDump()
 {
     $config1 = new Config();
     $config1->setMaxTimestamp('2014-01-01T12:30:45+0100');
     $config1->setClassName('Entity\\User');
     $config1->setFakeNumber(10);
     $config1->setFormats(['php', 'json', 'xml', 'yaml', 'csv', 'sql', 'excel', 'perl', 'ruby', 'python']);
     $config1->setSeed(51);
     $config1->setLocale('fr_FR');
     $config1->setVariables([new Variable('firstname', 'firstName', [], false, false), new Variable('lastname', 'lastName', [], false, false), new Variable('birthday', 'dateTimeThisCentury', ['d/m/Y'], false, 0.5), new Variable('email', 'safeEmail', [], true, false)]);
     $config1->setColumns([new Column('person', null, null, [new Column('name', null, null, [new Column('firstname', '%firstname%', 'capitalize'), new Column('lastname', '%lastname%', 'capitalize')]), new Column('birthday', '%birthday%')]), new Column('email', '%email%')]);
     return [[$config1, true, 'all', "Dumping Configuration as JSON ...\nDumping Configuration as XML ...\nInitializing files ...\nFormats : php, json, xml, yaml, csv, sql, excel, perl, ruby, python\nGenerating 10 rows ...\n\r  1/10 [==>-------------------------]  10%\r  2/10 [=====>----------------------]  20%\r  3/10 [========>-------------------]  30%\r  4/10 [===========>----------------]  40%\r  5/10 [==============>-------------]  50%\r  6/10 [================>-----------]  60%\r  7/10 [===================>--------]  70%\r  8/10 [======================>-----]  80%\r  9/10 [=========================>--]  90%\r 10/10 [============================] 100%\nFinalizing files ...\n\r  1/10 [==>-------------------------]  10%\r  2/10 [=====>----------------------]  20%\r  3/10 [========>-------------------]  30%\r  4/10 [===========>----------------]  40%\r  5/10 [==============>-------------]  50%\r  6/10 [================>-----------]  60%\r  7/10 [===================>--------]  70%\r  8/10 [======================>-----]  80%\r  9/10 [=========================>--]  90%\r 10/10 [============================] 100%\nCompressing files into zip ...\n", ['zip' => 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}\\.zip'], ['fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.csv', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.json', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.php', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.pl', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.py', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.rb', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.sql', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.xlsx', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.xml', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.yml', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User_fakery_generator_config_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}.json', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User_fakery_generator_config_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}.xml']]];
 }
Exemplo n.º 6
0
 public function providerDump()
 {
     $config1 = new Config();
     $config1->setMaxTimestamp('2014-01-01T12:30:45+0100');
     $config1->setClassName('Entity\\User');
     $config1->setFakeNumber(10);
     $config1->setFormats(['php', 'json', 'xml', 'yaml', 'csv', 'sql', 'excel', 'perl', 'ruby', 'python']);
     $config1->setSeed(51);
     $config1->setLocale('fr_FR');
     $config1->setVariables([new Variable('firstname', 'firstName', [], false, false), new Variable('lastname', 'lastName', [], false, false), new Variable('birthday', 'dateTimeThisCentury', ['d/m/Y'], false, 0.5), new Variable('email', 'safeEmail', [], true, false)]);
     $config1->setColumns([new Column('person', null, null, [new Column('name', null, null, [new Column('firstname', '%firstname%', 'capitalize'), new Column('lastname', '%lastname%', 'capitalize')]), new Column('birthday', '%birthday%')]), new Column('email', '%email%')]);
     return [[$config1, true, 'all', ['zip' => 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}\\.zip'], ['fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.csv', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.json', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.php', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.pl', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.py', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.rb', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.sql', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.xlsx', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.xml', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User.yml', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User_fakery_generator_config_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}.json', 'fakery_User_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/Entity_User_fakery_generator_config_\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}.xml']]];
 }
Exemplo n.º 7
0
 public function providerDump()
 {
     $config1 = new Config();
     $config1->setClassName('Entity\\User')->setFakeNumber(3)->setFormats(['ruby'])->setLocale('en_US')->setSeed(17846134)->setCsvDialect(Dialect::createUnixDialect())->setVariables([new Variable('firstname', 'firstName'), new Variable('lastname', 'lastName'), new Variable('emailDomain', 'freeEmailDomain'), new Variable('birthday', 'dateTimeThisCentury', ['Y-m-d'])])->setColumns([new Column('person', null, null, [new Column('name', null, null, [new Column('firstname', '%firstname%', 'capitalize'), new Column('lastname', '%lastname%', 'capitalize')]), new Column('email', '%firstname%.%lastname%@%emailDomain%', 'lowercase')]), new Column('birthday', '%birthday%')]);
     return [[$config1, true, [['person' => ['name' => ['firstname' => 'Adolph', 'lastname' => 'McCullough'], 'email' => '*****@*****.**'], 'birthday' => '1994-05-30'], ['person' => ['name' => ['firstname' => 'Sebastian', 'lastname' => 'Harvey'], 'email' => '*****@*****.**'], 'birthday' => '1927-10-02'], ['person' => ['name' => ['firstname' => 'Norris', 'lastname' => 'Douglas'], 'email' => '*****@*****.**'], 'birthday' => '1994-08-12']], 'RubyDumper/expected/Entity_User.rb']];
 }
Exemplo n.º 8
0
 protected function getFileBeginning(Config $config)
 {
     return '# This is a fix for InnoDB in MySQL >= 4.1.x' . "\n" . '# It "suspends judgement" for fkey relationships until are tables are set.' . "\n" . 'SET FOREIGN_KEY_CHECKS = 0;' . "\n\n" . 'INSERT INTO `' . $config->getClassName(true) . '` ';
 }
Exemplo n.º 9
0
 protected function compressFiles(Config $config, array $files, $outputDir, Filesystem $fs)
 {
     $zipfile = $this->zip('fakery_' . $config->getClassNameLastPart() . '_' . date('Y-m-d_H-i-s'), $files, $outputDir);
     if (!empty($zipfile)) {
         $fs->remove($files);
         $files = ['zip' => $zipfile];
     }
     return $files;
 }
Exemplo n.º 10
0
 protected function getFileBeginning(Config $config)
 {
     return 'my %' . $config->getClassNameLastPart(true) . ' = (' . "\n";
 }
Exemplo n.º 11
0
 protected function getFileBeginning(Config $config)
 {
     return "<?php\n\n" . '$' . $config->getClassNameLastPart(true) . ' = array(' . "\n";
 }
 public function providerLoad()
 {
     $config1 = new Config();
     $config1->setMaxTimestamp('2014-01-01T12:30:45+0100');
     $config1->setClassName('Entity\\User');
     $config1->setFakeNumber(500);
     $config1->setFormats(['php', 'json', 'xml']);
     $config1->setSeed(51);
     $config1->setLocale('fr_FR');
     $config1->setVariables([new Variable('firstname', 'firstName', [], false, false), new Variable('lastname', 'lastName', [], false, false), new Variable('birthday', 'dateTimeThisCentury', ['d/m/Y'], false, 0.5), new Variable('email', 'safeEmail', [], true, false)]);
     $config1->setColumns([new Column('person', null, null, [new Column('name', null, null, [new Column('firstname', '%firstname%', 'capitalize'), new Column('lastname', '%lastname%', 'capitalize')]), new Column('birthday', '%birthday%')]), new Column('email', '%email%')]);
     return [['Entity_User_fakery_generator_config.json', $config1], ['Entity_User_fakery_generator_config.xml', $config1]];
 }