Use a better way to set input for command

Actually use the correct to way handle that

http://symfony.com/doc/current/components/console/helpers/questionhelper.html#testing-a-command-that-expects-input
This commit is contained in:
Jeremy Benoist 2017-05-30 12:47:25 +02:00
parent 5fe65baee5
commit 26650fdbf8
No known key found for this signature in database
GPG key ID: BCA73962457ACC3C
2 changed files with 30 additions and 77 deletions

View file

@ -5,7 +5,6 @@ namespace Wallabag\CoreBundle\GuzzleSiteAuthenticator;
use BD\GuzzleSiteAuthenticator\SiteConfig\SiteConfig; use BD\GuzzleSiteAuthenticator\SiteConfig\SiteConfig;
use BD\GuzzleSiteAuthenticator\SiteConfig\SiteConfigBuilder; use BD\GuzzleSiteAuthenticator\SiteConfig\SiteConfigBuilder;
use Graby\SiteConfig\ConfigBuilder; use Graby\SiteConfig\ConfigBuilder;
use OutOfRangeException;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
class GrabySiteConfigBuilder implements SiteConfigBuilder class GrabySiteConfigBuilder implements SiteConfigBuilder

View file

@ -67,18 +67,14 @@ class InstallCommandTest extends WallabagCoreTestCase
$command = $application->find('wallabag:install'); $command = $application->find('wallabag:install');
// We mock the QuestionHelper
$question = $this->getMockBuilder('Symfony\Component\Console\Helper\QuestionHelper')
->disableOriginalConstructor()
->getMock();
$question->expects($this->any())
->method('ask')
->will($this->returnValue('yes_'.uniqid('', true)));
// We override the standard helper with our mock
$command->getHelperSet()->set($question, 'question');
$tester = new CommandTester($command); $tester = new CommandTester($command);
$tester->setInputs([
'y', // dropping database
'y', // create super admin
'username_'.uniqid('', true), // username
'password_'.uniqid('', true), // password
'email_'.uniqid('', true).'@wallabag.it', // email
]);
$tester->execute([ $tester->execute([
'command' => $command->getName(), 'command' => $command->getName(),
]); ]);
@ -97,18 +93,13 @@ class InstallCommandTest extends WallabagCoreTestCase
$command = $application->find('wallabag:install'); $command = $application->find('wallabag:install');
// We mock the QuestionHelper
$question = $this->getMockBuilder('Symfony\Component\Console\Helper\QuestionHelper')
->disableOriginalConstructor()
->getMock();
$question->expects($this->any())
->method('ask')
->will($this->returnValue('yes_'.uniqid('', true)));
// We override the standard helper with our mock
$command->getHelperSet()->set($question, 'question');
$tester = new CommandTester($command); $tester = new CommandTester($command);
$tester->setInputs([
'y', // create super admin
'username_'.uniqid('', true), // username
'password_'.uniqid('', true), // password
'email_'.uniqid('', true).'@wallabag.it', // email
]);
$tester->execute([ $tester->execute([
'command' => $command->getName(), 'command' => $command->getName(),
'--reset' => true, '--reset' => true,
@ -150,18 +141,13 @@ class InstallCommandTest extends WallabagCoreTestCase
$command = $application->find('wallabag:install'); $command = $application->find('wallabag:install');
// We mock the QuestionHelper
$question = $this->getMockBuilder('Symfony\Component\Console\Helper\QuestionHelper')
->disableOriginalConstructor()
->getMock();
$question->expects($this->any())
->method('ask')
->will($this->returnValue('yes_'.uniqid('', true)));
// We override the standard helper with our mock
$command->getHelperSet()->set($question, 'question');
$tester = new CommandTester($command); $tester = new CommandTester($command);
$tester->setInputs([
'y', // create super admin
'username_'.uniqid('', true), // username
'password_'.uniqid('', true), // password
'email_'.uniqid('', true).'@wallabag.it', // email
]);
$tester->execute([ $tester->execute([
'command' => $command->getName(), 'command' => $command->getName(),
]); ]);
@ -183,23 +169,12 @@ class InstallCommandTest extends WallabagCoreTestCase
$command = $application->find('wallabag:install'); $command = $application->find('wallabag:install');
// We mock the QuestionHelper
$question = $this->getMockBuilder('Symfony\Component\Console\Helper\QuestionHelper')
->disableOriginalConstructor()
->getMock();
$question->expects($this->exactly(3))
->method('ask')
->will($this->onConsecutiveCalls(
false, // don't want to reset the entire database
true, // do want to reset the schema
false // don't want to create a new user
));
// We override the standard helper with our mock
$command->getHelperSet()->set($question, 'question');
$tester = new CommandTester($command); $tester = new CommandTester($command);
$tester->setInputs([
'n', // don't want to reset the entire database
'y', // do want to reset the schema
'n', // don't want to create a new user
]);
$tester->execute([ $tester->execute([
'command' => $command->getName(), 'command' => $command->getName(),
]); ]);
@ -239,22 +214,11 @@ class InstallCommandTest extends WallabagCoreTestCase
$command = $application->find('wallabag:install'); $command = $application->find('wallabag:install');
// We mock the QuestionHelper
$question = $this->getMockBuilder('Symfony\Component\Console\Helper\QuestionHelper')
->disableOriginalConstructor()
->getMock();
$question->expects($this->exactly(2))
->method('ask')
->will($this->onConsecutiveCalls(
false, // don't want to reset the entire database
false // don't want to create a new user
));
// We override the standard helper with our mock
$command->getHelperSet()->set($question, 'question');
$tester = new CommandTester($command); $tester = new CommandTester($command);
$tester->setInputs([
'n', // don't want to reset the entire database
'n', // don't want to create a new user
]);
$tester->execute([ $tester->execute([
'command' => $command->getName(), 'command' => $command->getName(),
]); ]);
@ -275,21 +239,11 @@ class InstallCommandTest extends WallabagCoreTestCase
$command = $application->find('wallabag:install'); $command = $application->find('wallabag:install');
// We mock the QuestionHelper
$question = $this->getMockBuilder('Symfony\Component\Console\Helper\QuestionHelper')
->disableOriginalConstructor()
->getMock();
$question->expects($this->any())
->method('ask')
->will($this->returnValue('yes_'.uniqid('', true)));
// We override the standard helper with our mock
$command->getHelperSet()->set($question, 'question');
$tester = new CommandTester($command); $tester = new CommandTester($command);
$tester->execute([ $tester->execute([
'command' => $command->getName(), 'command' => $command->getName(),
'--no-interaction' => true, ], [
'interactive' => false,
]); ]);
$this->assertContains('Checking system requirements.', $tester->getDisplay()); $this->assertContains('Checking system requirements.', $tester->getDisplay());