<?php
|
|
|
|
namespace Tests\Functional;
|
|
|
|
use Slim\App;
|
|
use Slim\Http\Request;
|
|
use Slim\Http\Response;
|
|
use Slim\Http\Environment;
|
|
|
|
/**
|
|
* This is an example class that shows how you could set up a method that
|
|
* runs the application. Note that it doesn't cover all use-cases and is
|
|
* tuned to the specifics of this skeleton app, so if your needs are
|
|
* different, you'll need to change it.
|
|
*/
|
|
class BaseTestCase extends \PHPUnit_Framework_TestCase
|
|
{
|
|
/**
|
|
* Use middleware when running application?
|
|
*
|
|
* @var bool
|
|
*/
|
|
protected $withMiddleware = true;
|
|
|
|
/**
|
|
* Process the application given a request method and URI
|
|
*
|
|
* @param string $requestMethod the request method (e.g. GET, POST, etc.)
|
|
* @param string $requestUri the request URI
|
|
* @param array|object|null $requestData the request data
|
|
* @return \Slim\Http\Response
|
|
*/
|
|
public function runApp($requestMethod, $requestUri, $requestData = null)
|
|
{
|
|
// Create a mock environment for testing with
|
|
$environment = Environment::mock(
|
|
[
|
|
'REQUEST_METHOD' => $requestMethod,
|
|
'REQUEST_URI' => $requestUri
|
|
]
|
|
);
|
|
|
|
// Set up a request object based on the environment
|
|
$request = Request::createFromEnvironment($environment);
|
|
|
|
// Add request data, if it exists
|
|
if (isset($requestData)) {
|
|
$request = $request->withParsedBody($requestData);
|
|
}
|
|
|
|
// Set up a response object
|
|
$response = new Response();
|
|
|
|
// Use the application settings
|
|
$settings = require __DIR__ . '/../../src/settings.php';
|
|
|
|
// Instantiate the application
|
|
$app = new App($settings);
|
|
|
|
// Set up dependencies
|
|
require __DIR__ . '/../../src/dependencies.php';
|
|
|
|
// Register middleware
|
|
if ($this->withMiddleware) {
|
|
require __DIR__ . '/../../src/middleware.php';
|
|
}
|
|
|
|
// Register routes
|
|
require __DIR__ . '/../../src/routes.php';
|
|
|
|
// Process the application
|
|
$response = $app->process($request, $response);
|
|
|
|
// Return the response
|
|
return $response;
|
|
}
|
|
}
|