facadeMock = $this->getMockBuilder(SensitiveConfigSetFacade::class) ->disableOriginalConstructor() ->getMock(); $this->changeDetectorMock = $this->getMockBuilder(ChangeDetector::class) ->disableOriginalConstructor() ->getMock(); $this->hashMock = $this->getMockBuilder(Hash::class) ->disableOriginalConstructor() ->getMock(); $this->emulatedAreaProcessorMock = $this->getMockBuilder(EmulatedAdminhtmlAreaProcessor::class) ->disableOriginalConstructor() ->getMock(); $this->model = new SensitiveConfigSetCommand( $this->facadeMock, $this->changeDetectorMock, $this->hashMock, $this->emulatedAreaProcessorMock ); } public function testExecute() { $this->changeDetectorMock->expects($this->once()) ->method('hasChanges') ->willReturn(false); $this->emulatedAreaProcessorMock->expects($this->once()) ->method('process'); $this->hashMock->expects($this->once()) ->method('regenerate') ->with(System::CONFIG_TYPE); $tester = new CommandTester($this->model); $tester->execute([]); $this->assertEquals( Cli::RETURN_SUCCESS, $tester->getStatusCode() ); } public function testExecuteNeedsRegeneration() { $this->changeDetectorMock->expects($this->once()) ->method('hasChanges') ->willReturn(true); $this->emulatedAreaProcessorMock->expects($this->never()) ->method('process'); $this->hashMock->expects($this->never()) ->method('regenerate'); $tester = new CommandTester($this->model); $tester->execute([]); $this->assertEquals( Cli::RETURN_FAILURE, $tester->getStatusCode() ); $this->assertContains( 'This command is unavailable right now.', $tester->getDisplay() ); } public function testExecuteWithException() { $this->changeDetectorMock->expects($this->once()) ->method('hasChanges') ->willReturn(false); $this->emulatedAreaProcessorMock->expects($this->once()) ->method('process') ->willThrowException(new \Exception('Some exception')); $tester = new CommandTester($this->model); $tester->execute([]); $this->assertEquals( Cli::RETURN_FAILURE, $tester->getStatusCode() ); $this->assertContains( 'Some exception', $tester->getDisplay() ); } }