@@ -39,8 +39,7 @@ public function testOnKernelViewWithControllerResultAndPersist()
39
39
$ iriConverterProphecy = $ this ->prophesize (IriConverterInterface::class);
40
40
$ iriConverterProphecy ->getIriFromItem ($ dummy )->willReturn ('/dummy/1 ' )->shouldBeCalled ();
41
41
42
- $ request = new Request ();
43
- $ request ->attributes ->set ('_api_resource_class ' , Dummy::class);
42
+ $ request = new Request ([], [], ['_api_resource_class ' => Dummy::class]);
44
43
45
44
$ event = new GetResponseForControllerResultEvent (
46
45
$ this ->prophesize (HttpKernelInterface::class)->reveal (),
@@ -51,6 +50,7 @@ public function testOnKernelViewWithControllerResultAndPersist()
51
50
52
51
foreach (['PATCH ' , 'PUT ' , 'POST ' ] as $ httpMethod ) {
53
52
$ request ->setMethod ($ httpMethod );
53
+ $ request ->attributes ->set (sprintf ('_api_%s_operation_name ' , 'POST ' === $ httpMethod ? 'collection ' : 'item ' ), strtolower ($ httpMethod ));
54
54
55
55
(new WriteListener ($ dataPersisterProphecy ->reveal (), $ iriConverterProphecy ->reveal ()))->onKernelView ($ event );
56
56
$ this ->assertSame ($ dummy , $ event ->getControllerResult ());
@@ -71,8 +71,7 @@ public function testOnKernelViewWithControllerResultAndPersistReturningVoid()
71
71
$ dataPersisterProphecy ->supports ($ dummy )->willReturn (true )->shouldBeCalled ();
72
72
$ dataPersisterProphecy ->persist ($ dummy )->shouldBeCalled ();
73
73
74
- $ request = new Request ();
75
- $ request ->attributes ->set ('_api_resource_class ' , Dummy::class);
74
+ $ request = new Request ([], [], ['_api_resource_class ' => Dummy::class]);
76
75
77
76
$ event = new GetResponseForControllerResultEvent (
78
77
$ this ->prophesize (HttpKernelInterface::class)->reveal (),
@@ -83,6 +82,7 @@ public function testOnKernelViewWithControllerResultAndPersistReturningVoid()
83
82
84
83
foreach (['PATCH ' , 'PUT ' , 'POST ' ] as $ httpMethod ) {
85
84
$ request ->setMethod ($ httpMethod );
85
+ $ request ->attributes ->set (sprintf ('_api_%s_operation_name ' , 'POST ' === $ httpMethod ? 'collection ' : 'item ' ), strtolower ($ httpMethod ));
86
86
87
87
(new WriteListener ($ dataPersisterProphecy ->reveal ()))->onKernelView ($ event );
88
88
$ this ->assertSame ($ dummy , $ event ->getControllerResult ());
@@ -112,8 +112,7 @@ public function testOnKernelViewWithControllerResultAndPersistWithImmutableResou
112
112
->shouldBeCalled ()
113
113
;
114
114
115
- $ request = new Request ();
116
- $ request ->attributes ->set ('_api_resource_class ' , Dummy::class);
115
+ $ request = new Request ([], [], ['_api_resource_class ' => Dummy::class]);
117
116
118
117
foreach (['PATCH ' , 'PUT ' , 'POST ' ] as $ httpMethod ) {
119
118
$ event = new GetResponseForControllerResultEvent (
@@ -124,6 +123,7 @@ public function testOnKernelViewWithControllerResultAndPersistWithImmutableResou
124
123
);
125
124
126
125
$ request ->setMethod ($ httpMethod );
126
+ $ request ->attributes ->set (sprintf ('_api_%s_operation_name ' , 'POST ' === $ httpMethod ? 'collection ' : 'item ' ), strtolower ($ httpMethod ));
127
127
128
128
(new WriteListener ($ dataPersisterProphecy ->reveal (), $ iriConverterProphecy ->reveal ()))->onKernelView ($ event );
129
129
@@ -132,6 +132,32 @@ public function testOnKernelViewWithControllerResultAndPersistWithImmutableResou
132
132
}
133
133
}
134
134
135
+ public function testOnKernelViewDoNotCallIriConverterWhenOutputClassDisabled ()
136
+ {
137
+ $ dummy = new Dummy ();
138
+ $ dummy ->setName ('Dummyrino ' );
139
+
140
+ $ dataPersisterProphecy = $ this ->prophesize (DataPersisterInterface::class);
141
+ $ dataPersisterProphecy ->supports ($ dummy )->willReturn (true )->shouldBeCalled ();
142
+
143
+ $ iriConverterProphecy = $ this ->prophesize (IriConverterInterface::class);
144
+ $ iriConverterProphecy ->getIriFromItem ($ dummy )->shouldNotBeCalled ();
145
+
146
+ $ dataPersisterProphecy ->persist ($ dummy )->willReturn ($ dummy )->shouldBeCalled ();
147
+
148
+ $ request = new Request ([], [], ['_api_resource_class ' => Dummy::class, '_api_collection_operation_name ' => 'post ' , '_api_output_class ' => false ]);
149
+ $ request ->setMethod ('POST ' );
150
+
151
+ $ event = new GetResponseForControllerResultEvent (
152
+ $ this ->prophesize (HttpKernelInterface::class)->reveal (),
153
+ $ request ,
154
+ HttpKernelInterface::MASTER_REQUEST ,
155
+ $ dummy
156
+ );
157
+
158
+ (new WriteListener ($ dataPersisterProphecy ->reveal (), $ iriConverterProphecy ->reveal ()))->onKernelView ($ event );
159
+ }
160
+
135
161
public function testOnKernelViewWithControllerResultAndRemove ()
136
162
{
137
163
$ dummy = new Dummy ();
@@ -144,9 +170,8 @@ public function testOnKernelViewWithControllerResultAndRemove()
144
170
$ iriConverterProphecy = $ this ->prophesize (IriConverterInterface::class);
145
171
$ iriConverterProphecy ->getIriFromItem ($ dummy )->shouldNotBeCalled ();
146
172
147
- $ request = new Request ();
173
+ $ request = new Request ([], [], [ ' _api_resource_class ' => Dummy::class, ' _api_item_operation_name ' => ' delete ' ] );
148
174
$ request ->setMethod ('DELETE ' );
149
- $ request ->attributes ->set ('_api_resource_class ' , Dummy::class);
150
175
151
176
$ event = new GetResponseForControllerResultEvent (
152
177
$ this ->prophesize (HttpKernelInterface::class)->reveal (),
@@ -171,9 +196,8 @@ public function testOnKernelViewWithSafeMethod()
171
196
$ iriConverterProphecy = $ this ->prophesize (IriConverterInterface::class);
172
197
$ iriConverterProphecy ->getIriFromItem ($ dummy )->shouldNotBeCalled ();
173
198
174
- $ request = new Request ();
199
+ $ request = new Request ([], [], [ ' _api_resource_class ' => Dummy::class, ' _api_item_operation_name ' => ' head ' ] );
175
200
$ request ->setMethod ('HEAD ' );
176
- $ request ->attributes ->set ('_api_resource_class ' , Dummy::class);
177
201
178
202
$ event = new GetResponseForControllerResultEvent (
179
203
$ this ->prophesize (HttpKernelInterface::class)->reveal (),
@@ -198,10 +222,8 @@ public function testOnKernelViewWithPersistFlagOff()
198
222
$ iriConverterProphecy = $ this ->prophesize (IriConverterInterface::class);
199
223
$ iriConverterProphecy ->getIriFromItem ($ dummy )->shouldNotBeCalled ();
200
224
201
- $ request = new Request ();
225
+ $ request = new Request ([], [], [ ' _api_resource_class ' => Dummy::class, ' _api_item_operation_name ' => ' head ' , ' _api_persist ' => false ] );
202
226
$ request ->setMethod ('HEAD ' );
203
- $ request ->attributes ->set ('_api_resource_class ' , Dummy::class);
204
- $ request ->attributes ->set ('_api_persist ' , false );
205
227
206
228
$ event = new GetResponseForControllerResultEvent (
207
229
$ this ->prophesize (HttpKernelInterface::class)->reveal (),
@@ -252,9 +274,8 @@ public function testOnKernelViewWithNoDataPersisterSupport()
252
274
$ iriConverterProphecy = $ this ->prophesize (IriConverterInterface::class);
253
275
$ iriConverterProphecy ->getIriFromItem ($ dummy )->shouldNotBeCalled ();
254
276
255
- $ request = new Request ();
277
+ $ request = new Request ([], [], [ ' _api_resource_class ' => ' Dummy ' , ' _api_collection_operation_name ' => ' post ' ] );
256
278
$ request ->setMethod ('POST ' );
257
- $ request ->attributes ->set ('_api_resource_class ' , 'Dummy ' );
258
279
259
280
$ event = new GetResponseForControllerResultEvent (
260
281
$ this ->prophesize (HttpKernelInterface::class)->reveal (),
0 commit comments