Browse Source

tests for command factory created

1.0
Claudio Zizza 10 years ago
parent
commit
5b63f4b5d0
  1. 3
      Mage/Command/Factory.php
  2. 55
      tests/MageTest/Command/FactoryTest.php

3
Mage/Command/Factory.php

@ -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.');
} }

55
tests/MageTest/Command/FactoryTest.php

@ -0,0 +1,55 @@
<?php
namespace MageTest\Command;
use Mage\Command\Factory;
use PHPUnit_Framework_TestCase;
use PHPUnit_Framework_Constraint_IsInstanceOf;
require_once(__DIR__ . '/../../Dummies/Command/MyCommand.php');
require_once(__DIR__ . '/../../Dummies/Command/MyInconsistentCommand.php');
/**
* @group Mage_Command
* @group Mage_Command_Factory
*
* @todo test case for naming convention
*/
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()
{
$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()
{
$command = Factory::get('my-inconsistent-command', $this->config);
}
}
Loading…
Cancel
Save