Security update for Core, with self-updated composer
[yaffs-website] / vendor / symfony / console / Tests / Tester / CommandTesterTest.php
index 8d4e05a760cd710c74b1824a2c6431cd55956078..8d86da4362afef107f2a7a896b99491997c501f6 100644 (file)
@@ -16,6 +16,10 @@ use Symfony\Component\Console\Application;
 use Symfony\Component\Console\Command\Command;
 use Symfony\Component\Console\Output\Output;
 use Symfony\Component\Console\Tester\CommandTester;
+use Symfony\Component\Console\Question\Question;
+use Symfony\Component\Console\Helper\HelperSet;
+use Symfony\Component\Console\Helper\QuestionHelper;
+use Symfony\Component\Console\Style\SymfonyStyle;
 
 class CommandTesterTest extends TestCase
 {
@@ -82,4 +86,78 @@ class CommandTesterTest extends TestCase
         // check that there is no need to pass the command name here
         $this->assertEquals(0, $tester->execute(array()));
     }
+
+    public function testCommandWithInputs()
+    {
+        $questions = array(
+            'What\'s your name?',
+            'How are you?',
+            'Where do you come from?',
+        );
+
+        $command = new Command('foo');
+        $command->setHelperSet(new HelperSet(array(new QuestionHelper())));
+        $command->setCode(function ($input, $output) use ($questions, $command) {
+            $helper = $command->getHelper('question');
+            $helper->ask($input, $output, new Question($questions[0]));
+            $helper->ask($input, $output, new Question($questions[1]));
+            $helper->ask($input, $output, new Question($questions[2]));
+        });
+
+        $tester = new CommandTester($command);
+        $tester->setInputs(array('Bobby', 'Fine', 'France'));
+        $tester->execute(array());
+
+        $this->assertEquals(0, $tester->getStatusCode());
+        $this->assertEquals(implode('', $questions), $tester->getDisplay(true));
+    }
+
+    /**
+     * @expectedException \RuntimeException
+     * @expectedMessage   Aborted
+     */
+    public function testCommandWithWrongInputsNumber()
+    {
+        $questions = array(
+            'What\'s your name?',
+            'How are you?',
+            'Where do you come from?',
+        );
+
+        $command = new Command('foo');
+        $command->setHelperSet(new HelperSet(array(new QuestionHelper())));
+        $command->setCode(function ($input, $output) use ($questions, $command) {
+            $helper = $command->getHelper('question');
+            $helper->ask($input, $output, new Question($questions[0]));
+            $helper->ask($input, $output, new Question($questions[1]));
+            $helper->ask($input, $output, new Question($questions[2]));
+        });
+
+        $tester = new CommandTester($command);
+        $tester->setInputs(array('Bobby', 'Fine'));
+        $tester->execute(array());
+    }
+
+    public function testSymfonyStyleCommandWithInputs()
+    {
+        $questions = array(
+            'What\'s your name?',
+            'How are you?',
+            'Where do you come from?',
+        );
+
+        $command = new Command('foo');
+        $command->setCode(function ($input, $output) use ($questions, $command) {
+            $io = new SymfonyStyle($input, $output);
+            $io->ask($questions[0]);
+            $io->ask($questions[1]);
+            $io->ask($questions[2]);
+        });
+
+        $tester = new CommandTester($command);
+        $tester->setInputs(array('Bobby', 'Fine', 'France'));
+        $tester->execute(array());
+
+        $this->assertEquals(0, $tester->getStatusCode());
+    }
 }