Skip to content

Commit d641479

Browse files
committed
chubbyphp-mock-2.x
1 parent 0cb46b0 commit d641479

20 files changed

+711
-931
lines changed

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/Unit/ApplicationTest.php

Lines changed: 55 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
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;
1314
use PHPUnit\Framework\MockObject\MockObject;
1415
use PHPUnit\Framework\TestCase;
1516
use Psr\Http\Message\ResponseInterface;
@@ -24,104 +25,100 @@
2425
*/
2526
final class ApplicationTest extends TestCase
2627
{
27-
use MockByCallsTrait;
28-
2928
public function testInvoke(): void
3029
{
31-
/** @var MiddlewareInterface|MockObject $routeIndependMiddleware */
32-
$routeIndependMiddleware = $this->getMockByCalls(MiddlewareInterface::class);
30+
$builder = new MockObjectBuilder();
31+
32+
/** @var MiddlewareInterface $routeIndependentMiddleware */
33+
$routeIndependentMiddleware = $builder->create(MiddlewareInterface::class, []);
3334

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

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

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

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

5152
/** @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),
53+
$response = $builder->create(ResponseInterface::class, []);
54+
55+
/** @var MiddlewareDispatcherInterface $middlewareDispatcher */
56+
$middlewareDispatcher = $builder->create(MiddlewareDispatcherInterface::class, [
57+
new WithCallback(
58+
'dispatch',
59+
static function (array $middlewares, RequestHandlerInterface $requestHandler, ServerRequestInterface $req) use ($routeIndependentMiddleware): ResponseInterface {
60+
TestCase::assertSame([$routeIndependentMiddleware], $middlewares);
61+
62+
return $requestHandler->handle($req);
63+
}
64+
),
65+
new WithReturn('dispatch', [[$middleware], $handler, $request], $response),
6966
]);
7067

7168
$application = new Application([
72-
$routeIndependMiddleware,
69+
$routeIndependentMiddleware,
7370
], $middlewareDispatcher);
7471

7572
self::assertSame($response, $application($request));
7673
}
7774

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

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

8685
/** @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-
),
86+
$response = $builder->create(ResponseInterface::class, []);
87+
88+
/** @var MiddlewareDispatcherInterface $middlewareDispatcher */
89+
$middlewareDispatcher = $builder->create(MiddlewareDispatcherInterface::class, [
90+
new WithCallback(
91+
'dispatch',
92+
static function (array $middlewares, RequestHandlerInterface $requestHandler, ServerRequestInterface $req) use ($routeIndependentMiddleware): ResponseInterface {
93+
TestCase::assertSame([$routeIndependentMiddleware], $middlewares);
94+
95+
return $requestHandler->handle($req);
96+
}
97+
),
10398
]);
10499

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

110105
$application = new Application([
111-
$routeIndependMiddleware,
106+
$routeIndependentMiddleware,
112107
], $middlewareDispatcher, $requestHandler);
113108

114109
self::assertSame($response, $application->handle($request));
115110
}
116111

117112
public function testEmit(): void
118113
{
114+
$builder = new MockObjectBuilder();
115+
119116
/** @var MockObject|ResponseInterface $response */
120-
$response = $this->getMockByCalls(ResponseInterface::class);
117+
$response = $builder->create(ResponseInterface::class, []);
121118

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

127124
$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)