Skip to content

Commit 878c5aa

Browse files
authored
Merge pull request #25 from chubbyphp/chubbyphp-mock-2.x
chubbyphp-mock-2.x
2 parents dcf5555 + 63bdf62 commit 878c5aa

21 files changed

Lines changed: 750 additions & 691 deletions

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ A minimal, highly [performant][1] middleware [PSR-15][8] microframework built wi
3737
## Requirements
3838

3939
* php: ^8.2
40-
* [chubbyphp/chubbyphp-http-exception][20]: ^1.1
40+
* [chubbyphp/chubbyphp-http-exception][20]: ^1.2
4141
* [psr/container][21]: ^1.1.2|^2.0.2
4242
* [psr/http-factory-implementation][22]: ^1.0
4343
* [psr/http-factory][23]: ^1.1

composer.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
],
2424
"require": {
2525
"php": "^8.2",
26-
"chubbyphp/chubbyphp-http-exception": "^1.1",
26+
"chubbyphp/chubbyphp-http-exception": "^1.2",
2727
"psr/container": "^1.1.2|^2.0.2",
2828
"psr/http-factory-implementation": "^1.0",
2929
"psr/http-factory": "^1.1",
@@ -35,18 +35,18 @@
3535
},
3636
"require-dev": {
3737
"chubbyphp/chubbyphp-dev-helper": "dev-master",
38-
"chubbyphp/chubbyphp-mock": "^1.8",
38+
"chubbyphp/chubbyphp-mock": "^2.0@dev",
3939
"guzzlehttp/psr7": "^2.7",
4040
"http-interop/http-factory-guzzle": "^1.2",
41-
"infection/infection": "^0.29.8",
41+
"infection/infection": "^0.29.13",
4242
"laminas/laminas-diactoros": "^3.5",
4343
"nyholm/psr7": "^1.8.2",
4444
"php-coveralls/php-coveralls": "^2.7.0",
4545
"phpstan/extension-installer": "^1.4.3",
46-
"phpstan/phpstan": "^2.0.3",
47-
"phpunit/phpunit": "^11.5.0",
46+
"phpstan/phpstan": "^2.1.6",
47+
"phpunit/phpunit": "^11.5.10",
4848
"slim/psr7": "^1.7",
49-
"sunrise/http-message": "^3.2"
49+
"sunrise/http-message": "^3.4.2"
5050
},
5151
"autoload": {
5252
"psr-4": { "Chubbyphp\\Framework\\": "src/" }

tests/Integration/MiddlewareDispatcherTest.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
use Chubbyphp\Framework\Middleware\SlimCallbackMiddleware;
1010
use Chubbyphp\Framework\RequestHandler\CallbackRequestHandler;
1111
use Chubbyphp\Framework\RequestHandler\SlimCallbackRequestHandler;
12-
use Chubbyphp\Mock\MockByCallsTrait;
1312
use PHPUnit\Framework\TestCase;
1413
use Psr\Http\Message\ResponseInterface;
1514
use Psr\Http\Message\ServerRequestInterface;
@@ -24,8 +23,6 @@
2423
*/
2524
final class MiddlewareDispatcherTest extends TestCase
2625
{
27-
use MockByCallsTrait;
28-
2926
public function testCallback(): void
3027
{
3128
$responseFactory = new SlimResponseFactory();

tests/Unit/ApplicationTest.php

Lines changed: 57 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@
88
use Chubbyphp\Framework\Emitter\EmitterInterface;
99
use Chubbyphp\Framework\Middleware\MiddlewareDispatcherInterface;
1010
use Chubbyphp\Framework\Router\RouteInterface;
11-
use Chubbyphp\Mock\Call;
12-
use Chubbyphp\Mock\MockByCallsTrait;
11+
use Chubbyphp\Mock\MockMethod\WithCallback;
12+
use Chubbyphp\Mock\MockMethod\WithReturn;
13+
use Chubbyphp\Mock\MockObjectBuilder;
14+
use PHPUnit\Framework\Attributes\DoesNotPerformAssertions;
1315
use PHPUnit\Framework\MockObject\MockObject;
1416
use PHPUnit\Framework\TestCase;
1517
use Psr\Http\Message\ResponseInterface;
@@ -24,104 +26,101 @@
2426
*/
2527
final class ApplicationTest extends TestCase
2628
{
27-
use MockByCallsTrait;
28-
2929
public function testInvoke(): void
3030
{
31-
/** @var MiddlewareInterface|MockObject $routeIndependMiddleware */
32-
$routeIndependMiddleware = $this->getMockByCalls(MiddlewareInterface::class);
31+
$builder = new MockObjectBuilder();
32+
33+
/** @var MiddlewareInterface $routeIndependentMiddleware */
34+
$routeIndependentMiddleware = $builder->create(MiddlewareInterface::class, []);
3335

34-
/** @var MiddlewareInterface|MockObject $middleware */
35-
$middleware = $this->getMockByCalls(MiddlewareInterface::class);
36+
/** @var MiddlewareInterface $middleware */
37+
$middleware = $builder->create(MiddlewareInterface::class, []);
3638

3739
/** @var MockObject|RequestHandlerInterface $handler */
38-
$handler = $this->getMockByCalls(RequestHandlerInterface::class);
40+
$handler = $builder->create(RequestHandlerInterface::class, []);
3941

4042
/** @var MockObject|RouteInterface $route */
41-
$route = $this->getMockByCalls(RouteInterface::class, [
42-
Call::create('getMiddlewares')->with()->willReturn([$middleware]),
43-
Call::create('getRequestHandler')->with()->willReturn($handler),
43+
$route = $builder->create(RouteInterface::class, [
44+
new WithReturn('getMiddlewares', [], [$middleware]),
45+
new WithReturn('getRequestHandler', [], $handler),
4446
]);
4547

4648
/** @var MockObject|ServerRequestInterface $request */
47-
$request = $this->getMockByCalls(ServerRequestInterface::class, [
48-
Call::create('getAttribute')->with('route', null)->willReturn($route),
49+
$request = $builder->create(ServerRequestInterface::class, [
50+
new WithReturn('getAttribute', ['route', null], $route),
4951
]);
5052

5153
/** @var MockObject|ResponseInterface $response */
52-
$response = $this->getMockByCalls(ResponseInterface::class);
53-
54-
/** @var MiddlewareDispatcherInterface|MockObject $middlewareDispatcher */
55-
$middlewareDispatcher = $this->getMockByCalls(MiddlewareDispatcherInterface::class, [
56-
Call::create('dispatch')
57-
->willReturnCallback(
58-
static function (
59-
array $middlewares,
60-
RequestHandlerInterface $requestHandler,
61-
ServerRequestInterface $request
62-
) use ($routeIndependMiddleware) {
63-
self::assertSame([$routeIndependMiddleware], $middlewares);
64-
65-
return $requestHandler->handle($request);
66-
}
67-
),
68-
Call::create('dispatch')->with([$middleware], $handler, $request)->willReturn($response),
54+
$response = $builder->create(ResponseInterface::class, []);
55+
56+
/** @var MiddlewareDispatcherInterface $middlewareDispatcher */
57+
$middlewareDispatcher = $builder->create(MiddlewareDispatcherInterface::class, [
58+
new WithCallback(
59+
'dispatch',
60+
static function (array $middlewares, RequestHandlerInterface $requestHandler, ServerRequestInterface $req) use ($routeIndependentMiddleware): ResponseInterface {
61+
TestCase::assertSame([$routeIndependentMiddleware], $middlewares);
62+
63+
return $requestHandler->handle($req);
64+
}
65+
),
66+
new WithReturn('dispatch', [[$middleware], $handler, $request], $response),
6967
]);
7068

7169
$application = new Application([
72-
$routeIndependMiddleware,
70+
$routeIndependentMiddleware,
7371
], $middlewareDispatcher);
7472

7573
self::assertSame($response, $application($request));
7674
}
7775

7876
public function testHandle(): void
7977
{
80-
/** @var MiddlewareInterface|MockObject $routeIndependMiddleware */
81-
$routeIndependMiddleware = $this->getMockByCalls(MiddlewareInterface::class);
78+
$builder = new MockObjectBuilder();
79+
80+
/** @var MiddlewareInterface $routeIndependentMiddleware */
81+
$routeIndependentMiddleware = $builder->create(MiddlewareInterface::class, []);
8282

8383
/** @var MockObject|ServerRequestInterface $request */
84-
$request = $this->getMockByCalls(ServerRequestInterface::class);
84+
$request = $builder->create(ServerRequestInterface::class, []);
8585

8686
/** @var MockObject|ResponseInterface $response */
87-
$response = $this->getMockByCalls(ResponseInterface::class);
88-
89-
/** @var MiddlewareDispatcherInterface|MockObject $middlewareDispatcher */
90-
$middlewareDispatcher = $this->getMockByCalls(MiddlewareDispatcherInterface::class, [
91-
Call::create('dispatch')
92-
->willReturnCallback(
93-
static function (
94-
array $middlewares,
95-
RequestHandlerInterface $requestHandler,
96-
ServerRequestInterface $request
97-
) use ($routeIndependMiddleware) {
98-
self::assertSame([$routeIndependMiddleware], $middlewares);
99-
100-
return $requestHandler->handle($request);
101-
}
102-
),
87+
$response = $builder->create(ResponseInterface::class, []);
88+
89+
/** @var MiddlewareDispatcherInterface $middlewareDispatcher */
90+
$middlewareDispatcher = $builder->create(MiddlewareDispatcherInterface::class, [
91+
new WithCallback(
92+
'dispatch',
93+
static function (array $middlewares, RequestHandlerInterface $requestHandler, ServerRequestInterface $req) use ($routeIndependentMiddleware): ResponseInterface {
94+
TestCase::assertSame([$routeIndependentMiddleware], $middlewares);
95+
96+
return $requestHandler->handle($req);
97+
}
98+
),
10399
]);
104100

105101
/** @var MockObject|RequestHandlerInterface $requestHandler */
106-
$requestHandler = $this->getMockByCalls(RequestHandlerInterface::class, [
107-
Call::create('handle')->with($request)->willReturn($response),
102+
$requestHandler = $builder->create(RequestHandlerInterface::class, [
103+
new WithReturn('handle', [$request], $response),
108104
]);
109105

110106
$application = new Application([
111-
$routeIndependMiddleware,
107+
$routeIndependentMiddleware,
112108
], $middlewareDispatcher, $requestHandler);
113109

114110
self::assertSame($response, $application->handle($request));
115111
}
116112

113+
#[DoesNotPerformAssertions]
117114
public function testEmit(): void
118115
{
116+
$builder = new MockObjectBuilder();
117+
119118
/** @var MockObject|ResponseInterface $response */
120-
$response = $this->getMockByCalls(ResponseInterface::class);
119+
$response = $builder->create(ResponseInterface::class, []);
121120

122-
/** @var EmitterInterface|MockObject $emitter */
123-
$emitter = $this->getMockByCalls(EmitterInterface::class, [
124-
Call::create('emit')->with($response),
121+
/** @var EmitterInterface $emitter */
122+
$emitter = $builder->create(EmitterInterface::class, [
123+
new WithReturn('emit', [$response], null),
125124
]);
126125

127126
$application = new Application([], null, null, $emitter);

tests/Unit/Emitter/EmitterTest.php

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ function header(string $header, bool $replace = true, ?int $http_response_code =
3838
{
3939
use Chubbyphp\Framework\Emitter\Emitter;
4040
use Chubbyphp\Framework\Emitter\TestHeader;
41-
use Chubbyphp\Mock\Call;
42-
use Chubbyphp\Mock\MockByCallsTrait;
43-
use PHPUnit\Framework\MockObject\MockObject;
41+
use Chubbyphp\Mock\MockMethod\WithCallback;
42+
use Chubbyphp\Mock\MockMethod\WithReturn;
43+
use Chubbyphp\Mock\MockObjectBuilder;
4444
use PHPUnit\Framework\TestCase;
4545
use Psr\Http\Message\ResponseInterface;
4646
use Psr\Http\Message\StreamInterface;
@@ -52,26 +52,26 @@ function header(string $header, bool $replace = true, ?int $http_response_code =
5252
*/
5353
final class EmitterTest extends TestCase
5454
{
55-
use MockByCallsTrait;
56-
5755
public function testEmit(): void
5856
{
59-
/** @var MockObject|StreamInterface $responseBody */
60-
$responseBody = $this->getMockByCalls(StreamInterface::class, [
61-
Call::create('isSeekable')->with()->willReturn(true),
62-
Call::create('rewind')->with(),
63-
Call::create('eof')->with()->willReturn(false),
64-
Call::create('read')->with(256)->willReturn('sample body'),
65-
Call::create('eof')->with()->willReturn(true),
57+
$builder = new MockObjectBuilder();
58+
59+
/** @var StreamInterface $responseBody */
60+
$responseBody = $builder->create(StreamInterface::class, [
61+
new WithReturn('isSeekable', [], true),
62+
new WithCallback('rewind', static fn () => null),
63+
new WithReturn('eof', [], false),
64+
new WithReturn('read', [256], 'sample body'),
65+
new WithReturn('eof', [], true),
6666
]);
6767

68-
/** @var MockObject|ResponseInterface $response */
69-
$response = $this->getMockByCalls(ResponseInterface::class, [
70-
Call::create('getStatusCode')->with()->willReturn(200),
71-
Call::create('getProtocolVersion')->with()->willReturn('1.1'),
72-
Call::create('getReasonPhrase')->with()->willReturn('OK'),
73-
Call::create('getHeaders')->with()->willReturn(['X-Name' => ['value1', 'value2']]),
74-
Call::create('getBody')->with()->willReturn($responseBody),
68+
/** @var ResponseInterface $response */
69+
$response = $builder->create(ResponseInterface::class, [
70+
new WithReturn('getStatusCode', [], 200),
71+
new WithReturn('getProtocolVersion', [], '1.1'),
72+
new WithReturn('getReasonPhrase', [], 'OK'),
73+
new WithReturn('getHeaders', [], ['X-Name' => ['value1', 'value2']]),
74+
new WithReturn('getBody', [], $responseBody),
7575
]);
7676

7777
$emitter = new Emitter();

tests/Unit/Middleware/CallbackMiddlewareTest.php

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@
55
namespace Chubbyphp\Tests\Framework\Unit\Middleware;
66

77
use Chubbyphp\Framework\Middleware\CallbackMiddleware;
8-
use Chubbyphp\Mock\Call;
9-
use Chubbyphp\Mock\MockByCallsTrait;
10-
use PHPUnit\Framework\MockObject\MockObject;
8+
use Chubbyphp\Mock\MockMethod\WithReturn;
9+
use Chubbyphp\Mock\MockObjectBuilder;
1110
use PHPUnit\Framework\TestCase;
1211
use Psr\Http\Message\ResponseInterface;
1312
use Psr\Http\Message\ServerRequestInterface;
@@ -20,19 +19,19 @@
2019
*/
2120
final class CallbackMiddlewareTest extends TestCase
2221
{
23-
use MockByCallsTrait;
24-
2522
public function testHandle(): void
2623
{
27-
/** @var MockObject|ServerRequestInterface $request */
28-
$request = $this->getMockByCalls(ServerRequestInterface::class);
24+
$builder = new MockObjectBuilder();
25+
26+
/** @var ServerRequestInterface $request */
27+
$request = $builder->create(ServerRequestInterface::class, []);
2928

30-
/** @var MockObject|ResponseInterface $response */
31-
$response = $this->getMockByCalls(ResponseInterface::class);
29+
/** @var ResponseInterface $response */
30+
$response = $builder->create(ResponseInterface::class, []);
3231

33-
/** @var MockObject|RequestHandlerInterface $handler */
34-
$handler = $this->getMockByCalls(RequestHandlerInterface::class, [
35-
Call::create('handle')->with($request)->willReturn($response),
32+
/** @var RequestHandlerInterface $handler */
33+
$handler = $builder->create(RequestHandlerInterface::class, [
34+
new WithReturn('handle', [$request], $response),
3635
]);
3736

3837
$middleware = new CallbackMiddleware(

0 commit comments

Comments
 (0)