ion/tests/Ion_TestCase.php

133 lines
3.0 KiB
PHP
Raw Permalink Normal View History

2017-03-24 16:18:02 -04:00
<?php declare(strict_types=1);
/**
* Ion
*
* Building blocks for web development
*
2019-12-05 15:39:02 -05:00
* PHP version 7.2
2017-03-24 16:18:02 -04:00
*
* @package Ion
* @author Timothy J. Warren <tim@timshomepage.net>
2019-12-05 15:39:02 -05:00
* @copyright 2015 - 2019 Timothy J. Warren
2017-03-24 16:18:02 -04:00
* @license http://www.opensource.org/licenses/mit-license.html MIT License
2019-12-05 15:39:02 -05:00
* @version 3.0.0
* @link https://git.timshomepage.net/aviat/ion
2017-03-24 16:18:02 -04:00
*/
2016-10-19 13:24:08 -04:00
namespace Aviat\Ion\Tests;
2017-03-24 16:57:27 -04:00
use function Aviat\Ion\_dir;
2016-10-19 13:24:08 -04:00
use PHPUnit\Framework\TestCase;
use Zend\Diactoros\ServerRequestFactory;
define('ROOT_DIR', realpath(__DIR__ . '/../') . '/');
define('SRC_DIR', ROOT_DIR . 'src/');
define('TEST_DATA_DIR', __DIR__ . '/test_data');
define('TEST_VIEW_DIR', __DIR__ . '/test_views');
/**
* Base class for TestCases
*/
2016-10-19 13:24:08 -04:00
class Ion_TestCase extends TestCase {
// Test directory constants
2019-12-05 15:25:47 -05:00
public const ROOT_DIR = ROOT_DIR;
public const SRC_DIR = SRC_DIR;
public const TEST_DATA_DIR = TEST_DATA_DIR;
public const TEST_VIEW_DIR = TEST_VIEW_DIR;
protected $container;
protected static $staticContainer;
protected static $session_handler;
2016-08-29 12:51:40 -04:00
/*public static function setUpBeforeClass()
{
// Use mock session handler
$session_handler = new TestSessionHandler();
session_set_save_handler($session_handler, TRUE);
self::$session_handler = $session_handler;
2016-08-29 12:51:40 -04:00
}*/
2019-12-05 15:25:47 -05:00
public function setUp(): void
{
parent::setUp();
$ROOT_DIR = realpath(_dir(__DIR__, '/../'));
$APP_DIR = _dir($ROOT_DIR, 'app');
$config_array = [
'asset_path' => '//localhost/assets/',
'img_cache_path' => _dir(ROOT_DIR, 'public/images'),
'database' => [
'collection' => [
'type' => 'sqlite',
'host' => '',
'user' => '',
'pass' => '',
'port' => '',
'name' => 'default',
'database' => '',
'file' => ':memory:',
],
'cache' => [
'type' => 'sqlite',
'host' => '',
'user' => '',
'pass' => '',
'port' => '',
'name' => 'default',
'database' => '',
'file' => ':memory:',
]
],
'routes' => [
'route_config' => [
'asset_path' => '/assets'
],
'routes' => [
]
],
'redis' => [
'host' => (array_key_exists('REDIS_HOST', $_ENV)) ? $_ENV['REDIS_HOST'] : 'localhost',
'database' => 13
]
];
// Set up DI container
$di = require('di.php');
$container = $di($config_array);
2019-12-05 15:25:47 -05:00
$container->set('session-handler', static function() {
2016-08-29 12:51:40 -04:00
// Use mock session handler
$session_handler = new TestSessionHandler();
session_set_save_handler($session_handler, TRUE);
return $session_handler;
});
$this->container = $container;
}
/**
* Set arbitrary superglobal values for testing purposes
*
* @param array $supers
* @return void
*/
2019-12-05 15:25:47 -05:00
public function setSuperGlobals(array $supers = []): void
{
$default = [
'_SERVER' => $_SERVER,
'_GET' => $_GET,
'_POST' => $_POST,
'_COOKIE' => $_COOKIE,
'_FILES' => $_FILES
];
$request = call_user_func_array(
2019-12-05 15:25:47 -05:00
[ServerRequestFactory::class, 'fromGlobals'],
array_merge($default, $supers)
);
2016-08-29 12:51:40 -04:00
$this->container->setInstance('request', $request);
}
}
// End of Ion_TestCase.php