util = $this->getMockBuilder(Util::class) ->disableOriginalConstructor()->getMock(); $this->config = $this->getMockBuilder(IAppConfig::class) ->disableOriginalConstructor()->getMock(); $this->questionHelper = $this->getMockBuilder(QuestionHelper::class) ->disableOriginalConstructor()->getMock(); $this->output = $this->getMockBuilder(OutputInterface::class) ->disableOriginalConstructor()->getMock(); $this->input = $this->getMockBuilder(InputInterface::class) ->disableOriginalConstructor()->getMock(); $this->enableMasterKey = new EnableMasterKey($this->util, $this->config, $this->questionHelper); } #[\PHPUnit\Framework\Attributes\DataProvider('dataTestExecute')] public function testExecute(bool $isAlreadyEnabled, string $answer): void { $this->util->expects($this->once())->method('isMasterKeyEnabled') ->willReturn($isAlreadyEnabled); if ($isAlreadyEnabled) { $this->output->expects($this->once())->method('writeln') ->with('Master key already enabled'); } else { if ($answer === 'y') { $this->questionHelper->expects($this->once())->method('ask')->willReturn(true); $this->config->expects($this->once())->method('setAppValueBool') ->with('useMasterKey', true); } else { $this->questionHelper->expects($this->once())->method('ask')->willReturn(false); $this->config->expects($this->never())->method('setAppValue'); } } $this->invokePrivate($this->enableMasterKey, 'execute', [$this->input, $this->output]); } public static function dataTestExecute() { return [ [true, ''], [false, 'y'], [false, 'n'], [false, ''] ]; } }