You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
3.3 KiB
98 lines
3.3 KiB
<?php
|
|
/**
|
|
* @copyright NetMonsters <team@netmonsters.ru>
|
|
* @link http://netmonsters.ru
|
|
* @package Majestic
|
|
* @subpackage Tests app
|
|
* @since 10.07.12
|
|
*
|
|
*/
|
|
|
|
require_once __DIR__ . '/../../util/profiler/Profiler.php';
|
|
require_once __DIR__ . '/../../exception/GeneralException.php';
|
|
require_once __DIR__ . '/../../exception/Error404Exception.php';
|
|
require_once __DIR__ . '/../../exception/ErrorHandler.php';
|
|
require_once __DIR__ . '/../../app/CliController.php';
|
|
require_once __DIR__ . '/../../Registry.php';
|
|
require_once __DIR__ . '/../../Config.php';
|
|
require_once __DIR__ . '/../../app/iCli.php';
|
|
|
|
/**
|
|
* @desc CliController tests
|
|
* @author Aleksandr Demidov
|
|
*/
|
|
class CliControllerTest extends PHPUnit_Framework_TestCase
|
|
{
|
|
protected $stream;
|
|
|
|
public function testGetInstance()
|
|
{
|
|
$instance = CliController::getInstance();
|
|
$this->assertInstanceOf('CliController', $instance);
|
|
}
|
|
|
|
public function testExecute()
|
|
{
|
|
Config::set('PROFILER', false);
|
|
$cli_class = $this->getMockForAbstractClass('iCli', array(), '', '', '', '', array('run'));
|
|
$cli_class->expects($this->once())
|
|
->method('run')
|
|
->with();
|
|
CliController::getInstance()->execute($cli_class);
|
|
}
|
|
|
|
public function testExecuteWithProfiler()
|
|
{
|
|
ob_start();
|
|
Config::set('PROFILER', true);
|
|
$cli_class = $this->getMockForAbstractClass('iCli', array(), '', '', '', '', array('run'));
|
|
$cli_class->expects($this->once())
|
|
->method('run')
|
|
->with();
|
|
CliController::getInstance()->execute($cli_class);
|
|
$output = ob_get_clean();
|
|
$this->assertContains('Elapsed time:', $output);
|
|
}
|
|
|
|
/**
|
|
* @runInSeparateProcess
|
|
*/
|
|
public function testExecuteImplementError()
|
|
{
|
|
$cli_class = new StdClass();
|
|
$cli_controller = CliController::getInstance();
|
|
$error_stream_prop = new ReflectionProperty($cli_controller, 'error_stream');
|
|
$this->stream = fopen('php://memory', 'rw');
|
|
$error_stream_prop->setAccessible(true);
|
|
$error_stream_prop->setValue($cli_controller, $this->stream);
|
|
$cli_controller->execute($cli_class);
|
|
rewind($this->stream);
|
|
$this->assertContains('Runner "' . get_class($cli_class) . '" need implement of "iCli" interface.', stream_get_contents($this->stream));
|
|
}
|
|
|
|
/**
|
|
* @runInSeparateProcess
|
|
*/
|
|
public function testExecuteWithRunThrowError()
|
|
{
|
|
Config::set('PROFILER', false);
|
|
$cli_class = $this->getMockForAbstractClass('iCli', array(), '', '', '', '', array('run'));
|
|
$cli_class->expects($this->once())
|
|
->method('run')
|
|
->with()
|
|
->will($this->returnCallback(array($this, 'callbackWithThrow')));
|
|
$cli_controller = CliController::getInstance();
|
|
$error_stream_prop = new ReflectionProperty($cli_controller, 'error_stream');
|
|
$this->stream = fopen('php://memory', 'rw');
|
|
$error_stream_prop->setAccessible(true);
|
|
$error_stream_prop->setValue($cli_controller, $this->stream);
|
|
$cli_controller->execute($cli_class);
|
|
rewind($this->stream);
|
|
$this->assertContains('Error frdom callback.', stream_get_contents($this->stream));
|
|
}
|
|
|
|
public function callbackWithThrow()
|
|
{
|
|
throw new ErrorException('Error from callback.');
|
|
}
|
|
}
|