slovocast/app/tests/TestCase.php

84 lines
2.0 KiB
PHP
Raw Permalink Normal View History

2024-05-22 02:33:17 +00:00
<?php
namespace Slovocast\Tests;
use PHPUnit\Framework\TestCase as PHPUnit_TestCase;
use Prophecy\PhpUnit\ProphecyTrait;
2024-05-22 02:33:17 +00:00
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\App;
use Slim\Psr7\Factory\StreamFactory;
use Slim\Psr7\Headers;
use Slim\Psr7\Request as SlimRequest;
use Slim\Psr7\Uri;
2024-05-23 00:39:33 +00:00
use Slovocast\Bootstrap;
use Slovocast\Domain\Entity\User;
2024-05-22 02:33:17 +00:00
/**
* This is the common test harness pattern lifted right out of the official
* SlimPHP Skeleton application.
*/
class TestCase extends PHPUnit_TestCase
{
use ProphecyTrait;
2024-05-22 02:33:17 +00:00
/**
* Generate an instance of the Application
*/
protected function getAppInstance(): App
{
2024-05-23 00:39:33 +00:00
return Bootstrap::init();
2024-05-22 02:33:17 +00:00
}
/**
* @param string $method
* @param string path
* @param array $headers
* @param array $cookies
* @param array $serverParams
*/
protected function createRequest(
string $method,
string $path,
array $headers = [],
array $cookies = [],
array $serverParams = []
): Request {
$uri = new Uri('', '', 80, $path);
$handle = fopen('php://temp', 'w+');
$stream = (new StreamFactory())->createStreamFromResource($handle);
$h = new Headers();
foreach ($headers as $name => $value) {
$h->addHeader($name, $value);
}
return new SlimRequest(
$method,
$uri,
$h,
$cookies,
$serverParams,
$stream
);
}
/**
* Quickly generate a User new User entity for testing.
*
* @param array $user The User properties to call User:fromArray on
* @return User a new User entity
*/
protected function getUserFromArray(array $user = []): User
{
if (empty($user)) {
$user = [
'email' => 'dave@slovocast.com',
'name' => 'Dave SH',
'password' => 'hashed_password'
];
}
return User::fromArray($user);
}
2024-05-22 02:33:17 +00:00
}