Skip to content

Commit 38be0c1

Browse files
authored
Merge pull request #8 from chubbyphp/chubbyphp-mock-v2
chubbyphp-mock-v2
2 parents ebf7795 + ae382f9 commit 38be0c1

8 files changed

Lines changed: 321 additions & 314 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ jobs:
4040
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4141
STRYKER_DASHBOARD_API_KEY: ${{ secrets.STRYKER_DASHBOARD_API_KEY }}
4242
- name: sonarcloud.io
43-
uses: sonarsource/sonarqube-scan-action@v4.1.0
43+
uses: sonarsource/sonarqube-scan-action@v5.0.0
4444
env:
4545
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4646
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ A request handler adapter for swoole, using PSR-7, PSR-15 and PSR-17.
2626
## Requirements
2727

2828
* php: ^8.2
29-
* [ext-swoole][2]: ^5.1.6|6.0.0-RC1|^6.0
29+
* [ext-swoole][2]: ^5.1.7|^6.0
3030
* [dflydev/fig-cookies][3]: ^3.1
3131
* [psr/http-factory][4]: ^1.1
3232
* [psr/http-message][5]: ^1.1|^2.0

composer.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,23 @@
1818
],
1919
"require": {
2020
"php": "^8.2",
21-
"ext-swoole": "^5.1.6|6.0.0-RC1|^6.0",
21+
"ext-swoole": "^5.1.7|^6.0",
2222
"dflydev/fig-cookies": "^3.1",
2323
"psr/http-factory": "^1.1",
2424
"psr/http-message": "^1.1|^2.0",
2525
"psr/http-server-handler": "^1.0.2",
2626
"psr/log": "^2.0|^3.0.2"
2727
},
2828
"require-dev": {
29-
"blackfire/php-sdk": "^2.5.4",
29+
"blackfire/php-sdk": "^2.5.7",
3030
"chubbyphp/chubbyphp-dev-helper": "dev-master",
31-
"chubbyphp/chubbyphp-mock": "^1.8",
32-
"infection/infection": "^0.29.8",
31+
"chubbyphp/chubbyphp-mock": "^2.0@dev",
32+
"infection/infection": "^0.29.12",
3333
"php-coveralls/php-coveralls": "^2.7",
3434
"phpstan/extension-installer": "^1.4.3",
35-
"phpstan/phpstan": "^2.0.3",
36-
"phpunit/phpunit": "^11.5.0",
37-
"swoole/ide-helper": "^5.1.6|^6.0.0-RC1|^6.0"
35+
"phpstan/phpstan": "^2.1.6",
36+
"phpunit/phpunit": "^11.5.9",
37+
"swoole/ide-helper": "^5.1.7|^6.0"
3838
},
3939
"autoload": {
4040
"psr-4": {

tests/Unit/Adapter/BlackfireOnRequestAdapterTest.php

Lines changed: 96 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@
88
use Blackfire\Exception\LogicException;
99
use Blackfire\Probe;
1010
use Blackfire\Profile\Configuration;
11-
use Chubbyphp\Mock\Argument\ArgumentInstanceOf;
12-
use Chubbyphp\Mock\Call;
13-
use Chubbyphp\Mock\MockByCallsTrait;
11+
use Chubbyphp\Mock\MockMethod\WithCallback;
12+
use Chubbyphp\Mock\MockMethod\WithException;
13+
use Chubbyphp\Mock\MockMethod\WithoutReturn;
14+
use Chubbyphp\Mock\MockMethod\WithReturn;
15+
use Chubbyphp\Mock\MockObjectBuilder;
1416
use Chubbyphp\SwooleRequestHandler\Adapter\BlackfireOnRequestAdapter;
1517
use Chubbyphp\SwooleRequestHandler\OnRequestInterface;
16-
use PHPUnit\Framework\MockObject\MockObject;
18+
use PHPUnit\Framework\Attributes\DoesNotPerformAssertions;
1719
use PHPUnit\Framework\TestCase;
1820
use Psr\Log\LoggerInterface;
1921
use Swoole\Http\Request as SwooleRequest;
@@ -26,152 +28,168 @@
2628
*/
2729
final class BlackfireOnRequestAdapterTest extends TestCase
2830
{
29-
use MockByCallsTrait;
30-
31+
#[DoesNotPerformAssertions]
3132
public function testInvokeWithoutHeaderWithoutConfigAndWithoutLogger(): void
3233
{
33-
/** @var MockObject|SwooleRequest $swooleRequest */
34-
$swooleRequest = $this->getMockByCalls(SwooleRequest::class);
34+
$builder = new MockObjectBuilder();
35+
36+
/** @var SwooleRequest $swooleRequest */
37+
$swooleRequest = $builder->create(SwooleRequest::class, []);
3538

36-
/** @var MockObject|SwooleResponse $swooleResponse */
37-
$swooleResponse = $this->getMockByCalls(SwooleResponse::class);
39+
/** @var SwooleResponse $swooleResponse */
40+
$swooleResponse = $builder->create(SwooleResponse::class, []);
3841

39-
/** @var MockObject|OnRequestInterface $onRequest */
40-
$onRequest = $this->getMockByCalls(OnRequestInterface::class, [
41-
Call::create('__invoke')->with($swooleRequest, $swooleResponse),
42+
/** @var OnRequestInterface $onRequest */
43+
$onRequest = $builder->create(OnRequestInterface::class, [
44+
new WithoutReturn('__invoke', [$swooleRequest, $swooleResponse]),
4245
]);
4346

44-
/** @var Client|MockObject $client */
45-
$client = $this->getMockByCalls(Client::class);
47+
/** @var Client $client */
48+
$client = $builder->create(Client::class, []);
4649

4750
$adapter = new BlackfireOnRequestAdapter($onRequest, $client);
4851
$adapter($swooleRequest, $swooleResponse);
4952
}
5053

5154
public function testInvokeWithoutConfigAndWithoutLogger(): void
5255
{
53-
/** @var MockObject|SwooleRequest $swooleRequest */
54-
$swooleRequest = $this->getMockByCalls(SwooleRequest::class);
56+
$builder = new MockObjectBuilder();
57+
58+
/** @var SwooleRequest $swooleRequest */
59+
$swooleRequest = $builder->create(SwooleRequest::class, []);
5560
$swooleRequest->header['x-blackfire-query'] = 'swoole';
5661

57-
/** @var MockObject|SwooleResponse $swooleResponse */
58-
$swooleResponse = $this->getMockByCalls(SwooleResponse::class);
62+
/** @var SwooleResponse $swooleResponse */
63+
$swooleResponse = $builder->create(SwooleResponse::class, []);
5964

60-
/** @var MockObject|OnRequestInterface $onRequest */
61-
$onRequest = $this->getMockByCalls(OnRequestInterface::class, [
62-
Call::create('__invoke')->with($swooleRequest, $swooleResponse),
65+
/** @var OnRequestInterface $onRequest */
66+
$onRequest = $builder->create(OnRequestInterface::class, [
67+
new WithoutReturn('__invoke', [$swooleRequest, $swooleResponse]),
6368
]);
6469

65-
/** @var MockObject|Probe $probe */
66-
$probe = $this->getMockByCalls(Probe::class);
70+
/** @var Probe $probe */
71+
$probe = $builder->create(Probe::class, []);
72+
73+
/** @var Client $client */
74+
$client = $builder->create(Client::class, [
75+
new WithCallback('createProbe', static function (Configuration $config, bool $enable) use ($probe): Probe {
76+
self::assertTrue($enable);
6777

68-
/** @var Client|MockObject $client */
69-
$client = $this->getMockByCalls(Client::class, [
70-
Call::create('createProbe')->with(new ArgumentInstanceOf(Configuration::class), true)->willReturn($probe),
71-
Call::create('endProbe')->with($probe),
78+
return $probe;
79+
}),
80+
new WithoutReturn('endProbe', [$probe]),
7281
]);
7382

7483
$adapter = new BlackfireOnRequestAdapter($onRequest, $client);
7584
$adapter($swooleRequest, $swooleResponse);
7685
}
7786

87+
#[DoesNotPerformAssertions]
7888
public function testInvokeWithConfigAndWithLogger(): void
7989
{
80-
/** @var MockObject|SwooleRequest $swooleRequest */
81-
$swooleRequest = $this->getMockByCalls(SwooleRequest::class);
90+
$builder = new MockObjectBuilder();
91+
92+
/** @var SwooleRequest $swooleRequest */
93+
$swooleRequest = $builder->create(SwooleRequest::class, []);
8294
$swooleRequest->header['x-blackfire-query'] = 'swoole';
8395

84-
/** @var MockObject|SwooleResponse $swooleResponse */
85-
$swooleResponse = $this->getMockByCalls(SwooleResponse::class);
96+
/** @var SwooleResponse $swooleResponse */
97+
$swooleResponse = $builder->create(SwooleResponse::class, []);
8698

87-
/** @var MockObject|OnRequestInterface $onRequest */
88-
$onRequest = $this->getMockByCalls(OnRequestInterface::class, [
89-
Call::create('__invoke')->with($swooleRequest, $swooleResponse),
99+
/** @var OnRequestInterface $onRequest */
100+
$onRequest = $builder->create(OnRequestInterface::class, [
101+
new WithoutReturn('__invoke', [$swooleRequest, $swooleResponse]),
90102
]);
91103

92-
/** @var Configuration|MockObject $config */
93-
$config = $this->getMockByCalls(Configuration::class);
104+
/** @var Configuration $config */
105+
$config = $builder->create(Configuration::class, []);
94106

95-
/** @var MockObject|Probe $probe */
96-
$probe = $this->getMockByCalls(Probe::class);
107+
/** @var Probe $probe */
108+
$probe = $builder->create(Probe::class, []);
97109

98-
/** @var Client|MockObject $client */
99-
$client = $this->getMockByCalls(Client::class, [
100-
Call::create('createProbe')->with($config, true)->willReturn($probe),
101-
Call::create('endProbe')->with($probe),
110+
/** @var Client $client */
111+
$client = $builder->create(Client::class, [
112+
new WithReturn('createProbe', [$config, true], $probe),
113+
new WithoutReturn('endProbe', [$probe]),
102114
]);
103115

104-
/** @var LoggerInterface|MockObject $logger */
105-
$logger = $this->getMockByCalls(LoggerInterface::class);
116+
/** @var LoggerInterface $logger */
117+
$logger = $builder->create(LoggerInterface::class, []);
106118

107119
$adapter = new BlackfireOnRequestAdapter($onRequest, $client, $config, $logger);
108120
$adapter($swooleRequest, $swooleResponse);
109121
}
110122

123+
#[DoesNotPerformAssertions]
111124
public function testInvokeWithExceptionOnCreateProbe(): void
112125
{
113-
/** @var MockObject|SwooleRequest $swooleRequest */
114-
$swooleRequest = $this->getMockByCalls(SwooleRequest::class);
126+
$builder = new MockObjectBuilder();
127+
128+
/** @var SwooleRequest $swooleRequest */
129+
$swooleRequest = $builder->create(SwooleRequest::class, []);
115130
$swooleRequest->header['x-blackfire-query'] = 'swoole';
116131

117-
/** @var MockObject|SwooleResponse $swooleResponse */
118-
$swooleResponse = $this->getMockByCalls(SwooleResponse::class);
132+
/** @var SwooleResponse $swooleResponse */
133+
$swooleResponse = $builder->create(SwooleResponse::class, []);
119134

120-
/** @var MockObject|OnRequestInterface $onRequest */
121-
$onRequest = $this->getMockByCalls(OnRequestInterface::class, [
122-
Call::create('__invoke')->with($swooleRequest, $swooleResponse),
135+
/** @var OnRequestInterface $onRequest */
136+
$onRequest = $builder->create(OnRequestInterface::class, [
137+
new WithoutReturn('__invoke', [$swooleRequest, $swooleResponse]),
123138
]);
124139

125-
/** @var Configuration|MockObject $config */
126-
$config = $this->getMockByCalls(Configuration::class);
140+
/** @var Configuration $config */
141+
$config = $builder->create(Configuration::class, []);
127142

128143
$exception = new LogicException('Something went wrong');
129144

130-
/** @var Client|MockObject $client */
131-
$client = $this->getMockByCalls(Client::class, [
132-
Call::create('createProbe')->with($config, true)->willThrowException($exception),
145+
/** @var Client $client */
146+
$client = $builder->create(Client::class, [
147+
new WithException('createProbe', [$config, true], $exception),
133148
]);
134149

135-
/** @var LoggerInterface|MockObject $logger */
136-
$logger = $this->getMockByCalls(LoggerInterface::class, [
137-
Call::create('error')->with('Blackfire exception: Something went wrong', []),
150+
/** @var LoggerInterface $logger */
151+
$logger = $builder->create(LoggerInterface::class, [
152+
new WithoutReturn('error', ['Blackfire exception: Something went wrong', []]),
138153
]);
139154

140155
$adapter = new BlackfireOnRequestAdapter($onRequest, $client, $config, $logger);
141156
$adapter($swooleRequest, $swooleResponse);
142157
}
143158

159+
#[DoesNotPerformAssertions]
144160
public function testInvokeWithExceptionOnProbeEnd(): void
145161
{
146-
/** @var MockObject|SwooleRequest $swooleRequest */
147-
$swooleRequest = $this->getMockByCalls(SwooleRequest::class);
162+
$builder = new MockObjectBuilder();
163+
164+
/** @var SwooleRequest $swooleRequest */
165+
$swooleRequest = $builder->create(SwooleRequest::class, []);
148166
$swooleRequest->header['x-blackfire-query'] = 'swoole';
149167

150-
/** @var MockObject|SwooleResponse $swooleResponse */
151-
$swooleResponse = $this->getMockByCalls(SwooleResponse::class);
168+
/** @var SwooleResponse $swooleResponse */
169+
$swooleResponse = $builder->create(SwooleResponse::class, []);
152170

153-
/** @var MockObject|OnRequestInterface $onRequest */
154-
$onRequest = $this->getMockByCalls(OnRequestInterface::class, [
155-
Call::create('__invoke')->with($swooleRequest, $swooleResponse),
171+
/** @var OnRequestInterface $onRequest */
172+
$onRequest = $builder->create(OnRequestInterface::class, [
173+
new WithoutReturn('__invoke', [$swooleRequest, $swooleResponse]),
156174
]);
157175

158-
/** @var Configuration|MockObject $config */
159-
$config = $this->getMockByCalls(Configuration::class);
176+
/** @var Configuration $config */
177+
$config = $builder->create(Configuration::class, []);
160178

161-
/** @var MockObject|Probe $probe */
162-
$probe = $this->getMockByCalls(Probe::class);
179+
/** @var Probe $probe */
180+
$probe = $builder->create(Probe::class, []);
163181

164182
$exception = new LogicException('Something went wrong');
165183

166-
/** @var Client|MockObject $client */
167-
$client = $this->getMockByCalls(Client::class, [
168-
Call::create('createProbe')->with($config, true)->willReturn($probe),
169-
Call::create('endProbe')->with($probe)->willThrowException($exception),
184+
/** @var Client $client */
185+
$client = $builder->create(Client::class, [
186+
new WithReturn('createProbe', [$config, true], $probe),
187+
new WithException('endProbe', [$probe], $exception),
170188
]);
171189

172-
/** @var LoggerInterface|MockObject $logger */
173-
$logger = $this->getMockByCalls(LoggerInterface::class, [
174-
Call::create('error')->with('Blackfire exception: Something went wrong', []),
190+
/** @var LoggerInterface $logger */
191+
$logger = $builder->create(LoggerInterface::class, [
192+
new WithoutReturn('error', ['Blackfire exception: Something went wrong', []]),
175193
]);
176194

177195
$adapter = new BlackfireOnRequestAdapter($onRequest, $client, $config, $logger);

tests/Unit/Adapter/NewRelicOnRequestAdapterTest.php

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,14 +69,13 @@ function newrelic_end_transaction(bool $ignore = false): void
6969

7070
namespace Chubbyphp\Tests\SwooleRequestHandler\Unit\Adapter
7171
{
72-
use Chubbyphp\Mock\Call;
73-
use Chubbyphp\Mock\MockByCallsTrait;
72+
use Chubbyphp\Mock\MockMethod\WithoutReturn;
73+
use Chubbyphp\Mock\MockObjectBuilder;
7474
use Chubbyphp\SwooleRequestHandler\Adapter\NewRelicOnRequestAdapter;
7575
use Chubbyphp\SwooleRequestHandler\Adapter\TestNewRelicEndTransaction;
7676
use Chubbyphp\SwooleRequestHandler\Adapter\TestNewRelicStartTransaction;
7777
use Chubbyphp\SwooleRequestHandler\OnRequestInterface;
7878
use PHPUnit\Framework\TestCase;
79-
use PHPUnit\SwooleRequestHandler\MockObject\MockObject;
8079
use Swoole\Http\Request as SwooleRequest;
8180
use Swoole\Http\Response as SwooleResponse;
8281

@@ -87,22 +86,22 @@ function newrelic_end_transaction(bool $ignore = false): void
8786
*/
8887
final class NewRelicOnRequestAdapterTest extends TestCase
8988
{
90-
use MockByCallsTrait;
91-
9289
public function testInvoke(): void
9390
{
9491
TestNewRelicStartTransaction::reset();
9592
TestNewRelicEndTransaction::reset();
9693

97-
/** @var MockObject|SwooleRequest $swooleRequest */
98-
$swooleRequest = $this->getMockByCalls(SwooleRequest::class);
94+
$builder = new MockObjectBuilder();
95+
96+
/** @var SwooleRequest $swooleRequest */
97+
$swooleRequest = $builder->create(SwooleRequest::class, []);
9998

100-
/** @var MockObject|SwooleResponse $swooleResponse */
101-
$swooleResponse = $this->getMockByCalls(SwooleResponse::class);
99+
/** @var SwooleResponse $swooleResponse */
100+
$swooleResponse = $builder->create(SwooleResponse::class, []);
102101

103-
/** @var MockObject|OnRequestInterface $onRequest */
104-
$onRequest = $this->getMockByCalls(OnRequestInterface::class, [
105-
Call::create('__invoke')->with($swooleRequest, $swooleResponse),
102+
/** @var OnRequestInterface $onRequest */
103+
$onRequest = $builder->create(OnRequestInterface::class, [
104+
new WithoutReturn('__invoke', [$swooleRequest, $swooleResponse]),
106105
]);
107106

108107
$adapter = new NewRelicOnRequestAdapter($onRequest, 'myapp');

0 commit comments

Comments
 (0)