mirror of
				https://github.com/hauke68/Magallanes.git
				synced 2025-11-04 00:50:18 +01:00 
			
		
		
		
	
						commit
						0406c7de8a
					
				@ -31,7 +31,7 @@ abstract class AbstractCommand
 | 
			
		||||
     * @return integer exit code
 | 
			
		||||
     * @throws \Exception
 | 
			
		||||
     */
 | 
			
		||||
    public abstract function run();
 | 
			
		||||
    abstract public function run();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Sets the Loaded Configuration.
 | 
			
		||||
 | 
			
		||||
@ -21,20 +21,43 @@ use Mage\Compiler;
 | 
			
		||||
 */
 | 
			
		||||
class CompileCommand extends AbstractCommand
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var Compiler
 | 
			
		||||
     */
 | 
			
		||||
    private $compiler;
 | 
			
		||||
 | 
			
		||||
    public function __construct(Compiler $compiler = null)
 | 
			
		||||
    {
 | 
			
		||||
        if ($compiler === null) {
 | 
			
		||||
            $compiler = new Compiler();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $this->compiler = $compiler;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @see \Mage\Compile::compile()
 | 
			
		||||
     */
 | 
			
		||||
    public function run()
 | 
			
		||||
    {
 | 
			
		||||
        if (ini_get('phar.readonly')) {
 | 
			
		||||
            Console::output('The <purple>php.ini</purple> variable <light_red>phar.readonly</light_red> must be <yellow>Off</yellow>.', 1, 2);
 | 
			
		||||
            Console::output(
 | 
			
		||||
                'The <purple>php.ini</purple> variable <light_red>phar.readonly</light_red>'
 | 
			
		||||
                . ' must be <yellow>Off</yellow>.',
 | 
			
		||||
                1,
 | 
			
		||||
                2
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
            return 200;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $compiler = new Compiler;
 | 
			
		||||
        $compiler->compile();
 | 
			
		||||
        $this->compiler->compile();
 | 
			
		||||
 | 
			
		||||
        Console::output('<light_purple>mage.phar</light_purple> compiled <light_green>successfully</light_green>', 0, 2);
 | 
			
		||||
        Console::output(
 | 
			
		||||
            '<light_purple>mage.phar</light_purple> compiled <light_green>successfully</light_green>',
 | 
			
		||||
            0,
 | 
			
		||||
            2
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        return 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -40,7 +40,7 @@ class ListCommand extends AbstractCommand
 | 
			
		||||
                    $exitCode = $this->listEnvironments();
 | 
			
		||||
                    break;
 | 
			
		||||
 | 
			
		||||
                default;
 | 
			
		||||
                default:
 | 
			
		||||
                    throw new Exception('The Type of Elements to List is needed.');
 | 
			
		||||
                    break;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@ -35,14 +35,26 @@ class LockCommand extends AbstractCommand implements RequiresEnvironment
 | 
			
		||||
        $reason = Console::readInput();
 | 
			
		||||
 | 
			
		||||
        $lockmsg = PHP_EOL;
 | 
			
		||||
        if ($name) $lockmsg .= 'Locked by ' . $name . ' ';
 | 
			
		||||
        if ($email) $lockmsg .= '(' . $email . ')';
 | 
			
		||||
        if ($reason) $lockmsg .= PHP_EOL . $reason . PHP_EOL;
 | 
			
		||||
        if ($name) {
 | 
			
		||||
            $lockmsg .= 'Locked by ' . $name . ' ';
 | 
			
		||||
        }
 | 
			
		||||
        if ($email) {
 | 
			
		||||
            $lockmsg .= '(' . $email . ')';
 | 
			
		||||
        }
 | 
			
		||||
        if ($reason) {
 | 
			
		||||
            $lockmsg .= PHP_EOL . $reason . PHP_EOL;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $lockFile = getcwd() . '/.mage/' . $this->getConfig()->getEnvironment() . '.lock';
 | 
			
		||||
        file_put_contents($lockFile, 'Locked environment at date: ' . date('Y-m-d H:i:s') . $lockmsg);
 | 
			
		||||
 | 
			
		||||
        Console::output('Locked deployment to <light_purple>' . $this->getConfig()->getEnvironment() . '</light_purple> environment', 1, 2);
 | 
			
		||||
        Console::output(
 | 
			
		||||
            'Locked deployment to <light_purple>'
 | 
			
		||||
            . $this->getConfig()->getEnvironment()
 | 
			
		||||
            . '</light_purple> environment',
 | 
			
		||||
            1,
 | 
			
		||||
            2
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        return 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -19,8 +19,7 @@ use Mage\Console;
 | 
			
		||||
 *
 | 
			
		||||
 * @author Andrés Montañez <andres@andresmontanez.com>
 | 
			
		||||
 */
 | 
			
		||||
class UnlockCommand
 | 
			
		||||
    extends AbstractCommand implements RequiresEnvironment
 | 
			
		||||
class UnlockCommand extends AbstractCommand implements RequiresEnvironment
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Unlocks an Environment
 | 
			
		||||
@ -33,7 +32,12 @@ class UnlockCommand
 | 
			
		||||
            @unlink($lockFile);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Console::output('Unlocked deployment to <light_purple>' . $this->getConfig()->getEnvironment() . '</light_purple> environment', 1, 2);
 | 
			
		||||
        Console::output(
 | 
			
		||||
            'Unlocked deployment to <light_purple>'
 | 
			
		||||
            . $this->getConfig()->getEnvironment() . '</light_purple> environment',
 | 
			
		||||
            1,
 | 
			
		||||
            2
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        return 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,8 @@
 | 
			
		||||
    },
 | 
			
		||||
    "require-dev": {
 | 
			
		||||
        "phpunit/phpunit": "4.3.5",
 | 
			
		||||
        "satooshi/php-coveralls": ">=0.6.1"
 | 
			
		||||
        "satooshi/php-coveralls": ">=0.6.1",
 | 
			
		||||
        "malkusch/php-mock": "dev-php-5.3"
 | 
			
		||||
    },
 | 
			
		||||
    "autoload": {
 | 
			
		||||
        "psr-4": {
 | 
			
		||||
@ -19,6 +20,11 @@
 | 
			
		||||
            "Command\\": [".mage/tasks", "../../../.mage/commands"]
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "autoload-dev": {
 | 
			
		||||
        "psr-4": {
 | 
			
		||||
            "MageTest\\": "./tests/MageTest"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "config": {
 | 
			
		||||
        "bin-dir": "bin"
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										54
									
								
								composer.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										54
									
								
								composer.lock
									
									
									
										generated
									
									
									
								
							@ -4,7 +4,7 @@
 | 
			
		||||
        "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
 | 
			
		||||
        "This file is @generated automatically"
 | 
			
		||||
    ],
 | 
			
		||||
    "hash": "d82ccc62c52f99a0819bea9b247d4f86",
 | 
			
		||||
    "hash": "caa09089c7b57461ed42e97a4449f2c6",
 | 
			
		||||
    "packages": [],
 | 
			
		||||
    "packages-dev": [
 | 
			
		||||
        {
 | 
			
		||||
@ -153,6 +153,54 @@
 | 
			
		||||
            ],
 | 
			
		||||
            "time": "2014-08-11 04:32:36"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "malkusch/php-mock",
 | 
			
		||||
            "version": "dev-php-5.3",
 | 
			
		||||
            "source": {
 | 
			
		||||
                "type": "git",
 | 
			
		||||
                "url": "https://github.com/malkusch/php-mock.git",
 | 
			
		||||
                "reference": "37b301b4b479601232f3919920451c6e777c3264"
 | 
			
		||||
            },
 | 
			
		||||
            "dist": {
 | 
			
		||||
                "type": "zip",
 | 
			
		||||
                "url": "https://api.github.com/repos/malkusch/php-mock/zipball/37b301b4b479601232f3919920451c6e777c3264",
 | 
			
		||||
                "reference": "37b301b4b479601232f3919920451c6e777c3264",
 | 
			
		||||
                "shasum": ""
 | 
			
		||||
            },
 | 
			
		||||
            "require": {
 | 
			
		||||
                "php": ">=5.3"
 | 
			
		||||
            },
 | 
			
		||||
            "require-dev": {
 | 
			
		||||
                "phpunit/phpunit": ">=4"
 | 
			
		||||
            },
 | 
			
		||||
            "type": "library",
 | 
			
		||||
            "autoload": {
 | 
			
		||||
                "psr-4": {
 | 
			
		||||
                    "malkusch\\phpmock\\": "classes/"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "notification-url": "https://packagist.org/downloads/",
 | 
			
		||||
            "license": [
 | 
			
		||||
                "WTFPL-2.0"
 | 
			
		||||
            ],
 | 
			
		||||
            "authors": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Markus Malkusch",
 | 
			
		||||
                    "email": "markus@malkusch.de",
 | 
			
		||||
                    "homepage": "http://markus.malkusch.de",
 | 
			
		||||
                    "role": "Developer"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "description": "Mock non deterministic built-in PHP functions (e.g. time() or rand())",
 | 
			
		||||
            "homepage": "https://github.com/malkusch/php-mock",
 | 
			
		||||
            "keywords": [
 | 
			
		||||
                "function",
 | 
			
		||||
                "mock",
 | 
			
		||||
                "stub",
 | 
			
		||||
                "test"
 | 
			
		||||
            ],
 | 
			
		||||
            "time": "2014-12-01 18:01:18"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "phpunit/php-code-coverage",
 | 
			
		||||
            "version": "2.0.13",
 | 
			
		||||
@ -1208,7 +1256,9 @@
 | 
			
		||||
    ],
 | 
			
		||||
    "aliases": [],
 | 
			
		||||
    "minimum-stability": "stable",
 | 
			
		||||
    "stability-flags": [],
 | 
			
		||||
    "stability-flags": {
 | 
			
		||||
        "malkusch/php-mock": 20
 | 
			
		||||
    },
 | 
			
		||||
    "prefer-stable": false,
 | 
			
		||||
    "prefer-lowest": false,
 | 
			
		||||
    "platform": {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										47
									
								
								tests/MageTest/Command/AbstractCommandTest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								tests/MageTest/Command/AbstractCommandTest.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,47 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace MageTest\Command;
 | 
			
		||||
 | 
			
		||||
use Mage\Command\AbstractCommand;
 | 
			
		||||
use MageTest\TestHelper\BaseTest;
 | 
			
		||||
use PHPUnit_Framework_MockObject_MockObject;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Class AbstractCommandTest
 | 
			
		||||
 * @package MageTest\Command
 | 
			
		||||
 * @author Jakub Turek <ja@kubaturek.pl>
 | 
			
		||||
 * @coversDefaultClass Mage\Command\AbstractCommand
 | 
			
		||||
 */
 | 
			
		||||
class AbstractCommandTest extends BaseTest
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var AbstractCommand|PHPUnit_Framework_MockObject_MockObject
 | 
			
		||||
     */
 | 
			
		||||
    private $abstractCommand;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @before
 | 
			
		||||
     */
 | 
			
		||||
    public function before()
 | 
			
		||||
    {
 | 
			
		||||
        $this->abstractCommand = $this->getMockForAbstractClass('Mage\Command\AbstractCommand');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @covers ::setConfig
 | 
			
		||||
     */
 | 
			
		||||
    public function testSetConfig()
 | 
			
		||||
    {
 | 
			
		||||
        $configMock = $this->getMock('Mage\Config');
 | 
			
		||||
        $this->doTestSetter($this->abstractCommand, 'config', $configMock);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @covers ::getConfig
 | 
			
		||||
     */
 | 
			
		||||
    public function testGetConfig()
 | 
			
		||||
    {
 | 
			
		||||
        $configMock = $this->getMock('Mage\Config');
 | 
			
		||||
        $this->doTestGetter($this->abstractCommand, 'config', $configMock);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										108
									
								
								tests/MageTest/Command/BuiltIn/CompileCommandTest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								tests/MageTest/Command/BuiltIn/CompileCommandTest.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,108 @@
 | 
			
		||||
<?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
 | 
			
		||||
 */
 | 
			
		||||
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);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										141
									
								
								tests/MageTest/Command/BuiltIn/ListCommandTest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								tests/MageTest/Command/BuiltIn/ListCommandTest.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,141 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace MageTest\Command\BuiltIn;
 | 
			
		||||
 | 
			
		||||
use Mage\Command\BuiltIn\ListCommand;
 | 
			
		||||
use MageTest\TestHelper\BaseTest;
 | 
			
		||||
use malkusch\phpmock\FixedValueFunction;
 | 
			
		||||
use malkusch\phpmock\Mock;
 | 
			
		||||
use malkusch\phpmock\MockBuilder;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Class ListCommandTest
 | 
			
		||||
 * @package MageTest\Command\BuiltIn
 | 
			
		||||
 * @coversDefaultClass Mage\Command\BuiltIn\ListCommand
 | 
			
		||||
 * @uses malkusch\phpmock\Mock
 | 
			
		||||
 * @uses malkusch\phpmock\MockBuilder
 | 
			
		||||
 * @uses malkusch\phpmock\FixedValueFunction
 | 
			
		||||
 * @uses Mage\Console\Colors
 | 
			
		||||
 * @uses Mage\Console
 | 
			
		||||
 * @uses Mage\Command\AbstractCommand
 | 
			
		||||
 */
 | 
			
		||||
class ListCommandTest extends BaseTest
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var ListCommand
 | 
			
		||||
     */
 | 
			
		||||
    private $listCommand;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var FixedValueFunction
 | 
			
		||||
     */
 | 
			
		||||
    private $scandirValueObj;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @before
 | 
			
		||||
     */
 | 
			
		||||
    public function before()
 | 
			
		||||
    {
 | 
			
		||||
        $this->listCommand = new ListCommand();
 | 
			
		||||
 | 
			
		||||
        $this->scandirValueObj = new FixedValueFunction();
 | 
			
		||||
        $mockBuilder = new MockBuilder();
 | 
			
		||||
        $scandirMock = $mockBuilder->setNamespace('Mage\Command\BuiltIn')
 | 
			
		||||
            ->setName("scandir")
 | 
			
		||||
            ->setCallableProvider($this->scandirValueObj)
 | 
			
		||||
            ->build();
 | 
			
		||||
        $scandirMock->disable();
 | 
			
		||||
        $scandirMock->enable();
 | 
			
		||||
 | 
			
		||||
        $this->setUpConsoleStatics();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function listEnvironmentsProvider()
 | 
			
		||||
    {
 | 
			
		||||
        return array(
 | 
			
		||||
            'normal' => array(
 | 
			
		||||
                'environmentFiles' => array(
 | 
			
		||||
                    'rc.yml',
 | 
			
		||||
                    'production.yml',
 | 
			
		||||
                    'local.yml'
 | 
			
		||||
                ),
 | 
			
		||||
                'expectedOutput' => "\tThese are your configured environments:\n"
 | 
			
		||||
                    . "\t\t* local\n"
 | 
			
		||||
                    . "\t\t* production\n"
 | 
			
		||||
                    . "\t\t* rc\n"
 | 
			
		||||
                    . "\t\n",
 | 
			
		||||
                'expectedExitCode' => 0
 | 
			
		||||
            ),
 | 
			
		||||
            'with_missing_yml_files' => array(
 | 
			
		||||
                'environmentFiles' => array(
 | 
			
		||||
                    'rc',
 | 
			
		||||
                    'production.yml'
 | 
			
		||||
                ),
 | 
			
		||||
                'expectedOutput' => "\tThese are your configured environments:\n"
 | 
			
		||||
                    . "\t\t* production\n"
 | 
			
		||||
                    . "\t\n",
 | 
			
		||||
                'expectedExitCode' => 0
 | 
			
		||||
            ),
 | 
			
		||||
            'with_no_yml_configs' => array(
 | 
			
		||||
                'environmentFiles' => array(
 | 
			
		||||
                    'rc.ini',
 | 
			
		||||
                    'production.txt'
 | 
			
		||||
                ),
 | 
			
		||||
                'expectedOutput' => "\tYou don't have any environment configured.\n\n",
 | 
			
		||||
                'expectedExitCode' => 220
 | 
			
		||||
            ),
 | 
			
		||||
            'with_no_configs' => array(
 | 
			
		||||
                'environmentFiles' => array(),
 | 
			
		||||
                'expectedOutput' => "\tYou don't have any environment configured.\n\n",
 | 
			
		||||
                'expectedExitCode' => 220
 | 
			
		||||
            )
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @covers ::run
 | 
			
		||||
     * @covers ::listEnvironments
 | 
			
		||||
     * @dataProvider listEnvironmentsProvider
 | 
			
		||||
     */
 | 
			
		||||
    public function testListEnvironment($environmentFiles, $expectedOutput, $expectedExitCode)
 | 
			
		||||
    {
 | 
			
		||||
        $this->expectOutputString($expectedOutput);
 | 
			
		||||
 | 
			
		||||
        $this->scandirValueObj->setValue($environmentFiles);
 | 
			
		||||
        $this->mockInputArgument('environments');
 | 
			
		||||
 | 
			
		||||
        $actualExitCode = $this->listCommand->run();
 | 
			
		||||
        $this->assertEquals($expectedExitCode, $actualExitCode);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @covers ::run
 | 
			
		||||
     */
 | 
			
		||||
    public function testRunWithInvalidCommand()
 | 
			
		||||
    {
 | 
			
		||||
        $expectedOutput = "\tThe Type of Elements to List is needed.\n\n";
 | 
			
		||||
        $this->expectOutputString($expectedOutput);
 | 
			
		||||
 | 
			
		||||
        $this->mockInputArgument('abc');
 | 
			
		||||
 | 
			
		||||
        $expectedExitCode = 221;
 | 
			
		||||
        $actualExitCode = $this->listCommand->run();
 | 
			
		||||
        $this->assertEquals($expectedExitCode, $actualExitCode);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Stub Config::getArgument to return desired value
 | 
			
		||||
     *
 | 
			
		||||
     * @param String $argumentValue Input argument
 | 
			
		||||
     */
 | 
			
		||||
    private function mockInputArgument($argumentValue)
 | 
			
		||||
    {
 | 
			
		||||
        $configMock = $this->getMock('Mage\Config');
 | 
			
		||||
        $configMock->expects($this->once())
 | 
			
		||||
            ->method('getArgument')
 | 
			
		||||
            ->with(1)
 | 
			
		||||
            ->willReturn($argumentValue);
 | 
			
		||||
 | 
			
		||||
        $this->listCommand->setConfig($configMock);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										205
									
								
								tests/MageTest/Command/BuiltIn/LockCommandTest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										205
									
								
								tests/MageTest/Command/BuiltIn/LockCommandTest.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,205 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace MageTest\Command\BuiltIn;
 | 
			
		||||
 | 
			
		||||
use Mage\Command\BuiltIn\LockCommand;
 | 
			
		||||
use MageTest\TestHelper\BaseTest;
 | 
			
		||||
use malkusch\phpmock\FixedValueFunction;
 | 
			
		||||
use malkusch\phpmock\MockBuilder;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Class LockCommandTest
 | 
			
		||||
 * @package MageTest\Command\BuiltIn
 | 
			
		||||
 * @coversDefaultClass Mage\Command\BuiltIn\LockCommand
 | 
			
		||||
 * @uses malkusch\phpmock\MockBuilder
 | 
			
		||||
 * @uses malkusch\phpmock\FixedValueFunction
 | 
			
		||||
 * @uses malkusch\phpmock\Mock
 | 
			
		||||
 * @uses Mage\Console\Colors
 | 
			
		||||
 * @uses Mage\Console
 | 
			
		||||
 * @uses Mage\Command\AbstractCommand
 | 
			
		||||
 */
 | 
			
		||||
class LockCommandTest extends BaseTest
 | 
			
		||||
{
 | 
			
		||||
    public static $fgetsCount;
 | 
			
		||||
    public static $mockName;
 | 
			
		||||
    public static $mockEmail;
 | 
			
		||||
    public static $mockDesc;
 | 
			
		||||
    public static $filePutContentsResult;
 | 
			
		||||
    public static $filePutContentsFile;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var LockCommand
 | 
			
		||||
     */
 | 
			
		||||
    private $lockCommand;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var FixedValueFunction
 | 
			
		||||
     */
 | 
			
		||||
    private $fgetsValue;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @before
 | 
			
		||||
     */
 | 
			
		||||
    public function before()
 | 
			
		||||
    {
 | 
			
		||||
        self::$fgetsCount = 0;
 | 
			
		||||
        self::$mockName = '';
 | 
			
		||||
        self::$mockEmail = '';
 | 
			
		||||
        self::$mockDesc = '';
 | 
			
		||||
        self::$filePutContentsResult = '';
 | 
			
		||||
        self::$filePutContentsFile = '';
 | 
			
		||||
 | 
			
		||||
        $this->lockCommand = new LockCommand();
 | 
			
		||||
 | 
			
		||||
        $mockBuilder = new MockBuilder();
 | 
			
		||||
        $fopenMock = $mockBuilder
 | 
			
		||||
            ->setName('fopen')
 | 
			
		||||
            ->setNamespace('Mage')
 | 
			
		||||
            ->setFunction(function () {
 | 
			
		||||
                return 'a';
 | 
			
		||||
            })
 | 
			
		||||
            ->build();
 | 
			
		||||
 | 
			
		||||
        $this->fgetsValue = new FixedValueFunction();
 | 
			
		||||
        $fgetsMock = $mockBuilder
 | 
			
		||||
            ->setNamespace('Mage')
 | 
			
		||||
            ->setName('fgets')
 | 
			
		||||
            ->setFunction(
 | 
			
		||||
                function () {
 | 
			
		||||
                    switch (LockCommandTest::$fgetsCount) {
 | 
			
		||||
                        case 0:
 | 
			
		||||
                            LockCommandTest::$fgetsCount++;
 | 
			
		||||
                            return LockCommandTest::$mockName;
 | 
			
		||||
                        case 1:
 | 
			
		||||
                            LockCommandTest::$fgetsCount++;
 | 
			
		||||
                            return LockCommandTest::$mockEmail;
 | 
			
		||||
                        case 2:
 | 
			
		||||
                            LockCommandTest::$fgetsCount++;
 | 
			
		||||
                            return LockCommandTest::$mockDesc;
 | 
			
		||||
                        default:
 | 
			
		||||
                            throw new \Exception('"fgets" count limit exceed');
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            )
 | 
			
		||||
            ->build();
 | 
			
		||||
        $getCwdMock = $mockBuilder
 | 
			
		||||
            ->setNamespace('Mage\Command\Builtin')
 | 
			
		||||
            ->setName('getcwd')
 | 
			
		||||
            ->setFunction(
 | 
			
		||||
                function () {
 | 
			
		||||
                    return '';
 | 
			
		||||
                }
 | 
			
		||||
            )
 | 
			
		||||
            ->build();
 | 
			
		||||
        $fileGetContentsMock = $mockBuilder
 | 
			
		||||
            ->setNamespace('Mage\Command\Builtin')
 | 
			
		||||
            ->setName('file_put_contents')
 | 
			
		||||
            ->setFunction(
 | 
			
		||||
                function ($file, $contents) {
 | 
			
		||||
                    LockCommandTest::$filePutContentsFile = $file;
 | 
			
		||||
                    LockCommandTest::$filePutContentsResult = $contents;
 | 
			
		||||
                }
 | 
			
		||||
            )
 | 
			
		||||
            ->build();
 | 
			
		||||
 | 
			
		||||
        $dateMock = $mockBuilder
 | 
			
		||||
            ->setNamespace('Mage\Command\BuiltIn')
 | 
			
		||||
            ->setName('date')
 | 
			
		||||
            ->setFunction(
 | 
			
		||||
                function () {
 | 
			
		||||
                    return '2015-01-01 12:00:00';
 | 
			
		||||
                }
 | 
			
		||||
            )
 | 
			
		||||
            ->build();
 | 
			
		||||
 | 
			
		||||
        $fopenMock->disable();
 | 
			
		||||
        $fgetsMock->disable();
 | 
			
		||||
        $getCwdMock->disable();
 | 
			
		||||
        $fileGetContentsMock->disable();
 | 
			
		||||
        $dateMock->disable();
 | 
			
		||||
 | 
			
		||||
        $fopenMock->enable();
 | 
			
		||||
        $fgetsMock->enable();
 | 
			
		||||
        $getCwdMock->enable();
 | 
			
		||||
        $fileGetContentsMock->enable();
 | 
			
		||||
        $dateMock->enable();
 | 
			
		||||
 | 
			
		||||
        $this->setUpConsoleStatics();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function lockCommandProvider()
 | 
			
		||||
    {
 | 
			
		||||
        return array(
 | 
			
		||||
            'normal' => array(
 | 
			
		||||
                'name' => 'John Smith',
 | 
			
		||||
                'email' => 'john.smith@example.com',
 | 
			
		||||
                'description' => "There's a critical bug here!",
 | 
			
		||||
                'expectedLockFileContents' => "Locked environment at date: 2015-01-01 12:00:00\n"
 | 
			
		||||
                    . "Locked by John Smith (john.smith@example.com)\n"
 | 
			
		||||
                    . "There's a critical bug here!\n",
 | 
			
		||||
            ),
 | 
			
		||||
            'with_no_name' => array(
 | 
			
		||||
                'name' => '',
 | 
			
		||||
                'email' => 'john.smith@example.com',
 | 
			
		||||
                'description' => "There's a critical bug here!",
 | 
			
		||||
                'expectedLockFileContents' => "Locked environment at date: 2015-01-01 12:00:00\n"
 | 
			
		||||
                    . "(john.smith@example.com)\n"
 | 
			
		||||
                    . "There's a critical bug here!\n",
 | 
			
		||||
            ),
 | 
			
		||||
            'with_no_email' => array(
 | 
			
		||||
                'name' => 'John Smith',
 | 
			
		||||
                'email' => '',
 | 
			
		||||
                'description' => "There's a critical bug here!",
 | 
			
		||||
                'expectedLockFileContents' => "Locked environment at date: 2015-01-01 12:00:00\n"
 | 
			
		||||
                    . "Locked by John Smith \n"
 | 
			
		||||
                    . "There's a critical bug here!\n",
 | 
			
		||||
            ),
 | 
			
		||||
            'with_no_name_nor_email' => array(
 | 
			
		||||
                'name' => '',
 | 
			
		||||
                'email' => '',
 | 
			
		||||
                'description' => "There's a critical bug here!",
 | 
			
		||||
                'expectedLockFileContents' => "Locked environment at date: 2015-01-01 12:00:00\n"
 | 
			
		||||
                    . "\n"
 | 
			
		||||
                    . "There's a critical bug here!\n",
 | 
			
		||||
            ),
 | 
			
		||||
            'with_no_desciption' => array(
 | 
			
		||||
                'name' => 'John Smith',
 | 
			
		||||
                'email' => 'john.smith@example.com',
 | 
			
		||||
                'description' => '',
 | 
			
		||||
                'expectedLockFileContents' => "Locked environment at date: 2015-01-01 12:00:00\n"
 | 
			
		||||
                    . "Locked by John Smith (john.smith@example.com)"
 | 
			
		||||
            ),
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @covers ::run
 | 
			
		||||
     * @dataProvider lockCommandProvider
 | 
			
		||||
     */
 | 
			
		||||
    public function testRun($name, $email, $description, $expectedLockFileContents)
 | 
			
		||||
    {
 | 
			
		||||
        $expectedOutput = "Your name (enter to leave blank): "
 | 
			
		||||
            . "Your email (enter to leave blank): "
 | 
			
		||||
            . "Reason of lock (enter to leave blank): "
 | 
			
		||||
            . "\tLocked deployment to production environment\n\n";
 | 
			
		||||
        $this->expectOutputString($expectedOutput);
 | 
			
		||||
        $expectedLockFilePath = '/.mage/production.lock';
 | 
			
		||||
        $expectedExitCode = 0;
 | 
			
		||||
 | 
			
		||||
        self::$mockName = $name;
 | 
			
		||||
        self::$mockEmail = $email;
 | 
			
		||||
        self::$mockDesc = $description;
 | 
			
		||||
 | 
			
		||||
        $configMock = $this->getMock('Mage\Config');
 | 
			
		||||
        $configMock->expects($this->atLeastOnce())
 | 
			
		||||
            ->method('getEnvironment')
 | 
			
		||||
            ->willReturn('production');
 | 
			
		||||
        $this->lockCommand->setConfig($configMock);
 | 
			
		||||
 | 
			
		||||
        $actualExitCode = $this->lockCommand->run();
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals($expectedExitCode, $actualExitCode);
 | 
			
		||||
        $this->assertEquals($expectedLockFileContents, self::$filePutContentsResult);
 | 
			
		||||
        $this->assertEquals($expectedLockFilePath, self::$filePutContentsFile);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										119
									
								
								tests/MageTest/Command/BuiltIn/UnlockCommandTest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								tests/MageTest/Command/BuiltIn/UnlockCommandTest.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,119 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace MageTest\Command\BuiltIn;
 | 
			
		||||
 | 
			
		||||
use Mage\Command\BuiltIn\UnlockCommand;
 | 
			
		||||
use MageTest\TestHelper\BaseTest;
 | 
			
		||||
use malkusch\phpmock\MockBuilder;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Class UnlockCommandTest
 | 
			
		||||
 * @package MageTest\Command\BuiltIn
 | 
			
		||||
 * @coversDefaultClass Mage\Command\BuiltIn\UnlockCommand
 | 
			
		||||
 * @uses malkusch\phpmock\MockBuilder
 | 
			
		||||
 * @uses malkusch\phpmock\Mock
 | 
			
		||||
 * @uses Mage\Command\AbstractCommand
 | 
			
		||||
 * @uses Mage\Console
 | 
			
		||||
 * @uses Mage\Console\Colors
 | 
			
		||||
 */
 | 
			
		||||
class UnlockCommandTest extends BaseTest
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var UnlockCommand
 | 
			
		||||
     */
 | 
			
		||||
    private $unlockCommand;
 | 
			
		||||
 | 
			
		||||
    public static $isUnlinkCalled;
 | 
			
		||||
    public static $fileExistsResult;
 | 
			
		||||
    public static $isFileExists;
 | 
			
		||||
 | 
			
		||||
    public function runProvider()
 | 
			
		||||
    {
 | 
			
		||||
        return array(
 | 
			
		||||
            'happy_path' => array(
 | 
			
		||||
                'file_exists' => true,
 | 
			
		||||
            ),
 | 
			
		||||
            'file_not_exists' => array(
 | 
			
		||||
                'file_exsits' => false
 | 
			
		||||
            )
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @before
 | 
			
		||||
     */
 | 
			
		||||
    public function before()
 | 
			
		||||
    {
 | 
			
		||||
        $this->unlockCommand = new UnlockCommand();
 | 
			
		||||
 | 
			
		||||
        self::$isUnlinkCalled = false;
 | 
			
		||||
        self::$fileExistsResult = false;
 | 
			
		||||
        self::$isFileExists = false;
 | 
			
		||||
 | 
			
		||||
        $mockBuilder = new MockBuilder();
 | 
			
		||||
        $fileExistsMock = $mockBuilder
 | 
			
		||||
            ->setName('file_exists')
 | 
			
		||||
            ->setNamespace('Mage\Command\BuiltIn')
 | 
			
		||||
            ->setFunction(
 | 
			
		||||
                function ($filePath) {
 | 
			
		||||
                    UnlockCommandTest::$fileExistsResult = $filePath;
 | 
			
		||||
                    return UnlockCommandTest::$isFileExists;
 | 
			
		||||
                }
 | 
			
		||||
            )
 | 
			
		||||
            ->build();
 | 
			
		||||
        $unlinkMock = $mockBuilder
 | 
			
		||||
            ->setName('unlink')
 | 
			
		||||
            ->setNamespace('Mage\Command\BuiltIn')
 | 
			
		||||
            ->setFunction(
 | 
			
		||||
                function () {
 | 
			
		||||
                    UnlockCommandTest::$isUnlinkCalled = true;
 | 
			
		||||
                }
 | 
			
		||||
            )
 | 
			
		||||
            ->build();
 | 
			
		||||
        $getCwdMock = $mockBuilder
 | 
			
		||||
            ->setNamespace('Mage\Command\BuiltIn')
 | 
			
		||||
            ->setName('getcwd')
 | 
			
		||||
            ->setFunction(
 | 
			
		||||
                function () {
 | 
			
		||||
                    return '';
 | 
			
		||||
                }
 | 
			
		||||
            )
 | 
			
		||||
            ->build();
 | 
			
		||||
 | 
			
		||||
        $fileExistsMock->disable();
 | 
			
		||||
        $unlinkMock->disable();
 | 
			
		||||
        $getCwdMock->disable();
 | 
			
		||||
 | 
			
		||||
        $fileExistsMock->enable();
 | 
			
		||||
        $unlinkMock->enable();
 | 
			
		||||
        $getCwdMock->enable();
 | 
			
		||||
 | 
			
		||||
        $configMock = $this->getMock('Mage\Config');
 | 
			
		||||
        $configMock->expects($this->atLeastOnce())
 | 
			
		||||
            ->method('getEnvironment')
 | 
			
		||||
            ->willReturn('production');
 | 
			
		||||
        $this->unlockCommand->setConfig($configMock);
 | 
			
		||||
 | 
			
		||||
        $this->setUpConsoleStatics();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @covers ::run
 | 
			
		||||
     * @dataProvider runProvider
 | 
			
		||||
     */
 | 
			
		||||
    public function testRun($fileExists)
 | 
			
		||||
    {
 | 
			
		||||
        $expectedOutput = "\tUnlocked deployment to production environment\n\n";
 | 
			
		||||
        $this->expectOutputString($expectedOutput);
 | 
			
		||||
        $expectedLockFilePath = '/.mage/production.lock';
 | 
			
		||||
 | 
			
		||||
        self::$isFileExists = $fileExists;
 | 
			
		||||
 | 
			
		||||
        $actualExitCode = $this->unlockCommand->run();
 | 
			
		||||
        $expectedExitCode = 0;
 | 
			
		||||
 | 
			
		||||
        $this->assertEquals(self::$isUnlinkCalled, $fileExists);
 | 
			
		||||
        $this->assertEquals($expectedExitCode, $actualExitCode);
 | 
			
		||||
        $this->assertEquals($expectedLockFilePath, self::$fileExistsResult);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										123
									
								
								tests/MageTest/TestHelper/BaseTest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								tests/MageTest/TestHelper/BaseTest.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,123 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace MageTest\TestHelper;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Class BaseTest
 | 
			
		||||
 *
 | 
			
		||||
 * Class containing common methods useful for unit testing.
 | 
			
		||||
 * Since Magallanes keeps compatibility with PHP 5.3, those methods can't be moved to a trait.
 | 
			
		||||
 * This class extends \PHPUnit_Framework_TestCase so it can be used with any test class.
 | 
			
		||||
 *
 | 
			
		||||
 * @package MageTest\TestHelper
 | 
			
		||||
 * @author Jakub Turek <ja@kubaturek.pl>
 | 
			
		||||
 */
 | 
			
		||||
abstract class BaseTest extends \PHPUnit_Framework_TestCase
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns value of non-public property from given class
 | 
			
		||||
     *
 | 
			
		||||
     * @param string|object $object Object instance or class name
 | 
			
		||||
     * @param string $propertyName Class' or object's property name
 | 
			
		||||
     * @return mixed
 | 
			
		||||
     */
 | 
			
		||||
    final protected function getPropertyValue($object, $propertyName)
 | 
			
		||||
    {
 | 
			
		||||
        $configProperty = new \ReflectionProperty($object, $propertyName);
 | 
			
		||||
        $configProperty->setAccessible(true);
 | 
			
		||||
 | 
			
		||||
        return  $configProperty->getValue($object);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Sets value to given property and given object
 | 
			
		||||
     *
 | 
			
		||||
     * @param object $object Object instance
 | 
			
		||||
     * @param string $propertyName Property name
 | 
			
		||||
     * @param mixed $value Value to set
 | 
			
		||||
     */
 | 
			
		||||
    final protected function setPropertyValue($object, $propertyName, $value)
 | 
			
		||||
    {
 | 
			
		||||
        $configProperty = new \ReflectionProperty($object, $propertyName);
 | 
			
		||||
        $configProperty->setAccessible(true);
 | 
			
		||||
        $configProperty->setValue($object, $value);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Disable logging to log file and turn off colors
 | 
			
		||||
     *
 | 
			
		||||
     * @before
 | 
			
		||||
     */
 | 
			
		||||
    protected function setUpConsoleStatics()
 | 
			
		||||
    {
 | 
			
		||||
        $consoleReflection = new \ReflectionClass('Mage\Console');
 | 
			
		||||
        $logEnableProperty = $consoleReflection->getProperty('logEnabled');
 | 
			
		||||
        $logEnableProperty->setAccessible(true);
 | 
			
		||||
        $logEnableProperty->setValue(false);
 | 
			
		||||
 | 
			
		||||
        $configMock = $this->getMock('Mage\Config');
 | 
			
		||||
        $configMock->expects($this->any())
 | 
			
		||||
            ->method('getParameter')
 | 
			
		||||
            ->with('no-color')
 | 
			
		||||
            ->willReturn(true);
 | 
			
		||||
 | 
			
		||||
        $configProperty = $consoleReflection->getProperty('config');
 | 
			
		||||
        $configProperty->setAccessible(true);
 | 
			
		||||
        $configProperty->setValue($configMock);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Tests getter of given object for given property name and example value
 | 
			
		||||
     *
 | 
			
		||||
     * @param object $object Object instance
 | 
			
		||||
     * @param string $propertyName Property name
 | 
			
		||||
     * @param mixed $propertyValue Value to set
 | 
			
		||||
     */
 | 
			
		||||
    final protected function doTestGetter($object, $propertyName, $propertyValue)
 | 
			
		||||
    {
 | 
			
		||||
        $this->setPropertyValue($object, $propertyName, $propertyValue);
 | 
			
		||||
        $getterName = $this->getGetterName($propertyName);
 | 
			
		||||
 | 
			
		||||
        $actual = $object->$getterName();
 | 
			
		||||
 | 
			
		||||
        $this->assertSame($propertyValue, $actual);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Tests setter of given object for given property name and example value
 | 
			
		||||
     *
 | 
			
		||||
     * @param object $object Object instance
 | 
			
		||||
     * @param string $propertyName Property name
 | 
			
		||||
     * @param mixed $propertyValue Value to set
 | 
			
		||||
     */
 | 
			
		||||
    final protected function doTestSetter($object, $propertyName, $propertyValue)
 | 
			
		||||
    {
 | 
			
		||||
        $setterName = $this->getSetterName($propertyName);
 | 
			
		||||
        $object->$setterName($propertyValue);
 | 
			
		||||
 | 
			
		||||
        $actual = $this->getPropertyValue($object, $propertyName);
 | 
			
		||||
        $this->assertSame($propertyValue, $actual);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns the conventional getter name for given property name
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $propertyName Property name
 | 
			
		||||
     * @return string Getter method name
 | 
			
		||||
     */
 | 
			
		||||
    private function getGetterName($propertyName)
 | 
			
		||||
    {
 | 
			
		||||
        return 'get' . ucfirst($propertyName);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns the conventional setter name for given property name
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $propertyName Property name
 | 
			
		||||
     * @return string Getter method name
 | 
			
		||||
     */
 | 
			
		||||
    private function getSetterName($propertyName)
 | 
			
		||||
    {
 | 
			
		||||
        return 'set' . ucfirst($propertyName);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user