RequestHandlerTest.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace Test\Michel\Framework\Core;
  3. use Michel\Framework\Core\Handler\RequestHandler;
  4. use Michel\UniTester\TestCase;
  5. use Test\Michel\Framework\Core\Mock\ContainerMock;
  6. use Test\Michel\Framework\Core\Mock\ResponseMock;
  7. use Test\Michel\Framework\Core\Mock\ServerRequestMock;
  8. use Psr\Container\ContainerInterface;
  9. use Psr\Http\Message\ResponseInterface;
  10. use Psr\Http\Message\ServerRequestInterface;
  11. use Test\Michel\Framework\Core\Middleware\ResponseMiddlewareTest;
  12. class RequestHandlerTest extends TestCase
  13. {
  14. protected function setUp(): void
  15. {
  16. // TODO: Implement setUp() method.
  17. }
  18. protected function tearDown(): void
  19. {
  20. // TODO: Implement tearDown() method.
  21. }
  22. protected function execute(): void
  23. {
  24. $this->testResponseOk();
  25. $this->testInvalidMiddleware();
  26. $this->testThenArgument();
  27. }
  28. public function testResponseOk()
  29. {
  30. /**
  31. * @var ContainerInterface $container
  32. * @var ServerRequestInterface $request
  33. */
  34. $container = new ContainerMock();
  35. $request = new ServerRequestMock();
  36. $handler = new RequestHandler($container, [new ResponseMiddlewareTest()]);
  37. $this->assertEquals(200, $handler->handle($request)->getStatusCode());
  38. }
  39. public function testInvalidMiddleware()
  40. {
  41. /**
  42. * @var ContainerInterface $container
  43. * @var ServerRequestInterface $request
  44. */
  45. $container = new ContainerMock();
  46. $request = new ServerRequestMock();
  47. $handler = new RequestHandler($container, [new \stdClass()]);
  48. $this->expectException(\LogicException::class, function () use($handler, $request) {
  49. $handler->handle($request);
  50. });
  51. }
  52. public function testThenArgument()
  53. {
  54. /**
  55. * @var ContainerInterface $container
  56. * @var ServerRequestInterface $request
  57. */
  58. $container = new ContainerMock();
  59. $request = new ServerRequestMock();
  60. $handler = new RequestHandler($container, [], function (ServerRequestInterface $request) {
  61. return new ResponseMock();
  62. });
  63. $response = $handler->handle($request);
  64. $this->assertInstanceOf(ResponseInterface::class, $response);
  65. }
  66. }