// propel:* $content = $c->execute_command('propel:build-sql'); $t->ok(file_exists($c->tmp_dir . DS . 'data' . DS . 'sql' . DS . 'lib.model.schema.sql'), '"propel:build-sql" creates a "schema.sql" file under "data/sql" directory'); $content = $c->execute_command('propel:build-model'); $t->ok(file_exists($c->tmp_dir . DS . 'lib' . DS . 'model' . DS . 'Article.php'), '"propel:build-model" creates model classes under "lib/model" directory'); $content = $c->execute_command('propel:build-form'); $t->ok(file_exists($c->tmp_dir . DS . 'lib' . DS . 'form' . DS . DS . 'BaseFormPropel.class.php'), '"propel:build-form" creates form classes under "lib/form" directory'); $c->execute_command('propel:insert-sql --no-confirmation'); $t->ok(file_exists($c->tmp_dir . DS . 'data' . DS . 'database.sqlite'), '"propel:insert-sql" creates tables in the database'); $content = $c->execute_command('propel:generate-module --generate-in-cache frontend articleInitCrud Article'); $t->ok(file_exists($c->tmp_dir . DS . 'apps' . DS . 'frontend' . DS . 'modules' . DS . 'articleInitCrud' . DS . 'config' . DS . 'generator.yml'), '"propel:generate-module" initializes a CRUD module'); $content = $c->execute_command('propel:init-admin frontend articleInitAdmin Article'); $t->ok(file_exists($c->tmp_dir . DS . 'apps' . DS . 'frontend' . DS . 'modules' . DS . 'articleInitAdmin' . DS . 'config' . DS . 'generator.yml'), '"propel:init-admin" initializes an admin generator module'); // test:* $content = $c->execute_command('test:functional frontend articleInitCrudActions'); $t->is($content, $c->get_fixture_content('test/functional/result.txt'), '"test:functional" can launch a particular functional test'); $content = $c->execute_command('test:functional frontend', 1); $t->is($content, $c->get_fixture_content('test/functional/result-harness.txt'), '"test:functional" can launch all functional tests'); copy(dirname(__FILE__) . '/fixtures/test/unit/testTest.php', $c->tmp_dir . DS . 'test' . DS . 'unit' . DS . 'testTest.php'); $content = $c->execute_command('test:unit test'); $t->is($content, $c->get_fixture_content('/test/unit/result.txt'), '"test:unit" can launch a particular unit test'); $content = $c->execute_command('test:unit'); $t->is($content, $c->get_fixture_content('test/unit/result-harness.txt'), '"test:unit" can launch all unit tests'); $content = $c->execute_command('test:all', 1); $t->is($content, $c->get_fixture_content('test/result-harness.txt'), '"test:all" launches all unit and functional tests'); $content = $c->execute_command(sprintf('project:freeze %s', realpath(dirname(__FILE__) . '/../../data'))); $t->like(file_get_contents($c->tmp_dir . DS . 'config' . DS . 'ProjectConfiguration.class.php'), '/dirname\\(__FILE__\\)/', '"project:freeze" freezes symfony lib and data dir into the project directory'); $content = $c->execute_command('project:unfreeze'); $t->unlike(file_get_contents($c->tmp_dir . DS . 'config' . DS . 'ProjectConfiguration.class.php'), '/dirname\\(__FILE__\\)/', '"project:unfreeze" unfreezes symfony lib and data dir'); $content = $c->execute_command('cache:clear'); // Test task autoloading
$c = new sf_test_project(); $c->initialize($t); // generate:* $content = $c->execute_command('generate:project myproject --orm=Doctrine'); $t->ok(file_exists($c->tmp_dir . DS . 'symfony'), '"generate:project" installs the symfony CLI in root project directory'); $content = $c->execute_command('generate:app frontend'); $t->ok(is_dir($c->tmp_dir . DS . 'apps' . DS . 'frontend'), '"generate:app" creates a "frontend" directory under "apps" directory'); $t->like(file_get_contents($c->tmp_dir . '/apps/frontend/config/settings.yml'), '/escaping_strategy: +true/', '"generate:app" switches escaping_strategy "on" by default'); $t->like(file_get_contents($c->tmp_dir . '/apps/frontend/config/settings.yml'), '/csrf_secret: +\\w+/', '"generate:app" generates a csrf_token by default'); $content = $c->execute_command('generate:app backend --escaping-strategy=false --csrf-secret=false'); $t->like(file_get_contents($c->tmp_dir . '/apps/backend/config/settings.yml'), '/escaping_strategy: +false/', '"generate:app" switches escaping_strategy "false"'); $t->like(file_get_contents($c->tmp_dir . '/apps/backend/config/settings.yml'), '/csrf_secret: +false/', '"generate:app" switches csrf_token to "false"'); // failing $content = $c->execute_command('generate:module wrongapp foo', 1); $content = $c->execute_command('generate:module frontend foo'); $t->ok(is_dir($c->tmp_dir . DS . 'apps' . DS . 'frontend' . DS . 'modules' . DS . 'foo'), '"generate:module" creates a "foo" directory under "modules" directory'); copy(__DIR__ . '/fixtures/factories.yml', $c->tmp_dir . DS . 'apps' . DS . 'frontend' . DS . 'config' . DS . 'factories.yml'); // test:* copy(__DIR__ . '/fixtures/test/unit/testTest.php', $c->tmp_dir . DS . 'test' . DS . 'unit' . DS . 'testTest.php'); $content = $c->execute_command('test:unit test'); $t->is($content, $c->get_fixture_content('/test/unit/result.txt'), '"test:unit" can launch a particular unit test'); $content = $c->execute_command('test:unit'); $t->is($content, $c->get_fixture_content('test/unit/result-harness.txt'), '"test:unit" can launch all unit tests'); $content = $c->execute_command('cache:clear'); // Test task autoloading mkdir($c->tmp_dir . DS . 'lib' . DS . 'task'); mkdir($pluginDir = $c->tmp_dir . DS . 'plugins' . DS . 'myFooPlugin' . DS . 'lib' . DS . 'task', 0777, true); copy(__DIR__ . '/fixtures/task/myPluginTask.class.php', $pluginDir . DS . 'myPluginTask.class.php'); file_put_contents($projectConfigurationFile = $c->tmp_dir . DS . 'config' . DS . 'ProjectConfiguration.class.php', str_replace('$this->enablePlugins(\'sfDoctrinePlugin\')', '$this->enablePlugins(array(\'sfDoctrinePlugin\', \'myFooPlugin\'))', file_get_contents($projectConfigurationFile))); $c->execute_command('p:run'); $c->shutdown();