mirror of
https://github.com/andres-montanez/Magallanes
synced 2024-06-19 22:15:05 +02:00
Merge pull request #167 from SenseException/command-factory
Command factory tests
This commit is contained in:
commit
9becda4df9
|
@ -43,14 +43,17 @@ class Factory
|
||||||
// try a custom command
|
// try a custom command
|
||||||
$className = 'Command\\' . $commandName;
|
$className = 'Command\\' . $commandName;
|
||||||
|
|
||||||
|
// TODO use a custom exception
|
||||||
if (!class_exists($className)) {
|
if (!class_exists($className)) {
|
||||||
throw new Exception('Command "' . $commandName . '" not found.');
|
throw new Exception('Command "' . $commandName . '" not found.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @var AbstractCommand $instance */
|
/** @var AbstractCommand $instance */
|
||||||
|
// TODO dependencies like $config should be injected into constructor
|
||||||
$instance = new $className;
|
$instance = new $className;
|
||||||
if (! $instance instanceOf AbstractCommand) {
|
if (! $instance instanceOf AbstractCommand) {
|
||||||
|
// TODO use a custom exception
|
||||||
throw new Exception('The command ' . $commandName . ' must be an instance of Mage\Command\AbstractCommand.');
|
throw new Exception('The command ' . $commandName . ' must be an instance of Mage\Command\AbstractCommand.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
63
tests/MageTest/Command/FactoryTest.php
Normal file
63
tests/MageTest/Command/FactoryTest.php
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace MageTest\Command;
|
||||||
|
|
||||||
|
use Mage\Command\Factory;
|
||||||
|
use PHPUnit_Framework_TestCase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group Mage_Command
|
||||||
|
* @group Mage_Command_Factory
|
||||||
|
*
|
||||||
|
* @group issue-167
|
||||||
|
*/
|
||||||
|
class FactoryTest extends PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
private $config;
|
||||||
|
|
||||||
|
protected function setUp()
|
||||||
|
{
|
||||||
|
$this->config = $this->getMock('Mage\Config');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGet()
|
||||||
|
{
|
||||||
|
$command = Factory::get('add', $this->config);
|
||||||
|
$this->assertInstanceOf('Mage\\Command\\BuiltIn\\AddCommand', $command);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \Exception
|
||||||
|
*/
|
||||||
|
public function testGetClassNotFoundException()
|
||||||
|
{
|
||||||
|
$command = Factory::get('commanddoesntexist', $this->config);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetCustomCommand()
|
||||||
|
{
|
||||||
|
$this->getMockBuilder('Mage\\Command\\AbstractCommand')
|
||||||
|
->setMockClassName('MyCommand')
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* current workaround
|
||||||
|
* @link https://github.com/sebastianbergmann/phpunit-mock-objects/issues/134
|
||||||
|
*/
|
||||||
|
class_alias('MyCommand', 'Command\\MyCommand');
|
||||||
|
|
||||||
|
$command = Factory::get('my-command', $this->config);
|
||||||
|
$this->assertInstanceOf('Command\\MyCommand', $command);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \Exception
|
||||||
|
* @expectedExceptionMessage The command MyInconsistentCommand must be an instance of Mage\Command\AbstractCommand.
|
||||||
|
*/
|
||||||
|
public function testGetInconsistencyException()
|
||||||
|
{
|
||||||
|
$this->getMock('Command\\MyInconsistentCommand');
|
||||||
|
|
||||||
|
$command = Factory::get('my-inconsistent-command', $this->config);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue