示例#1
0
 public function testCanExecute()
 {
     if (!class_exists('Symfony\\Component\\Console\\Helper\\QuestionHelper')) {
         $this->markTestSkipped('The QuestionHelper must be available.');
     }
     $input = $this->getMockBuilder('Symfony\\Component\\Console\\Input\\ArrayInput')->setConstructorArgs(array(array()))->setMethods(array('isInteractive'))->getMock();
     $input->expects($this->any())->method('isInteractive')->will($this->returnValue(true));
     $output = $this->getOutputStream();
     $class = new \ReflectionClass('Doctrine\\DBAL\\Migrations\\Tools\\Console\\Command\\MigrateCommand');
     $method = $class->getMethod('canExecute');
     $method->setAccessible(true);
     /** @var \Doctrine\DBAL\Migrations\Tools\Console\Command\AbstractCommand $command */
     $command = $this->getMock('Doctrine\\DBAL\\Migrations\\Tools\\Console\\Command\\MigrateCommand', array('getHelperSet'));
     $helper = new QuestionHelper();
     $helper->setInputStream($this->getInputStream("y\n"));
     if ($helper instanceof QuestionHelper) {
         $helperSet = new HelperSet(array('question' => $helper));
     }
     $command->setHelperSet($helperSet);
     $command->expects($this->any())->method('getHelperSet')->will($this->returnValue($helperSet));
     //should return true if user confirm
     $this->assertEquals(true, $method->invokeArgs($command, array('test', $input, $output)));
     //shoudl return false if user cancel
     $helper->setInputStream($this->getInputStream("n\n"));
     $this->assertEquals(false, $method->invokeArgs($command, array('test', $input, $output)));
     //should return true if non interactive
     $input = $this->getMockBuilder('Symfony\\Component\\Console\\Input\\ArrayInput')->setConstructorArgs(array(array()))->setMethods(array('isInteractive'))->getMock();
     $input->expects($this->any())->method('isInteractive')->will($this->returnValue(false));
     $this->assertEquals(true, $method->invokeArgs($command, array('test', $input, $output)));
 }
 /**
  * @test
  */
 public function ifTagsFlagIsProvidedTagsColumnIsIncluded()
 {
     $this->questionHelper->setInputStream($this->getInputStream('\\n'));
     $this->shortUrlService->listShortUrls(1, null, [], null)->willReturn(new Paginator(new ArrayAdapter()))->shouldBeCalledTimes(1);
     $this->commandTester->execute(['command' => 'shortcode:list', '--showTags' => true]);
     $output = $this->commandTester->getDisplay();
     $this->assertTrue(strpos($output, 'Tags') > 0);
 }
示例#3
0
 /**
  * @param string $name
  */
 private function iExecuteCommandAndConfirm($name)
 {
     $this->questionHelper = $this->command->getHelper('question');
     $inputString = 'y' . PHP_EOL;
     $this->questionHelper->setInputStream($this->getInputStream($inputString));
     try {
         $this->tester->execute(['command' => $name]);
     } catch (\Exception $e) {
     }
 }
示例#4
0
 public function execute()
 {
     $this->tester = new CommandTester($this->command);
     if ('' !== $this->inputStream) {
         if ($this->command->getHelperSet()) {
             $helper = $this->command->getHelper('question');
         } else {
             $this->command->setHelperSet(new HelperSet([$helper = new QuestionHelper()]));
         }
         $helper->setInputStream($this->getInputStream($this->inputStream));
     }
     $this->tester->execute(array_merge($this->options, $this->arguments), ['decorated' => false]);
     return $this;
 }
