HummingBirdAnimeClient/tests/Ion/IonTestCase.php

127 lines
3.0 KiB
PHP
Raw Permalink Normal View History

<?php declare(strict_types=1);
/**
2020-03-12 11:45:11 -04:00
* Hummingbird Anime List Client
*
2020-03-12 11:45:11 -04:00
* An API client for Kitsu to manage anime and manga watch lists
*
2023-07-13 11:08:05 -04:00
* PHP version 8.1
*
2023-07-13 11:08:05 -04:00
* @copyright 2015 - 2023 Timothy J. Warren <tim@timshome.page>
* @license http://www.opensource.org/licenses/mit-license.html MIT License
2020-12-10 17:06:50 -05:00
* @version 5.2
2023-07-13 11:08:05 -04:00
* @link https://git.timshomepage.net/timw4mail/HummingBirdAnimeClient
*/
namespace Aviat\Ion\Tests;
2020-04-10 16:35:01 -04:00
use Aviat\Ion\Di\ContainerInterface;
2022-03-04 12:19:47 -05:00
2020-03-12 09:52:45 -04:00
use Laminas\Diactoros\ServerRequestFactory;
2022-03-04 12:19:47 -05:00
use PHPUnit\Framework\TestCase;
use function Aviat\Ion\_dir;
/**
* Base class for TestCases
*/
2022-03-04 12:19:47 -05:00
class IonTestCase extends TestCase
{
// Test directory constants
2023-05-19 10:56:23 -04:00
final public const ROOT_DIR = AC_TEST_ROOT_DIR;
final public const SRC_DIR = SRC_DIR;
final public const TEST_DATA_DIR = __DIR__ . '/test_data';
final public const TEST_VIEW_DIR = __DIR__ . '/test_views';
2020-04-10 16:35:01 -04:00
protected ContainerInterface $container;
protected static $staticContainer;
protected static $session_handler;
/*public static function setUpBeforeClass()
{
// Use mock session handler
$session_handler = new TestSessionHandler();
session_set_save_handler($session_handler, TRUE);
self::$session_handler = $session_handler;
}*/
2022-03-04 12:19:47 -05:00
protected 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',
2022-03-04 12:19:47 -05:00
'database' => '',
'file' => ':memory:',
],
'cache' => [
'type' => 'sqlite',
'host' => '',
'user' => '',
'pass' => '',
'port' => '',
'name' => 'default',
2022-03-04 12:19:47 -05:00
'database' => '',
'file' => ':memory:',
2022-03-04 12:19:47 -05:00
],
],
'routes' => [
'route_config' => [
2022-03-04 12:19:47 -05:00
'asset_path' => '/assets',
],
'routes' => [
2022-03-04 12:19:47 -05:00
],
],
'redis' => [
'host' => (array_key_exists('REDIS_HOST', $_ENV)) ? $_ENV['REDIS_HOST'] : 'localhost',
2022-03-04 12:19:47 -05:00
'database' => 13,
],
];
// Set up DI container
2022-03-04 12:19:47 -05:00
$di = require 'di.php';
$container = $di($config_array);
2023-05-19 10:57:59 -04:00
$container->set('session-handler', static function (): TestSessionHandler {
// Use mock session handler
$session_handler = new TestSessionHandler();
session_set_save_handler($session_handler, TRUE);
2022-03-04 12:19:47 -05:00
return $session_handler;
});
$this->container = $container;
}
/**
* Set arbitrary superglobal values for testing purposes
*/
public function setSuperGlobals(array $supers = []): void
{
$default = [
2020-12-11 14:26:54 -05:00
'_SERVER' => $GLOBALS['_SERVER'],
'_GET' => $_GET,
'_POST' => $_POST,
'_COOKIE' => $_COOKIE,
2022-03-04 12:19:47 -05:00
'_FILES' => $_FILES,
];
$request = call_user_func_array(
2023-05-19 10:56:23 -04:00
ServerRequestFactory::fromGlobals(...),
array_merge($default, $supers)
);
$this->container->setInstance('request', $request);
}
}
2022-03-04 12:19:47 -05:00
// End of IonTestCase.php