diff --git a/test/Asset/FixedResponseMiddleware.php b/test/Asset/FixedResponseMiddleware.php new file mode 100644 index 0000000..075bc5f --- /dev/null +++ b/test/Asset/FixedResponseMiddleware.php @@ -0,0 +1,22 @@ +response; + } +} diff --git a/test/Asset/NoOpMiddleware.php b/test/Asset/NoOpMiddleware.php new file mode 100644 index 0000000..daeae59 --- /dev/null +++ b/test/Asset/NoOpMiddleware.php @@ -0,0 +1,18 @@ +handle($request); + } +} diff --git a/test/Middleware/DispatchMiddlewareTest.php b/test/Middleware/DispatchMiddlewareTest.php index 2d6ec74..95e98a7 100644 --- a/test/Middleware/DispatchMiddlewareTest.php +++ b/test/Middleware/DispatchMiddlewareTest.php @@ -5,7 +5,9 @@ namespace MezzioTest\Router\Middleware; use Mezzio\Router\Middleware\DispatchMiddleware; +use Mezzio\Router\Route; use Mezzio\Router\RouteResult; +use MezzioTest\Router\Asset\FixedResponseMiddleware; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Psr\Http\Message\ResponseInterface; @@ -60,11 +62,9 @@ public function testInvokesRouteResultWhenPresent(): void ->expects(self::never()) ->method('handle'); - $routeResult = $this->createMock(RouteResult::class); - $routeResult - ->method('process') - ->with($this->request, $this->handler) - ->willReturn($this->response); + $routeResult = RouteResult::fromRoute( + new Route('/', new FixedResponseMiddleware($this->response)), + ); $this->request ->method('getAttribute') diff --git a/test/Middleware/ImplicitHeadMiddlewareTest.php b/test/Middleware/ImplicitHeadMiddlewareTest.php index a13afda..2d3170b 100644 --- a/test/Middleware/ImplicitHeadMiddlewareTest.php +++ b/test/Middleware/ImplicitHeadMiddlewareTest.php @@ -11,6 +11,7 @@ use Mezzio\Router\Route; use Mezzio\Router\RouteResult; use Mezzio\Router\RouterInterface; +use MezzioTest\Router\Asset\NoOpMiddleware; use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; @@ -103,8 +104,9 @@ public function testReturnsResultOfHandlerWhenTheRouteResultMatchesARouteThatSup public function testReturnsResultOfHandlerWhenRouteSupportsHeadExplicitly(): void { - $route = $this->createMock(Route::class); - $result = RouteResult::fromRoute($route); + $result = RouteResult::fromRoute( + new Route('/', new NoOpMiddleware()), + ); $request = (new ServerRequest()) ->withMethod(RequestMethod::METHOD_HEAD) ->withAttribute(RouteResult::class, $result); diff --git a/test/Middleware/ImplicitOptionsMiddlewareTest.php b/test/Middleware/ImplicitOptionsMiddlewareTest.php index 7ec06c3..e577956 100644 --- a/test/Middleware/ImplicitOptionsMiddlewareTest.php +++ b/test/Middleware/ImplicitOptionsMiddlewareTest.php @@ -8,6 +8,7 @@ use Mezzio\Router\Middleware\ImplicitOptionsMiddleware; use Mezzio\Router\Route; use Mezzio\Router\RouteResult; +use MezzioTest\Router\Asset\NoOpMiddleware; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Psr\Http\Message\ResponseInterface; @@ -84,9 +85,9 @@ public function testMissingRouteResultInvokesHandler(): void public function testReturnsResultOfHandlerWhenRouteSupportsOptionsExplicitly(): void { - $route = $this->createMock(Route::class); - - $result = RouteResult::fromRoute($route); + $result = RouteResult::fromRoute( + new Route('/', new NoOpMiddleware()), + ); $request = $this->createMock(ServerRequestInterface::class); $request diff --git a/test/RouteResultTest.php b/test/RouteResultTest.php index a2152e5..cccd743 100644 --- a/test/RouteResultTest.php +++ b/test/RouteResultTest.php @@ -6,14 +6,15 @@ use Mezzio\Router\Route; use Mezzio\Router\RouteResult; +use MezzioTest\Router\Asset\FixedResponseMiddleware; +use MezzioTest\Router\Asset\NoOpMiddleware; +use PHPUnit\Framework\Attributes\Depends; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * @see MockObject * @@ -45,7 +46,7 @@ public function testRouteFailureRetrieveHttpMethods(): void public function testRouteMatchedParams(): void { $params = ['foo' => 'bar']; - $route = $this->createMock(Route::class); + $route = new Route('/foo', new NoOpMiddleware()); $result = RouteResult::fromRoute($route, $params); self::assertSame($params, $result->getMatchedParams()); @@ -61,45 +62,27 @@ public function testRouteMethodFailure(): void public function testRouteSuccessMethodFailure(): void { $params = ['foo' => 'bar']; - $route = $this->createMock(Route::class); + $route = new Route('/foo', new NoOpMiddleware()); $result = RouteResult::fromRoute($route, $params); self::assertFalse($result->isMethodFailure()); } - /** - * @psalm-return array{route: Route&MockObject, result: RouteResult} - */ - public function testFromRouteShouldComposeRouteInResult(): array + public function testFromRouteShouldComposeRouteInResult(): RouteResult { - $route = $this->createMock(Route::class); + $route = new Route('/foo', new NoOpMiddleware(), ['HEAD', 'OPTIONS', 'GET'], 'route'); $result = RouteResult::fromRoute($route, ['foo' => 'bar']); self::assertTrue($result->isSuccess()); self::assertSame($route, $result->getMatchedRoute()); - return ['route' => $route, 'result' => $result]; + return $result; } - /** - * @psalm-param array{result:RouteResult,route:Route&MockObject} $data - * @depends testFromRouteShouldComposeRouteInResult - */ - public function testAllAccessorsShouldReturnExpectedDataWhenResultCreatedViaFromRoute(array $data): void + #[Depends('testFromRouteShouldComposeRouteInResult')] + public function testAllAccessorsShouldReturnExpectedDataWhenResultCreatedViaFromRoute(RouteResult $result): void { - $result = $data['result']; - $route = $data['route']; - assert($route instanceof MockObject); - - $route - ->method('getName') - ->willReturn('route'); - - $route - ->method('getAllowedMethods') - ->willReturn(['HEAD', 'OPTIONS', 'GET']); - self::assertSame('route', $result->getMatchedRouteName()); self::assertSame(['HEAD', 'OPTIONS', 'GET'], $result->getAllowedMethods()); } @@ -121,9 +104,7 @@ public function testFailureResultDoesNotIndicateAMethodFailureIfAllMethodsAreAll return $result; } - /** - * @depends testFailureResultDoesNotIndicateAMethodFailureIfAllMethodsAreAllowed - */ + #[Depends('testFailureResultDoesNotIndicateAMethodFailureIfAllMethodsAreAllowed')] public function testAllowedMethodsIncludesASingleWildcardEntryWhenAllMethodsAllowedForFailureResult( RouteResult $result ): void { @@ -154,11 +135,7 @@ public function testSuccessfulResultProcessedAsMiddlewareDelegatesToRoute(): voi ->expects(self::never()) ->method('handle'); - $route = $this->createMock(Route::class); - $route - ->method('process') - ->with($request, $handler) - ->willReturn($response); + $route = new Route('/', new FixedResponseMiddleware($response)); $result = RouteResult::fromRoute($route);