From a594ddd17378cf84e9484086eafb2b9f5627635c Mon Sep 17 00:00:00 2001 From: Bram Pauwels Date: Thu, 30 May 2024 08:57:36 +0200 Subject: [PATCH] Add NotImplemented exception (#6) --- src/Exception/NotImplemented.php | 9 +++++++++ src/JsonResponseEvaluator.php | 13 +++++++++++++ tests/JsonResponseEvaluatorTest.php | 9 +++++++++ 3 files changed, 31 insertions(+) create mode 100644 src/Exception/NotImplemented.php diff --git a/src/Exception/NotImplemented.php b/src/Exception/NotImplemented.php new file mode 100644 index 0000000..2aa62f5 --- /dev/null +++ b/src/Exception/NotImplemented.php @@ -0,0 +1,9 @@ +handleResponseTooManyRequests($response); break; + case StatusCode::NOT_IMPLEMENTED: + $this->handleResponseNotImplemented($response); + break; case StatusCode::SERVICE_UNAVAILABLE: $this->handleResponseServiceUnavailable($response); break; @@ -108,6 +113,14 @@ protected function handleResponseTooManyRequests(ResponseInterface $response): v throw new TooManyRequests($response->getBody()->getContents()); } + /** + * @throws NotImplemented + */ + protected function handleResponseNotImplemented(ResponseInterface $response): void + { + throw new NotImplemented($response->getBody()->getContents()); + } + /** * @throws ServiceUnavailable */ diff --git a/tests/JsonResponseEvaluatorTest.php b/tests/JsonResponseEvaluatorTest.php index dfe9cc2..17eef2c 100644 --- a/tests/JsonResponseEvaluatorTest.php +++ b/tests/JsonResponseEvaluatorTest.php @@ -6,6 +6,7 @@ use MaxImmo\ExternalParties\Exception\BadRequest; use MaxImmo\ExternalParties\Exception\NotFound; +use MaxImmo\ExternalParties\Exception\NotImplemented; use MaxImmo\ExternalParties\Exception\ServiceUnavailable; use MaxImmo\ExternalParties\Exception\TooManyRequests; use MaxImmo\ExternalParties\Exception\Unauthorized; @@ -71,6 +72,14 @@ public function testEvaluateResponseShouldThrowTooManyRequestsExceptionOnTooMany $this->evaluator->evaluateResponse($this->response); } + public function testEvaluateResponseShouldThrowNotImplementedExceptionOnNotImplemented(): void + { + $this->body->expects($this->any())->method('getContents')->willReturn('Not Implemented'); + $this->expectException(NotImplemented::class); + $this->response->expects($this->any())->method('getStatusCode')->willReturn(StatusCode::NOT_IMPLEMENTED); + $this->evaluator->evaluateResponse($this->response); + } + public function testEvaluateResponseShouldThrowTooManyRequestsExceptionOnServiceUnavailable(): void { $this->body->expects($this->any())->method('getContents')->willReturn('Service Unavailable');