123 lines
2.8 KiB
PHP
123 lines
2.8 KiB
PHP
<?php
|
|
/**
|
|
* Global setup for unit tests
|
|
*/
|
|
use Aura\Web\WebFactory;
|
|
|
|
use Aviat\AnimeClient\Config;
|
|
use Aviat\Ion\Di\Container;
|
|
use Aviat\AnimeClient\UrlGenerator;
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Autoloaders
|
|
// -----------------------------------------------------------------------------
|
|
|
|
/**
|
|
* Joins paths together. Variadic to take an
|
|
* arbitrary number of arguments
|
|
*
|
|
* @return string
|
|
*/
|
|
function _dir()
|
|
{
|
|
return implode(DIRECTORY_SEPARATOR, func_get_args());
|
|
}
|
|
|
|
// Define base path constants
|
|
define('ROOT_DIR', realpath(_dir(__DIR__, "/../")));
|
|
define('APP_DIR', _dir(ROOT_DIR, 'app'));
|
|
define('CONF_DIR', _dir(APP_DIR, 'config'));
|
|
define('SRC_DIR', _dir(ROOT_DIR, 'src'));
|
|
define('BASE_DIR', _dir(SRC_DIR, 'Base'));
|
|
require _dir(ROOT_DIR, '/vendor/autoload.php');
|
|
require _dir(SRC_DIR, '/functions.php');
|
|
|
|
/**
|
|
* Set up autoloaders
|
|
*
|
|
* @codeCoverageIgnore
|
|
* @return void
|
|
*/
|
|
spl_autoload_register(function ($class) {
|
|
$class_parts = explode('\\', $class);
|
|
$ns_path = SRC_DIR . '/' . implode('/', $class_parts) . ".php";
|
|
|
|
if (file_exists($ns_path))
|
|
{
|
|
require_once($ns_path);
|
|
return;
|
|
}
|
|
});
|
|
|
|
// Pre-define some superglobals
|
|
$_SESSION = [];
|
|
$_COOKIE = [];
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Mock the default error handler
|
|
// -----------------------------------------------------------------------------
|
|
|
|
class MockErrorHandler {
|
|
public function addDataTable($name, array $values=[]) {}
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Define a base testcase class
|
|
// -----------------------------------------------------------------------------
|
|
|
|
/**
|
|
* Base class for TestCases
|
|
*/
|
|
class AnimeClient_TestCase extends PHPUnit_Framework_TestCase {
|
|
protected $container;
|
|
|
|
public function setUp()
|
|
{
|
|
parent::setUp();
|
|
|
|
$config_array = [
|
|
'asset_path' => '//localhost/assets/',
|
|
'databaase' => [],
|
|
'routing' => [
|
|
|
|
],
|
|
'routes' => [
|
|
'convention' => [
|
|
'default_controller' => '',
|
|
'default_method' => '',
|
|
],
|
|
'common' => [],
|
|
'anime' => [],
|
|
'manga' => []
|
|
]
|
|
];
|
|
|
|
$di = require _dir(APP_DIR, 'bootstrap.php');
|
|
$container = $di($config_array);
|
|
$container->set('error-handler', new MockErrorHandler());
|
|
|
|
$this->container = $container;
|
|
}
|
|
|
|
/**
|
|
* Set arbitrary superglobal values for testing purposes
|
|
*
|
|
* @param array $supers
|
|
* @return void
|
|
*/
|
|
public function setSuperGlobals($supers = [])
|
|
{
|
|
$default = [
|
|
'_GET' => $_GET,
|
|
'_POST' => $_POST,
|
|
'_COOKIE' => $_COOKIE,
|
|
'_SERVER' => $_SERVER,
|
|
'_FILES' => $_FILES
|
|
];
|
|
$web_factory = new WebFactory(array_merge($default,$supers));
|
|
$this->container->set('request', $web_factory->newRequest());
|
|
$this->container->set('response', $web_factory->newResponse());
|
|
}
|
|
}
|
|
|
|
// End of bootstrap.php
|