示例#5
0
 /**
  * @expectedException        \InvalidArgumentException
  * @expectedExceptionMessage The provided answer is ambiguous. Value should be one of env_2 or env_3.
  */
 public function testAmbiguousChoiceFromChoicelist()
 {
     $possibleChoices = array('env_1' => 'My first environment', 'env_2' => 'My environment', 'env_3' => 'My environment');
     $dialog = new QuestionHelper();
     $dialog->setInputStream($this->getInputStream("My environment\n"));
     $helperSet = new HelperSet(array(new FormatterHelper()));
     $dialog->setHelperSet($helperSet);
     $question = new ChoiceQuestion('Please select the environment to load', $possibleChoices);
     $question->setMaxAttempts(1);
     $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question);
 }
 public function testAskAndValidate()
 {
     $dialog = new QuestionHelper();
     $helperSet = new HelperSet(array(new FormatterHelper()));
     $dialog->setHelperSet($helperSet);
     $error = 'This is not a color!';
     $validator = function ($color) use($error) {
         if (!in_array($color, array('white', 'black'))) {
             throw new \InvalidArgumentException($error);
         }
         return $color;
     };
     $question = new Question('What color was the white horse of Henry IV?', 'white');
     $question->setValidator($validator);
     $question->setMaxAttempts(2);
     $dialog->setInputStream($this->getInputStream("\nblack\n"));
     $this->assertEquals('white', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question));
     $this->assertEquals('black', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question));
     $dialog->setInputStream($this->getInputStream("green\nyellow\norange\n"));
     try {
         $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question);
         $this->fail();
     } catch (\InvalidArgumentException $e) {
         $this->assertEquals($error, $e->getMessage());
     }
 }
示例#7
0
 /**
  * @requires function mb_strwidth
  */
 public function testChoiceOutputFormattingQuestionForUtf8Keys()
 {
     $question = 'Lorem ipsum?';
     $possibleChoices = array('foo' => 'foo', 'żółw' => 'bar', 'łabądź' => 'baz');
     $outputShown = array($question, '  [<info>foo   </info>] foo', '  [<info>żółw  </info>] bar', '  [<info>łabądź</info>] baz');
     $output = $this->getMock('\\Symfony\\Component\\Console\\Output\\OutputInterface');
     $output->method('getFormatter')->willReturn(new OutputFormatter());
     $dialog = new QuestionHelper();
     $dialog->setInputStream($this->getInputStream("\n"));
     $helperSet = new HelperSet(array(new FormatterHelper()));
     $dialog->setHelperSet($helperSet);
     $output->expects($this->once())->method('writeln')->with($this->equalTo($outputShown));
     $question = new ChoiceQuestion($question, $possibleChoices, 'foo');
     $dialog->ask($this->createInputInterfaceMock(), $output, $question);
 }
 protected function getHelperSet($input = "")
 {
     $question = new QuestionHelper();
     $question->setInputStream($this->getInputStream($input));
     return new HelperSet(array(new FormatterHelper(), $question));
 }
 public function testAmbiguousChoiceFromChoicelist()
 {
     $possibleChoices = array('env_1' => 'My environment 1', 'env_2' => 'My environment', 'env_3' => 'My environment');
     $dialog = new QuestionHelper();
     $dialog->setInputStream($this->getInputStream("My environment\n"));
     $helperSet = new HelperSet(array(new FormatterHelper()));
     $dialog->setHelperSet($helperSet);
     $question = new ChoiceQuestion('Please select the environment to load', $possibleChoices);
     try {
         $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question);
     } catch (\InvalidArgumentException $e) {
         $this->assertEquals('The provided answer is ambiguous. Value should be one of env_2 or env_3.', $e->getMessage());
     }
 }
示例#10
0
 /**
  * @expectedException        \Symfony\Component\Console\Exception\RuntimeException
  * @expectedExceptionMessage Aborted
  */
 public function testAskThrowsExceptionOnMissingInputWithValidator()
 {
     $dialog = new QuestionHelper();
     $dialog->setInputStream($this->getInputStream(''));
     $question = new Question('What\'s your name?');
     $question->setValidator(function () {
         if (!$value) {
             throw new \Exception('A value is required.');
         }
     });
     $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question);
 }