@@ -29,40 +29,38 @@ class TypeFactoryTest extends TestCase
29
29
public function testGetType (array $ schema , Type $ type ): void
30
30
{
31
31
$ typeFactory = new TypeFactory ();
32
- $ this ->assertSame ($ schema , $ typeFactory ->getType ($ type ));
32
+ $ this ->assertEquals ($ schema , $ typeFactory ->getType ($ type ));
33
33
}
34
34
35
35
public function typeProvider (): iterable
36
36
{
37
37
yield [['type ' => 'integer ' ], new Type (Type::BUILTIN_TYPE_INT )];
38
- yield [['oneOf ' => [[ ' type ' => ' null ' ], [ 'type ' => 'integer ' ]] ], new Type (Type::BUILTIN_TYPE_INT , true )];
38
+ yield [['nullable ' => true , 'type ' => 'integer ' ], new Type (Type::BUILTIN_TYPE_INT , true )];
39
39
yield [['type ' => 'number ' ], new Type (Type::BUILTIN_TYPE_FLOAT )];
40
- yield [['oneOf ' => [[ ' type ' => ' null ' ], [ 'type ' => 'number ' ]] ], new Type (Type::BUILTIN_TYPE_FLOAT , true )];
40
+ yield [['nullable ' => true , 'type ' => 'number ' ], new Type (Type::BUILTIN_TYPE_FLOAT , true )];
41
41
yield [['type ' => 'boolean ' ], new Type (Type::BUILTIN_TYPE_BOOL )];
42
- yield [['oneOf ' => [[ ' type ' => ' null ' ], [ 'type ' => 'boolean ' ]] ], new Type (Type::BUILTIN_TYPE_BOOL , true )];
42
+ yield [['nullable ' => true , 'type ' => 'boolean ' ], new Type (Type::BUILTIN_TYPE_BOOL , true )];
43
43
yield [['type ' => 'string ' ], new Type (Type::BUILTIN_TYPE_STRING )];
44
- yield [['oneOf ' => [[ ' type ' => ' null ' ], [ 'type ' => 'string ' ]] ], new Type (Type::BUILTIN_TYPE_STRING , true )];
44
+ yield [['nullable ' => true , 'type ' => 'string ' ], new Type (Type::BUILTIN_TYPE_STRING , true )];
45
45
yield [['type ' => 'object ' ], new Type (Type::BUILTIN_TYPE_OBJECT )];
46
- yield [['oneOf ' => [[ ' type ' => ' null ' ], [ 'type ' => 'object ' ]] ], new Type (Type::BUILTIN_TYPE_OBJECT , true )];
46
+ yield [['nullable ' => true , 'type ' => 'object ' ], new Type (Type::BUILTIN_TYPE_OBJECT , true )];
47
47
yield [['type ' => 'string ' , 'format ' => 'date-time ' ], new Type (Type::BUILTIN_TYPE_OBJECT , false , \DateTimeImmutable::class)];
48
- yield [['oneOf ' => [[ ' type ' => ' null ' ], [ 'type ' => 'string ' , 'format ' => 'date-time ' ]] ], new Type (Type::BUILTIN_TYPE_OBJECT , true , \DateTimeImmutable::class)];
48
+ yield [['nullable ' => true , 'type ' => 'string ' , 'format ' => 'date-time ' ], new Type (Type::BUILTIN_TYPE_OBJECT , true , \DateTimeImmutable::class)];
49
49
yield [['type ' => 'string ' , 'format ' => 'duration ' ], new Type (Type::BUILTIN_TYPE_OBJECT , false , \DateInterval::class)];
50
50
yield [['type ' => 'object ' ], new Type (Type::BUILTIN_TYPE_OBJECT , false , Dummy::class)];
51
- yield [['oneOf ' => [[ ' type ' => ' null ' ], [ 'type ' => 'object ' ]] ], new Type (Type::BUILTIN_TYPE_OBJECT , true , Dummy::class)];
51
+ yield [['nullable ' => true , 'type ' => 'object ' ], new Type (Type::BUILTIN_TYPE_OBJECT , true , Dummy::class)];
52
52
yield [['type ' => 'array ' , 'items ' => ['type ' => 'string ' ]], new Type (Type::BUILTIN_TYPE_STRING , false , null , true )];
53
53
yield 'array can be itself nullable ' => [
54
- ['oneOf ' => [[ ' type ' => ' null ' ], [ 'type ' => 'array ' , 'items ' => ['type ' => 'string ' ]] ]],
54
+ ['nullable ' => true , 'type ' => 'array ' , 'items ' => ['type ' => 'string ' ]],
55
55
new Type (Type::BUILTIN_TYPE_STRING , true , null , true ),
56
56
];
57
57
58
58
yield 'array can contain nullable values ' => [
59
59
[
60
60
'type ' => 'array ' ,
61
61
'items ' => [
62
- 'oneOf ' => [
63
- ['type ' => 'null ' ],
64
- ['type ' => 'string ' ],
65
- ],
62
+ 'nullable ' => true ,
63
+ 'type ' => 'string ' ,
66
64
],
67
65
],
68
66
new Type (Type::BUILTIN_TYPE_STRING , false , null , true , null , new Type (Type::BUILTIN_TYPE_STRING , true , null , false )),
@@ -81,10 +79,9 @@ public function typeProvider(): iterable
81
79
82
80
yield 'nullable map with string keys becomes a nullable object ' => [
83
81
[
84
- 'oneOf ' => [
85
- ['type ' => 'null ' ],
86
- ['type ' => 'object ' , 'additionalProperties ' => ['type ' => 'string ' ]],
87
- ],
82
+ 'nullable ' => true ,
83
+ 'type ' => 'object ' ,
84
+ 'additionalProperties ' => ['type ' => 'string ' ],
88
85
],
89
86
new Type (
90
87
Type::BUILTIN_TYPE_STRING ,
@@ -112,10 +109,8 @@ public function typeProvider(): iterable
112
109
[
113
110
'type ' => 'object ' ,
114
111
'additionalProperties ' => [
115
- 'oneOf ' => [
116
- ['type ' => 'null ' ],
117
- ['type ' => 'integer ' ],
118
- ],
112
+ 'nullable ' => true ,
113
+ 'type ' => 'integer ' ,
119
114
],
120
115
],
121
116
new Type (
@@ -130,17 +125,11 @@ public function typeProvider(): iterable
130
125
131
126
yield 'nullable map can contain nullable values ' => [
132
127
[
133
- 'oneOf ' => [
134
- ['type ' => 'null ' ],
135
- [
136
- 'type ' => 'object ' ,
137
- 'additionalProperties ' => [
138
- 'oneOf ' => [
139
- ['type ' => 'null ' ],
140
- ['type ' => 'integer ' ],
141
- ],
142
- ],
143
- ],
128
+ 'nullable ' => true ,
129
+ 'type ' => 'object ' ,
130
+ 'additionalProperties ' => [
131
+ 'nullable ' => true ,
132
+ 'type ' => 'integer ' ,
144
133
],
145
134
],
146
135
new Type (
@@ -297,8 +286,8 @@ public function testGetClassTypeWithNullability(): void
297
286
298
287
self ::assertSame (
299
288
[
300
- 'oneOf ' => [
301
- [ ' type ' => ' null ' ],
289
+ 'nullable ' => true ,
290
+ ' anyOf ' => [
302
291
['$ref ' => 'the-ref-name ' ],
303
292
],
304
293
],
0 commit comments