13
13
14
14
namespace ApiPlatform \Core \Tests \EventListener ;
15
15
16
+ use ApiPlatform \Core \Api \IriConverterInterface ;
16
17
use ApiPlatform \Core \DataPersister \DataPersisterInterface ;
17
18
use ApiPlatform \Core \EventListener \WriteListener ;
18
19
use ApiPlatform \Core \Tests \Fixtures \TestBundle \Entity \Dummy ;
@@ -35,6 +36,9 @@ public function testOnKernelViewWithControllerResultAndPersist()
35
36
$ dataPersisterProphecy ->supports ($ dummy )->willReturn (true )->shouldBeCalled ();
36
37
$ dataPersisterProphecy ->persist ($ dummy )->willReturn ($ dummy )->shouldBeCalled ();
37
38
39
+ $ iriConverterProphecy = $ this ->prophesize (IriConverterInterface::class);
40
+ $ iriConverterProphecy ->getIriFromItem ($ dummy )->willReturn ('/dummy/1 ' )->shouldBeCalled ();
41
+
38
42
$ request = new Request ();
39
43
$ request ->attributes ->set ('_api_resource_class ' , Dummy::class);
40
44
@@ -48,8 +52,9 @@ public function testOnKernelViewWithControllerResultAndPersist()
48
52
foreach (['PATCH ' , 'PUT ' , 'POST ' ] as $ httpMethod ) {
49
53
$ request ->setMethod ($ httpMethod );
50
54
51
- (new WriteListener ($ dataPersisterProphecy ->reveal ()))->onKernelView ($ event );
55
+ (new WriteListener ($ dataPersisterProphecy ->reveal (), $ iriConverterProphecy -> reveal () ))->onKernelView ($ event );
52
56
$ this ->assertSame ($ dummy , $ event ->getControllerResult ());
57
+ $ this ->assertEquals ('/dummy/1 ' , $ request ->attributes ->get ('_api_write_item_iri ' ));
53
58
}
54
59
}
55
60
@@ -98,6 +103,9 @@ public function testOnKernelViewWithControllerResultAndPersistWithImmutableResou
98
103
$ dataPersisterProphecy = $ this ->prophesize (DataPersisterInterface::class);
99
104
$ dataPersisterProphecy ->supports ($ dummy )->willReturn (true )->shouldBeCalled ();
100
105
106
+ $ iriConverterProphecy = $ this ->prophesize (IriConverterInterface::class);
107
+ $ iriConverterProphecy ->getIriFromItem ($ dummy )->willReturn ('/dummy/1 ' )->shouldBeCalled ();
108
+
101
109
$ dataPersisterProphecy
102
110
->persist ($ dummy )
103
111
->willReturn ($ dummy2 ) // Persist is not mutating $dummy, but return a brand new technically unrelated object instead
@@ -117,9 +125,10 @@ public function testOnKernelViewWithControllerResultAndPersistWithImmutableResou
117
125
118
126
$ request ->setMethod ($ httpMethod );
119
127
120
- (new WriteListener ($ dataPersisterProphecy ->reveal ()))->onKernelView ($ event );
128
+ (new WriteListener ($ dataPersisterProphecy ->reveal (), $ iriConverterProphecy -> reveal () ))->onKernelView ($ event );
121
129
122
130
$ this ->assertSame ($ dummy2 , $ event ->getControllerResult ());
131
+ $ this ->assertEquals ('/dummy/1 ' , $ request ->attributes ->get ('_api_write_item_iri ' ));
123
132
}
124
133
}
125
134
@@ -132,6 +141,9 @@ public function testOnKernelViewWithControllerResultAndRemove()
132
141
$ dataPersisterProphecy ->supports ($ dummy )->willReturn (true )->shouldBeCalled ();
133
142
$ dataPersisterProphecy ->remove ($ dummy )->shouldBeCalled ();
134
143
144
+ $ iriConverterProphecy = $ this ->prophesize (IriConverterInterface::class);
145
+ $ iriConverterProphecy ->getIriFromItem ($ dummy )->shouldNotBeCalled ();
146
+
135
147
$ request = new Request ();
136
148
$ request ->setMethod ('DELETE ' );
137
149
$ request ->attributes ->set ('_api_resource_class ' , Dummy::class);
@@ -143,7 +155,7 @@ public function testOnKernelViewWithControllerResultAndRemove()
143
155
$ dummy
144
156
);
145
157
146
- (new WriteListener ($ dataPersisterProphecy ->reveal ()))->onKernelView ($ event );
158
+ (new WriteListener ($ dataPersisterProphecy ->reveal (), $ iriConverterProphecy -> reveal () ))->onKernelView ($ event );
147
159
}
148
160
149
161
public function testOnKernelViewWithSafeMethod ()
@@ -156,6 +168,9 @@ public function testOnKernelViewWithSafeMethod()
156
168
$ dataPersisterProphecy ->persist ($ dummy )->shouldNotBeCalled ();
157
169
$ dataPersisterProphecy ->remove ($ dummy )->shouldNotBeCalled ();
158
170
171
+ $ iriConverterProphecy = $ this ->prophesize (IriConverterInterface::class);
172
+ $ iriConverterProphecy ->getIriFromItem ($ dummy )->shouldNotBeCalled ();
173
+
159
174
$ request = new Request ();
160
175
$ request ->setMethod ('HEAD ' );
161
176
$ request ->attributes ->set ('_api_resource_class ' , Dummy::class);
@@ -180,6 +195,9 @@ public function testOnKernelViewWithPersistFlagOff()
180
195
$ dataPersisterProphecy ->persist ($ dummy )->shouldNotBeCalled ();
181
196
$ dataPersisterProphecy ->remove ($ dummy )->shouldNotBeCalled ();
182
197
198
+ $ iriConverterProphecy = $ this ->prophesize (IriConverterInterface::class);
199
+ $ iriConverterProphecy ->getIriFromItem ($ dummy )->shouldNotBeCalled ();
200
+
183
201
$ request = new Request ();
184
202
$ request ->setMethod ('HEAD ' );
185
203
$ request ->attributes ->set ('_api_resource_class ' , Dummy::class);
@@ -192,7 +210,7 @@ public function testOnKernelViewWithPersistFlagOff()
192
210
$ dummy
193
211
);
194
212
195
- (new WriteListener ($ dataPersisterProphecy ->reveal ()))->onKernelView ($ event );
213
+ (new WriteListener ($ dataPersisterProphecy ->reveal (), $ iriConverterProphecy -> reveal () ))->onKernelView ($ event );
196
214
}
197
215
198
216
public function testOnKernelViewWithNoResourceClass ()
@@ -205,6 +223,9 @@ public function testOnKernelViewWithNoResourceClass()
205
223
$ dataPersisterProphecy ->persist ($ dummy )->shouldNotBeCalled ();
206
224
$ dataPersisterProphecy ->remove ($ dummy )->shouldNotBeCalled ();
207
225
226
+ $ iriConverterProphecy = $ this ->prophesize (IriConverterInterface::class);
227
+ $ iriConverterProphecy ->getIriFromItem ($ dummy )->shouldNotBeCalled ();
228
+
208
229
$ request = new Request ();
209
230
$ request ->setMethod ('POST ' );
210
231
@@ -215,7 +236,7 @@ public function testOnKernelViewWithNoResourceClass()
215
236
$ dummy
216
237
);
217
238
218
- (new WriteListener ($ dataPersisterProphecy ->reveal ()))->onKernelView ($ event );
239
+ (new WriteListener ($ dataPersisterProphecy ->reveal (), $ iriConverterProphecy -> reveal () ))->onKernelView ($ event );
219
240
}
220
241
221
242
public function testOnKernelViewWithNoDataPersisterSupport ()
@@ -228,6 +249,9 @@ public function testOnKernelViewWithNoDataPersisterSupport()
228
249
$ dataPersisterProphecy ->persist ($ dummy )->shouldNotBeCalled ();
229
250
$ dataPersisterProphecy ->remove ($ dummy )->shouldNotBeCalled ();
230
251
252
+ $ iriConverterProphecy = $ this ->prophesize (IriConverterInterface::class);
253
+ $ iriConverterProphecy ->getIriFromItem ($ dummy )->shouldNotBeCalled ();
254
+
231
255
$ request = new Request ();
232
256
$ request ->setMethod ('POST ' );
233
257
$ request ->attributes ->set ('_api_resource_class ' , 'Dummy ' );
@@ -239,6 +263,6 @@ public function testOnKernelViewWithNoDataPersisterSupport()
239
263
$ dummy
240
264
);
241
265
242
- (new WriteListener ($ dataPersisterProphecy ->reveal ()))->onKernelView ($ event );
266
+ (new WriteListener ($ dataPersisterProphecy ->reveal (), $ iriConverterProphecy -> reveal () ))->onKernelView ($ event );
243
267
}
244
268
}
0 commit comments