Skip to content

Commit 7cb114a

Browse files
committed
Add static analysis tests that cover all scenarios
1 parent 2dcb7f3 commit 7cb114a

3 files changed

Lines changed: 49 additions & 3 deletions

File tree

psalm.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99
<projectFiles>
1010
<directory name="src" />
1111
<directory name="examples" />
12+
<directory name="static-analysis" />
1213
<ignoreFiles>
13-
<directory name="vendor" />
1414
<directory name="tests" />
15+
<directory name="vendor" />
1516
</ignoreFiles>
1617
</projectFiles>
1718
<stubs>
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Phpro\HttpTools\StaticAnalysis\Transport\Serializer;
6+
7+
use Phpro\HttpTools\Request\Request;
8+
use Phpro\HttpTools\Serializer\SerializerInterface;
9+
use Phpro\HttpTools\Transport\Serializer\SerializerTransport;
10+
use Phpro\HttpTools\Transport\TransportInterface;
11+
12+
final class Foo
13+
{
14+
}
15+
16+
/**
17+
* @param SerializerTransport<Foo, null> $x
18+
*
19+
* @return null
20+
*/
21+
function testEmptySerializer(SerializerTransport $x)
22+
{
23+
return $x(new Request('GET', '/', [], new Foo()));
24+
}
25+
26+
/**
27+
* @param SerializerTransport<Foo, Foo> $x
28+
*/
29+
function testTargetSerializer(SerializerTransport $x): Foo
30+
{
31+
return $x(new Request('GET', '/', [], new Foo()));
32+
}
33+
34+
/**
35+
* @param TransportInterface<string, string> $transport
36+
*/
37+
function test(SerializerInterface $serializer, TransportInterface $transport): void
38+
{
39+
/** @var SerializerTransport<Foo, null> $serializerTransport */
40+
$serializerTransport = new SerializerTransport($serializer, $transport);
41+
42+
testEmptySerializer($serializerTransport);
43+
44+
testTargetSerializer($serializerTransport->withOutputType(Foo::class));
45+
}

tests/Unit/Transport/Serializer/SerializerTransportTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public function it_can_serialize_request_and_deserialize_response_body_and_trans
7070
public function it_can_handle_requests_without_request_object(): void
7171
{
7272
$valueObject = new SomeValueObject('Hello', 'World');
73-
$jsonData = \Safe\json_encode($data = ['x' => 'Hello', 'y' => 'World']);
73+
$jsonData = Json\encode($data = ['x' => 'Hello', 'y' => 'World']);
7474
$request = $this->createToolsRequest('GET', '/', []);
7575

7676
$this->client->on(
@@ -90,7 +90,7 @@ public function it_can_handle_requests_without_request_object(): void
9090
public function it_can_handle_requests_without_response_type(): void
9191
{
9292
$valueObject = new SomeValueObject('Hello', 'World');
93-
$jsonData = \Safe\json_encode($data = ['x' => 'Hello', 'y' => 'World']);
93+
$jsonData = Json\encode($data = ['x' => 'Hello', 'y' => 'World']);
9494
$request = $this->createToolsRequest('GET', '/', [], $valueObject);
9595

9696
$this->client->on(

0 commit comments

Comments
 (0)