<?php namespace MageTest\Command\BuiltIn; use Mage\Command\BuiltIn\CompileCommand; use MageTest\TestHelper\BaseTest; use malkusch\phpmock\FixedValueFunction; use malkusch\phpmock\MockBuilder; /** * Class CompileCommandTest * @package MageTest\Command\BuiltIn * @coversDefaultClass Mage\Command\BuiltIn\CompileCommand * @uses malkusch\phpmock\FixedValueFunction * @uses malkusch\phpmock\Mock * @uses malkusch\phpmock\MockBuilder * @uses Mage\Console * @uses Mage\Console\Colors * @uses Mage\Command\AbstractCommand */ class CompileCommandTest extends BaseTest { /** * @var FixedValueFunction */ private $iniGetValue; /** * @before */ public function before() { $this->iniGetValue = new FixedValueFunction(); $mockBuilder = new MockBuilder(); $iniGetMock = $mockBuilder->setNamespace('Mage\Command\BuiltIn') ->setName("ini_get") ->setCallableProvider($this->iniGetValue) ->build(); $iniGetMock->disable(); $iniGetMock->enable(); $this->setUpConsoleStatics(); } /** * @covers ::__construct */ public function testConstruct() { $compilerMock = $this->getMock('Mage\Compiler'); $compileCommand = new CompileCommand($compilerMock); $compilerProperty = $this->getPropertyValue($compileCommand, 'compiler'); $this->assertInstanceOf('Mage\Compiler', $compilerProperty); $this->assertSame($compilerMock, $compilerProperty); } /** * @covers ::__construct */ public function testConstructWithNoParams() { $compileCommand = new CompileCommand(); $compilerProperty = $this->getPropertyValue($compileCommand, 'compiler'); $this->assertInstanceOf('Mage\Compiler', $compilerProperty); } /** * @covers ::__construct * @covers ::run */ public function testRun() { $expectedOutput = "mage.phar compiled successfully\n\n"; $expectedExitCode = 0; $this->expectOutputString($expectedOutput); $this->iniGetValue->setValue(false); $compilerMock = $this->getMock('Mage\Compiler'); $compilerMock->expects($this->once()) ->method('compile'); $compileCommand = new CompileCommand($compilerMock); $actualExitCode = $compileCommand->run(); $this->assertEquals($expectedExitCode, $actualExitCode); } /** * @covers ::__construct * @covers ::run */ public function testRunWhenPharReadonlyEnabled() { $expectedOutput = "\tThe php.ini variable phar.readonly must be Off.\n\n"; $expectedExitCode = 200; $this->expectOutputString($expectedOutput); $this->iniGetValue->setValue(true); $compilerMock = $this->getMock('Mage\Compiler'); $compileCommand = new CompileCommand($compilerMock); $actualExitCode = $compileCommand->run(); $this->assertEquals($expectedExitCode, $actualExitCode); } }