9 use Symfony\Component\Console\Helper\QuestionHelper;
10 use Symfony\Component\Console\Input\InputInterface;
11 use Symfony\Component\Console\Output\OutputInterface;
12 use Symfony\Component\Console\Question\QuestionFactory;
13 use Symfony\Component\Console\Question\Question;
30 private $questionHelperMock;
35 private $questionFactoryMock;
40 private $questionPerformer;
47 $this->inputMock = $this->getMockBuilder(InputInterface::class)
48 ->getMockForAbstractClass();
49 $this->outputMock = $this->getMockBuilder(OutputInterface::class)
50 ->getMockForAbstractClass();
51 $this->questionFactoryMock = $this->getMockBuilder(QuestionFactory::class)
52 ->disableOriginalConstructor()
53 ->setMethods([
'create'])
55 $this->questionHelperMock = $this->getMockBuilder(QuestionHelper::class)
56 ->disableOriginalConstructor()
59 $this->questionPerformer =
new YesNo($this->questionHelperMock, $this->questionFactoryMock);
67 public function testExecute($answer, $expectedResult)
69 $firstMessage =
'First message';
70 $secondMessage =
'Second message';
71 $messages = [$firstMessage, $secondMessage];
74 $questionMock = $this->getMockBuilder(Question::class)
75 ->disableOriginalConstructor()
77 $questionMock->expects($this->once())
78 ->method(
'setValidator');
79 $this->questionFactoryMock->expects($this->once())
81 ->with([
'question' => $firstMessage . PHP_EOL . $secondMessage . PHP_EOL])
82 ->willReturn($questionMock);
83 $this->questionHelperMock->expects($this->once())
85 ->with($this->inputMock, $this->outputMock, $questionMock)
86 ->willReturn($answer);
87 $this->inputMock->expects($this->once())
88 ->method(
'isInteractive')
93 $this->questionPerformer->execute($messages, $this->inputMock, $this->outputMock)