* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace DigitalOcean\Tests\CLI\Droplets; use Symfony\Component\Console\Application; use Symfony\Component\Console\Tester\CommandTester; use DigitalOcean\Tests\TestCase; use DigitalOcean\CLI\Droplets\RebootCommand; /** * @author Antoine Corcy */ class RebootCommandTest extends TestCase { protected $application; protected $command; protected $commandTester; protected function setUp() { $this->application = new Application(); $result = (object) array( 'status' => 'OK', 'event_id' => 1234, ); $RebootCommand = $this->getMock('\DigitalOcean\CLI\Droplets\RebootCommand', array('getDigitalOcean')); $RebootCommand ->expects($this->any()) ->method('getDigitalOcean') ->will($this->returnValue($this->getMockDigitalOcean('droplets', $this->getMockDroplets('reboot', $result)))); $this->application->add($RebootCommand); $this->command = $this->application->find('droplets:reboot'); $this->commandTester = new CommandTester($this->command); } /** * @expectedException \RuntimeException * @expectedExceptionMessage Not enough arguments. */ public function testExecuteNotEnoughArguments() { $this->commandTester->execute(array( 'command' => $this->command->getName(), )); } public function testExecuteCheckStatusConfirmed() { $dialog = $this->getDialogAskConfirmation(true); $this->command->getHelperSet()->set($dialog, 'dialog'); $this->commandTester->execute(array( 'command' => $this->command->getName(), 'id' => 123, )); $this->assertTrue(is_string($this->commandTester->getDisplay())); $this->assertRegExp('/\| OK \|/', $this->commandTester->getDisplay()); } public function testExecuteCheckEventIdConfirmed() { $dialog = $this->getDialogAskConfirmation(true); $this->command->getHelperSet()->set($dialog, 'dialog'); $this->commandTester->execute(array( 'command' => $this->command->getName(), 'id' => 123, )); $this->assertTrue(is_string($this->commandTester->getDisplay())); $this->assertRegExp('/\| 1234 \|/', $this->commandTester->getDisplay()); } public function testExecuteCheckStatusNotConfirmed() { $dialog = $this->getDialogAskConfirmation(false); $this->command->getHelperSet()->set($dialog, 'dialog'); $this->commandTester->execute(array( 'command' => $this->command->getName(), 'id' => 123, )); $this->assertTrue(is_string($this->commandTester->getDisplay())); $this->assertRegExp('/Aborted!/', $this->commandTester->getDisplay()); } public function testExecuteCheckEventIdNotConfirmed() { $dialog = $this->getDialogAskConfirmation(false); $this->command->getHelperSet()->set($dialog, 'dialog'); $this->commandTester->execute(array( 'command' => $this->command->getName(), 'id' => 123, )); $this->assertTrue(is_string($this->commandTester->getDisplay())); $this->assertRegExp('/Aborted!/', $this->commandTester->getDisplay()); } }