mirror of
https://github.com/andres-montanez/Magallanes
synced 2024-05-23 08:02:15 +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
|
||||
$className = 'Command\\' . $commandName;
|
||||
|
||||
// TODO use a custom exception
|
||||
if (!class_exists($className)) {
|
||||
throw new Exception('Command "' . $commandName . '" not found.');
|
||||
}
|
||||
}
|
||||
|
||||
/** @var AbstractCommand $instance */
|
||||
// TODO dependencies like $config should be injected into constructor
|
||||
$instance = new $className;
|
||||
if (! $instance instanceOf AbstractCommand) {
|
||||
// TODO use a custom exception
|
||||
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