Skip to content

Commit 688bf62

Browse files
committed
Add more test cases for code coverage
1 parent c2175a4 commit 688bf62

File tree

3 files changed

+84
-0
lines changed

3 files changed

+84
-0
lines changed

tests/ErrorHandlerMiddlewareTest.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use HttpSoft\ServerRequest\ServerRequestCreator;
1010
use HttpSoft\Response\ResponseStatusCodeInterface;
1111
use HttpSoft\Tests\ErrorHandler\TestAsset\ErrorRequestHandler;
12+
use HttpSoft\Tests\ErrorHandler\TestAsset\ErrorResponseGenerator;
1213
use HttpSoft\Tests\ErrorHandler\TestAsset\ThrowableRequestHandler;
1314
use HttpSoft\Tests\ErrorHandler\TestAsset\FirstErrorListener;
1415
use HttpSoft\Tests\ErrorHandler\TestAsset\RequestHandler;
@@ -173,6 +174,32 @@ public function testWithErrorRequestHandlerAndWithAdditionOfListeners(): void
173174
$this->assertTrue($secondListener->triggered());
174175
}
175176

177+
public function testWithDefaultErrorCodeForNotValidResponseStatusCodeAndErrorCode(): void
178+
{
179+
$errorHandler = new ErrorHandlerMiddleware(new ErrorResponseGenerator(self::STATUS_FOUND));
180+
$response = $errorHandler->process(
181+
$this->request,
182+
$this->createThrowableRequestHandler(self::STATUS_MOVED_PERMANENTLY)
183+
);
184+
185+
$this->assertInstanceOf(ResponseInterface::class, $response);
186+
$this->assertSame(self::STATUS_INTERNAL_SERVER_ERROR, $response->getStatusCode());
187+
$this->assertSame(self::PHRASES[self::STATUS_INTERNAL_SERVER_ERROR], $response->getReasonPhrase());
188+
}
189+
190+
public function testWithErrorCodeForNotValidResponseStatusCode(): void
191+
{
192+
$errorHandler = new ErrorHandlerMiddleware(new ErrorResponseGenerator(self::STATUS_FOUND));
193+
$response = $errorHandler->process(
194+
$this->request,
195+
$this->createThrowableRequestHandler(self::STATUS_NOT_FOUND)
196+
);
197+
198+
$this->assertInstanceOf(ResponseInterface::class, $response);
199+
$this->assertSame(self::STATUS_NOT_FOUND, $response->getStatusCode());
200+
$this->assertSame(self::PHRASES[self::STATUS_NOT_FOUND], $response->getReasonPhrase());
201+
}
202+
176203
/**
177204
* @param int|null $code
178205
* @return RequestHandler

tests/ErrorHandlerTest.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use HttpSoft\ServerRequest\ServerRequestCreator;
1010
use HttpSoft\Response\ResponseStatusCodeInterface;
1111
use HttpSoft\Tests\ErrorHandler\TestAsset\ErrorRequestHandler;
12+
use HttpSoft\Tests\ErrorHandler\TestAsset\ErrorResponseGenerator;
1213
use HttpSoft\Tests\ErrorHandler\TestAsset\ThrowableRequestHandler;
1314
use HttpSoft\Tests\ErrorHandler\TestAsset\FirstErrorListener;
1415
use HttpSoft\Tests\ErrorHandler\TestAsset\RequestHandler;
@@ -166,6 +167,30 @@ public function testWithErrorRequestHandlerAndWithAdditionOfListeners(): void
166167
$this->assertTrue($secondListener->triggered());
167168
}
168169

170+
public function testWithDefaultErrorCodeForNotValidResponseStatusCodeAndErrorCode(): void
171+
{
172+
$errorHandler = new ErrorHandler(
173+
new ThrowableRequestHandler(self::STATUS_MOVED_PERMANENTLY),
174+
new ErrorResponseGenerator(self::STATUS_FOUND),
175+
);
176+
$response = $errorHandler->handle($this->request);
177+
$this->assertInstanceOf(ResponseInterface::class, $response);
178+
$this->assertSame(self::STATUS_INTERNAL_SERVER_ERROR, $response->getStatusCode());
179+
$this->assertSame(self::PHRASES[self::STATUS_INTERNAL_SERVER_ERROR], $response->getReasonPhrase());
180+
}
181+
182+
public function testWithErrorCodeForNotValidResponseStatusCode(): void
183+
{
184+
$errorHandler = new ErrorHandler(
185+
new ThrowableRequestHandler(self::STATUS_NOT_FOUND),
186+
new ErrorResponseGenerator(self::STATUS_FOUND),
187+
);
188+
$response = $errorHandler->handle($this->request);
189+
$this->assertInstanceOf(ResponseInterface::class, $response);
190+
$this->assertSame(self::STATUS_NOT_FOUND, $response->getStatusCode());
191+
$this->assertSame(self::PHRASES[self::STATUS_NOT_FOUND], $response->getReasonPhrase());
192+
}
193+
169194
/**
170195
* @param int|null $code
171196
* @return ErrorHandler
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace HttpSoft\Tests\ErrorHandler\TestAsset;
6+
7+
use HttpSoft\ErrorHandler\ErrorResponseGeneratorInterface;
8+
use HttpSoft\Message\Response;
9+
use Psr\Http\Message\ResponseInterface;
10+
use Psr\Http\Message\ServerRequestInterface;
11+
use Throwable;
12+
13+
class ErrorResponseGenerator implements ErrorResponseGeneratorInterface
14+
{
15+
/**
16+
* @var int
17+
*/
18+
private int $code;
19+
20+
/**
21+
* @param int $code
22+
*/
23+
public function __construct(int $code)
24+
{
25+
$this->code = $code;
26+
}
27+
28+
public function generate(Throwable $error, ServerRequestInterface $request): ResponseInterface
29+
{
30+
return new Response($this->code);
31+
}
32+
}

0 commit comments

Comments
 (0)