engelsystem/tests/Unit/Http/Psr7ServiceProviderTest.php

66 lines
2.4 KiB
PHP

<?php
namespace Engelsystem\Test\Unit\Http;
use Engelsystem\Http\Psr7ServiceProvider;
use Engelsystem\Http\Request;
use Engelsystem\Http\Response;
use Engelsystem\Test\Unit\ServiceProviderTest;
use PHPUnit_Framework_MockObject_MockObject as MockObject;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface as RequestInterface;
use Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory;
class Psr7ServiceProviderTest extends ServiceProviderTest
{
/**
* @covers \Engelsystem\Http\Psr7ServiceProvider::register()
*/
public function testRegister()
{
/** @var MockObject|DiactorosFactory $psr7Factory */
$psr7Factory = $this->createMock(DiactorosFactory::class);
/** @var MockObject|Request $request */
$request = $this->createMock(Request::class);
/** @var MockObject|Response $response */
$response = $this->createMock(Response::class);
/** @var MockObject|RequestInterface $psr7request */
$psr7request = $this->createMock(Request::class);
/** @var MockObject|ResponseInterface $psr7response */
$psr7response = $this->createMock(Response::class);
$app = $this->getApp(['make', 'instance', 'get', 'bind']);
$this->setExpects($app, 'make', [DiactorosFactory::class], $psr7Factory);
$app->expects($this->atLeastOnce())
->method('get')
->withConsecutive(['request'], ['response'])
->willReturnOnConsecutiveCalls($request, $response);
$app->expects($this->atLeastOnce())
->method('instance')
->withConsecutive(
['psr7.factory', $psr7Factory],
['psr7.request', $psr7request],
['psr7.response', $psr7response]
);
$app->expects($this->atLeastOnce())
->method('bind')
->withConsecutive(
[RequestInterface::class, 'psr7.request'],
[ResponseInterface::class, 'psr7.response']
);
$psr7Factory->expects($this->once())
->method('createRequest')
->with($request)
->willReturn($psr7request);
$psr7Factory->expects($this->once())
->method('createResponse')
->with($response)
->willReturn($psr7response);
$serviceProvider = new Psr7ServiceProvider($app);
$serviceProvider->register();
}
}