diff --git a/module/Core/test/Response/NotFoundDelegateTest.php b/module/Core/test/Response/NotFoundDelegateTest.php new file mode 100644 index 00000000..4f80bf56 --- /dev/null +++ b/module/Core/test/Response/NotFoundDelegateTest.php @@ -0,0 +1,61 @@ +renderer = $this->prophesize(TemplateRendererInterface::class); + $this->delegate = new NotFoundDelegate($this->renderer->reveal()); + } + + /** + * @param string $expectedResponse + * @param string $accept + * @param int $renderCalls + * + * @test + * @dataProvider provideResponses + */ + public function properResponseTypeIsReturned(string $expectedResponse, string $accept, int $renderCalls) + { + $request = ServerRequestFactory::fromGlobals()->withHeader('Accept', $accept); + /** @var MethodProphecy $render */ + $render = $this->renderer->render(Argument::cetera())->willReturn(''); + + $resp = $this->delegate->process($request); + + $this->assertInstanceOf($expectedResponse, $resp); + $render->shouldHaveBeenCalledTimes($renderCalls); + } + + public function provideResponses(): array + { + return [ + [Response\JsonResponse::class, 'application/json', 0], + [Response\JsonResponse::class, 'text/json', 0], + [Response\JsonResponse::class, 'application/x-json', 0], + [Response\HtmlResponse::class, 'text/html', 1], + ]; + } +}