Skip to content

Commit 0d807d3

Browse files
committed
refactor: add data provider method
1 parent 35b2913 commit 0d807d3

File tree

1 file changed

+88
-24
lines changed

1 file changed

+88
-24
lines changed

test/suite/unit/Output/Copy/Serializer/QuerySerializerTest.php

+88-24
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace DoclerLabs\ApiClientGenerator\Test\Unit\Output\Copy\Serializer;
66

77
use DateTimeImmutable;
8+
use DateTimeInterface;
89
use DateTimeZone;
910
use DoclerLabs\ApiClientGenerator\Output\Copy\Request\RequestInterface;
1011
use DoclerLabs\ApiClientGenerator\Output\Copy\Schema\SerializableInterface;
@@ -21,41 +22,104 @@ protected function setUp(): void
2122
$this->sut = new QuerySerializer();
2223
}
2324

24-
public function testSerialization(): void
25+
/**
26+
* @dataProvider dataProvider
27+
*/
28+
public function testSerialization(array $rawQueryParameters, array $expected): void
29+
{
30+
$request = $this->createMock(RequestInterface::class);
31+
$request->expects(self::once())
32+
->method('getRawQueryParameters')
33+
->willReturn($rawQueryParameters);
34+
35+
parse_str($this->sut->serializeRequest($request), $actual);
36+
self::assertSame(
37+
$expected,
38+
$actual
39+
);
40+
}
41+
42+
public function dataProvider(): array
2543
{
2644
$serializable = $this->createMock(SerializableInterface::class);
27-
$serializable->expects($this->once())
45+
$serializable->expects(self::once())
2846
->method('toArray')
29-
->willReturn(['foo' => 'bar']);
47+
->willReturn($serialized = ['foo' => 'bar']);
3048

3149
$jsonSerializable = $this->createMock(JsonSerializable::class);
32-
$jsonSerializable->expects($this->once())
50+
$jsonSerializable->expects(self::once())
3351
->method('jsonSerialize')
34-
->willReturn(['bar' => 'foo']);
52+
->willReturn($jsonSerialized = ['bar' => 'foo']);
3553

36-
$request = $this->createMock(RequestInterface::class);
37-
$request->expects($this->once())
38-
->method('getRawQueryParameters')
39-
->willReturn(
54+
return [
55+
'DateTime' => [
4056
[
41-
'dateTime' => new DateTimeImmutable(
57+
'dateTime' => $dateTime = new DateTimeImmutable(
4258
'2020-11-24 01:02:03',
4359
new DateTimeZone('Europe/Luxembourg')
4460
),
45-
'nullable' => null,
46-
'integer' => 11,
47-
'string' => 'simple string',
48-
'float' => 42.13,
49-
'booleanTrue' => true,
50-
'booleanFalse' => false,
51-
'serializable' => $serializable,
52-
'jsonSerializable' => $jsonSerializable,
53-
]
54-
);
61+
],
62+
[
63+
'dateTime' => $dateTime->format(DateTimeInterface::RFC3339),
64+
],
65+
],
66+
'Nullable' => [
67+
[
68+
'nullable' => null,
69+
],
70+
[],
71+
],
72+
'Integer' => [
73+
[
74+
'integer' => $integer = 11,
75+
],
76+
[
77+
'integer' => (string)$integer,
78+
],
79+
],
80+
'String' => [
81+
[
82+
'string' => $string = 'simple string',
83+
],
84+
[
85+
'string' => $string,
86+
],
87+
],
88+
'Float' => [
89+
[
90+
'float' => $float = 42.13,
91+
],
92+
[
93+
'float' => (string)$float,
94+
],
95+
],
96+
'Boolean' => [
97+
[
98+
'booleanTrue' => $booleanTrue = true,
99+
'booleanFalse' => $booleanFalse = false,
100+
],
101+
[
102+
'booleanTrue' => (string)(int)$booleanTrue,
103+
'booleanFalse' => (string)(int)$booleanFalse,
104+
],
105+
],
106+
'Serializable interface' => [
107+
[
108+
'serializable' => $serializable,
55109

56-
$this->assertEquals(
57-
'dateTime=2020-11-24T01%3A02%3A03%2B01%3A00&integer=11&string=simple%20string&float=42.13&booleanTrue=1&booleanFalse=0&serializable%5Bfoo%5D=bar&jsonSerializable%5Bbar%5D=foo',
58-
$this->sut->serializeRequest($request)
59-
);
110+
],
111+
[
112+
'serializable' => $serialized,
113+
],
114+
],
115+
'JsonSerializable interface' => [
116+
[
117+
'jsonSerializable' => $jsonSerializable,
118+
],
119+
[
120+
'jsonSerializable' => $jsonSerialized,
121+
],
122+
],
123+
];
60124
}
61125
}

0 commit comments

Comments
 (0)