diff --git a/tests/cases/Decorator/DecoratorManager.phpt b/tests/cases/Decorator/DecoratorManager.phpt new file mode 100644 index 00000000..f69c4657 --- /dev/null +++ b/tests/cases/Decorator/DecoratorManager.phpt @@ -0,0 +1,104 @@ +addDecorator(IDecorator::ON_HANDLER_BEFORE, new ReturnRequestDecorator()); + $manager->addDecorator(IDecorator::ON_HANDLER_BEFORE, new ReturnRequestDecorator()); + $manager->addDecorator(IDecorator::ON_HANDLER_BEFORE, new ReturnRequestDecorator()); + + Assert::same($request, $manager->decorateRequest(IDecorator::ON_HANDLER_BEFORE, $request, $response)); +}); + +// Decorate request - return null +test(function (): void { + $manager = new DecoratorManager(); + $request = Psr7ServerRequestFactory::fromSuperGlobal(); + $response = Psr7ResponseFactory::fromGlobal(); + + $manager->addDecorator(IDecorator::ON_HANDLER_BEFORE, new ReturnRequestDecorator()); + $manager->addDecorator(IDecorator::ON_HANDLER_BEFORE, new ReturnNullDecorator()); + $manager->addDecorator(IDecorator::ON_HANDLER_BEFORE, new ReturnRequestDecorator()); + + Assert::same(null, $manager->decorateRequest(IDecorator::ON_HANDLER_BEFORE, $request, $response)); +}); + +// Decorate request - no decorators +test(function (): void { + $manager = new DecoratorManager(); + $request = Psr7ServerRequestFactory::fromSuperGlobal(); + $response = Psr7ResponseFactory::fromGlobal(); + + Assert::same($request, $manager->decorateRequest(IDecorator::ON_HANDLER_BEFORE, $request, $response)); +}); + +// Decorate response +test(function (): void { + $manager = new DecoratorManager(); + $request = Psr7ServerRequestFactory::fromSuperGlobal(); + $response = Psr7ResponseFactory::fromGlobal(); + + $manager->addDecorator(IDecorator::ON_HANDLER_AFTER, new ReturnResponseDecorator()); + $manager->addDecorator(IDecorator::ON_HANDLER_AFTER, new ReturnResponseDecorator()); + $manager->addDecorator(IDecorator::ON_HANDLER_AFTER, new ReturnResponseDecorator()); + + Assert::same($response, $manager->decorateResponse(IDecorator::ON_HANDLER_AFTER, $request, $response)); +}); + +// Decorate response - return null +test(function (): void { + $manager = new DecoratorManager(); + $request = Psr7ServerRequestFactory::fromSuperGlobal(); + $response = Psr7ResponseFactory::fromGlobal(); + + $manager->addDecorator(IDecorator::ON_HANDLER_AFTER, new ReturnResponseDecorator()); + $manager->addDecorator(IDecorator::ON_HANDLER_AFTER, new ReturnNullDecorator()); + $manager->addDecorator(IDecorator::ON_HANDLER_AFTER, new ReturnResponseDecorator()); + + Assert::same(null, $manager->decorateResponse(IDecorator::ON_HANDLER_AFTER, $request, $response)); +}); + +// Decorate response - no decorators +test(function (): void { + $manager = new DecoratorManager(); + $request = Psr7ServerRequestFactory::fromSuperGlobal(); + $response = Psr7ResponseFactory::fromGlobal(); + + Assert::same($response, $manager->decorateResponse(IDecorator::ON_HANDLER_AFTER, $request, $response)); +}); + +// Decorate response - no decorators +test(function (): void { + $manager = new DecoratorManager(); + $request = Psr7ServerRequestFactory::fromSuperGlobal(); + $response = Psr7ResponseFactory::fromGlobal(); + + Assert::same($response, $manager->decorateResponse(IDecorator::ON_HANDLER_AFTER, $request, $response)); +}); + +// Decorate response exception - no decorators +test(function (): void { + $manager = new DecoratorManager(); + $request = Psr7ServerRequestFactory::fromSuperGlobal(); + $response = Psr7ResponseFactory::fromGlobal(); + + Assert::same(null, $manager->decorateResponse(IDecorator::ON_DISPATCHER_EXCEPTION, $request, $response)); +}); diff --git a/tests/fixtures/Decorator/ReturnNullDecorator.php b/tests/fixtures/Decorator/ReturnNullDecorator.php new file mode 100644 index 00000000..3f39c916 --- /dev/null +++ b/tests/fixtures/Decorator/ReturnNullDecorator.php @@ -0,0 +1,21 @@ +