mirror of https://github.com/flightphp/core
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.
96 lines
2.2 KiB
96 lines
2.2 KiB
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace tests;
|
|
|
|
use Exception;
|
|
use Flight;
|
|
use flight\Engine;
|
|
use PHPUnit\Framework\TestCase;
|
|
use Throwable;
|
|
|
|
class DocExamplesTest extends TestCase
|
|
{
|
|
protected function setUp(): void
|
|
{
|
|
$_SERVER = [];
|
|
$_REQUEST = [];
|
|
Flight::init();
|
|
Flight::setEngine(new Engine());
|
|
}
|
|
|
|
protected function tearDown(): void
|
|
{
|
|
unset($_REQUEST);
|
|
unset($_SERVER);
|
|
Flight::clear();
|
|
}
|
|
|
|
public function testMapNotFoundMethod()
|
|
{
|
|
Flight::map('notFound', function () {
|
|
Flight::json([], 404);
|
|
});
|
|
|
|
Flight::request()->url = '/not-found';
|
|
|
|
Flight::route('/', function () {
|
|
echo 'hello world!';
|
|
});
|
|
|
|
Flight::start();
|
|
$this->expectOutputString('[]');
|
|
$this->assertEquals(404, Flight::response()->status());
|
|
$this->assertEquals('[]', Flight::response()->getBody());
|
|
}
|
|
|
|
public function testMapNotFoundMethodV2OutputBuffering()
|
|
{
|
|
Flight::map('notFound', function () {
|
|
Flight::json([], 404);
|
|
});
|
|
|
|
Flight::request()->url = '/not-found';
|
|
|
|
Flight::route('/', function () {
|
|
echo 'hello world!';
|
|
});
|
|
|
|
Flight::set('flight.v2.output_buffering', true);
|
|
Flight::start();
|
|
ob_get_clean();
|
|
$this->assertEquals(404, Flight::response()->status());
|
|
$this->assertEquals('[]', Flight::response()->getBody());
|
|
}
|
|
|
|
public function testMapErrorMethod()
|
|
{
|
|
Flight::map('error', function (Throwable $error) {
|
|
// Handle error
|
|
echo 'Custom: ' . $error->getMessage();
|
|
});
|
|
|
|
Flight::app()->handleException(new Exception('Error'));
|
|
$this->expectOutputString('Custom: Error');
|
|
}
|
|
|
|
public function testGetRouterStatically()
|
|
{
|
|
$router = Flight::router();
|
|
Flight::request()->method = 'GET';
|
|
Flight::request()->url = '/';
|
|
|
|
$router->get(
|
|
'/',
|
|
function () {
|
|
Flight::response()->write('from resp ');
|
|
}
|
|
);
|
|
|
|
Flight::start();
|
|
|
|
$this->expectOutputString('from resp ');
|
|
}
|
|
}
|