X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FTests%2FCommand%2FInstallCommandTest.php;h=249672a65d403634f065d4dd35f2b63a04556626;hb=5ecdfcd041767c9e3244a92bb0a6cc3c3f80fea3;hp=0bb8be57bf515bc752d40535e3d0b60c3cefa155;hpb=75c48e3ae0e7b23a246216b98f9b1368b9cdd69b;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Tests/Command/InstallCommandTest.php b/src/Wallabag/CoreBundle/Tests/Command/InstallCommandTest.php index 0bb8be57..249672a6 100644 --- a/src/Wallabag/CoreBundle/Tests/Command/InstallCommandTest.php +++ b/src/Wallabag/CoreBundle/Tests/Command/InstallCommandTest.php @@ -2,28 +2,46 @@ namespace Wallabag\CoreBundle\Tests\Command; -use Wallabag\CoreBundle\Tests\WallabagCoreTestCase; -use Wallabag\CoreBundle\Command\InstallCommand; -use Wallabag\CoreBundle\Tests\Mock\InstallCommandMock; +use Doctrine\Bundle\DoctrineBundle\Command\CreateDatabaseDoctrineCommand; +use Doctrine\Bundle\DoctrineBundle\Command\DropDatabaseDoctrineCommand; use Symfony\Bundle\FrameworkBundle\Console\Application; -use Symfony\Component\Console\Tester\CommandTester; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Output\NullOutput; -use Doctrine\Bundle\DoctrineBundle\Command\DropDatabaseDoctrineCommand; -use Doctrine\Bundle\DoctrineBundle\Command\CreateDatabaseDoctrineCommand; +use Symfony\Component\Console\Tester\CommandTester; +use Wallabag\CoreBundle\Command\InstallCommand; +use Wallabag\CoreBundle\Tests\Mock\InstallCommandMock; +use Wallabag\CoreBundle\Tests\WallabagCoreTestCase; class InstallCommandTest extends WallabagCoreTestCase { + public function setUp() + { + parent::setUp(); + + if ($this->getClient()->getContainer()->get('doctrine')->getConnection()->getDriver() instanceof \Doctrine\DBAL\Driver\PDOPgSql\Driver) { + /* + * LOG: statement: CREATE DATABASE "wallabag" + * ERROR: source database "template1" is being accessed by other users + * DETAIL: There is 1 other session using the database. + * STATEMENT: CREATE DATABASE "wallabag" + * FATAL: database "wallabag" does not exist + * + * http://stackoverflow.com/a/14374832/569101 + */ + $this->markTestSkipped('PostgreSQL spotted: can find a good way to drop current database, skipping.'); + } + } + public static function tearDownAfterClass() { $application = new Application(static::$kernel); $application->setAutoExit(false); - $code = $application->run(new ArrayInput(array( + $code = $application->run(new ArrayInput([ 'command' => 'doctrine:fixtures:load', '--no-interaction' => true, '--env' => 'test', - )), new NullOutput()); + ]), new NullOutput()); } public function testRunInstallCommand() @@ -45,14 +63,14 @@ class InstallCommandTest extends WallabagCoreTestCase $command->getHelperSet()->set($question, 'question'); $tester = new CommandTester($command); - $tester->execute(array( + $tester->execute([ 'command' => $command->getName(), - )); + ]); - $this->assertContains('Step 1 of 4. Checking system requirements.', $tester->getDisplay()); - $this->assertContains('Step 2 of 4. Setting up database.', $tester->getDisplay()); - $this->assertContains('Step 3 of 4. Administration setup.', $tester->getDisplay()); - $this->assertContains('Step 4 of 4. Installing assets.', $tester->getDisplay()); + $this->assertContains('Checking system requirements.', $tester->getDisplay()); + $this->assertContains('Setting up database.', $tester->getDisplay()); + $this->assertContains('Administration setup.', $tester->getDisplay()); + $this->assertContains('Config setup.', $tester->getDisplay()); } public function testRunInstallCommandWithReset() @@ -74,15 +92,16 @@ class InstallCommandTest extends WallabagCoreTestCase $command->getHelperSet()->set($question, 'question'); $tester = new CommandTester($command); - $tester->execute(array( + $tester->execute([ 'command' => $command->getName(), '--reset' => true, - )); + ]); - $this->assertContains('Step 1 of 4. Checking system requirements.', $tester->getDisplay()); - $this->assertContains('Step 2 of 4. Setting up database.', $tester->getDisplay()); - $this->assertContains('Step 3 of 4. Administration setup.', $tester->getDisplay()); - $this->assertContains('Step 4 of 4. Installing assets.', $tester->getDisplay()); + $this->assertContains('Checking system requirements.', $tester->getDisplay()); + $this->assertContains('Setting up database.', $tester->getDisplay()); + $this->assertContains('Droping database, creating database and schema, clearing the cache', $tester->getDisplay()); + $this->assertContains('Administration setup.', $tester->getDisplay()); + $this->assertContains('Config setup.', $tester->getDisplay()); // we force to reset everything $this->assertContains('Droping database, creating database and schema, clearing the cache', $tester->getDisplay()); @@ -90,28 +109,15 @@ class InstallCommandTest extends WallabagCoreTestCase public function testRunInstallCommandWithDatabaseRemoved() { - if ($this->getClient()->getContainer()->get('doctrine')->getConnection()->getDriver() instanceof \Doctrine\DBAL\Driver\PDOPgSql\Driver) { - /* - * LOG: statement: CREATE DATABASE "wallabag" - * ERROR: source database "template1" is being accessed by other users - * DETAIL: There is 1 other session using the database. - * STATEMENT: CREATE DATABASE "wallabag" - * FATAL: database "wallabag" does not exist - * - * http://stackoverflow.com/a/14374832/569101 - */ - $this->markTestSkipped('PostgreSQL spotted: can find a good way to drop current database, skipping.'); - } - $application = new Application($this->getClient()->getKernel()); $application->add(new DropDatabaseDoctrineCommand()); // drop database first, so the install command won't ask to reset things $command = $application->find('doctrine:database:drop'); - $command->run(new ArrayInput(array( + $command->run(new ArrayInput([ 'command' => 'doctrine:database:drop', '--force' => true, - )), new NullOutput()); + ]), new NullOutput()); // start a new application to avoid lagging connexion to pgsql $client = static::createClient(); @@ -132,14 +138,14 @@ class InstallCommandTest extends WallabagCoreTestCase $command->getHelperSet()->set($question, 'question'); $tester = new CommandTester($command); - $tester->execute(array( + $tester->execute([ 'command' => $command->getName(), - )); + ]); - $this->assertContains('Step 1 of 4. Checking system requirements.', $tester->getDisplay()); - $this->assertContains('Step 2 of 4. Setting up database.', $tester->getDisplay()); - $this->assertContains('Step 3 of 4. Administration setup.', $tester->getDisplay()); - $this->assertContains('Step 4 of 4. Installing assets.', $tester->getDisplay()); + $this->assertContains('Checking system requirements.', $tester->getDisplay()); + $this->assertContains('Setting up database.', $tester->getDisplay()); + $this->assertContains('Administration setup.', $tester->getDisplay()); + $this->assertContains('Config setup.', $tester->getDisplay()); // the current database doesn't already exist $this->assertContains('Creating database and schema, clearing the cache', $tester->getDisplay()); @@ -169,33 +175,20 @@ class InstallCommandTest extends WallabagCoreTestCase $command->getHelperSet()->set($question, 'question'); $tester = new CommandTester($command); - $tester->execute(array( + $tester->execute([ 'command' => $command->getName(), - )); + ]); - $this->assertContains('Step 1 of 4. Checking system requirements.', $tester->getDisplay()); - $this->assertContains('Step 2 of 4. Setting up database.', $tester->getDisplay()); - $this->assertContains('Step 3 of 4. Administration setup.', $tester->getDisplay()); - $this->assertContains('Step 4 of 4. Installing assets.', $tester->getDisplay()); + $this->assertContains('Checking system requirements.', $tester->getDisplay()); + $this->assertContains('Setting up database.', $tester->getDisplay()); + $this->assertContains('Administration setup.', $tester->getDisplay()); + $this->assertContains('Config setup.', $tester->getDisplay()); $this->assertContains('Droping schema and creating schema', $tester->getDisplay()); } public function testRunInstallCommandChooseNothing() { - if ($this->getClient()->getContainer()->get('doctrine')->getConnection()->getDriver() instanceof \Doctrine\DBAL\Driver\PDOPgSql\Driver) { - /* - * LOG: statement: CREATE DATABASE "wallabag" - * ERROR: source database "template1" is being accessed by other users - * DETAIL: There is 1 other session using the database. - * STATEMENT: CREATE DATABASE "wallabag" - * FATAL: database "wallabag" does not exist - * - * http://stackoverflow.com/a/14374832/569101 - */ - $this->markTestSkipped('PostgreSQL spotted: can find a good way to drop current database, skipping.'); - } - $application = new Application($this->getClient()->getKernel()); $application->add(new InstallCommand()); $application->add(new DropDatabaseDoctrineCommand()); @@ -204,19 +197,19 @@ class InstallCommandTest extends WallabagCoreTestCase // drop database first, so the install command won't ask to reset things $command = new DropDatabaseDoctrineCommand(); $command->setApplication($application); - $command->run(new ArrayInput(array( + $command->run(new ArrayInput([ 'command' => 'doctrine:database:drop', '--force' => true, - )), new NullOutput()); + ]), new NullOutput()); $this->getClient()->getContainer()->get('doctrine')->getConnection()->close(); $command = new CreateDatabaseDoctrineCommand(); $command->setApplication($application); - $command->run(new ArrayInput(array( + $command->run(new ArrayInput([ 'command' => 'doctrine:database:create', '--env' => 'test', - )), new NullOutput()); + ]), new NullOutput()); $command = $application->find('wallabag:install'); @@ -236,14 +229,14 @@ class InstallCommandTest extends WallabagCoreTestCase $command->getHelperSet()->set($question, 'question'); $tester = new CommandTester($command); - $tester->execute(array( + $tester->execute([ 'command' => $command->getName(), - )); + ]); - $this->assertContains('Step 1 of 4. Checking system requirements.', $tester->getDisplay()); - $this->assertContains('Step 2 of 4. Setting up database.', $tester->getDisplay()); - $this->assertContains('Step 3 of 4. Administration setup.', $tester->getDisplay()); - $this->assertContains('Step 4 of 4. Installing assets.', $tester->getDisplay()); + $this->assertContains('Checking system requirements.', $tester->getDisplay()); + $this->assertContains('Setting up database.', $tester->getDisplay()); + $this->assertContains('Administration setup.', $tester->getDisplay()); + $this->assertContains('Config setup.', $tester->getDisplay()); $this->assertContains('Creating schema', $tester->getDisplay()); } @@ -267,14 +260,14 @@ class InstallCommandTest extends WallabagCoreTestCase $command->getHelperSet()->set($question, 'question'); $tester = new CommandTester($command); - $tester->execute(array( + $tester->execute([ 'command' => $command->getName(), '--no-interaction' => true, - )); + ]); - $this->assertContains('Step 1 of 4. Checking system requirements.', $tester->getDisplay()); - $this->assertContains('Step 2 of 4. Setting up database.', $tester->getDisplay()); - $this->assertContains('Step 3 of 4. Administration setup.', $tester->getDisplay()); - $this->assertContains('Step 4 of 4. Installing assets.', $tester->getDisplay()); + $this->assertContains('Checking system requirements.', $tester->getDisplay()); + $this->assertContains('Setting up database.', $tester->getDisplay()); + $this->assertContains('Administration setup.', $tester->getDisplay()); + $this->assertContains('Config setup.', $tester->getDisplay()); } }