Skip to content

Commit b359494

Browse files
committed
fixes
1 parent c1eebc1 commit b359494

File tree

3 files changed

+25
-47
lines changed

3 files changed

+25
-47
lines changed

src/State/Processor/ObjectMapperProcessor.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515

1616
use ApiPlatform\Metadata\Operation;
1717
use ApiPlatform\State\ProcessorInterface;
18-
use Symfony\Component\ObjectMapper\ObjectMapperInterface;
1918
use Symfony\Component\HttpFoundation\Response;
19+
use Symfony\Component\ObjectMapper\ObjectMapperInterface;
2020

2121
/**
2222
* @implements ProcessorInterface<mixed,mixed>

tests/Functional/MappingTest.php

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515

1616
use ApiPlatform\Symfony\Bundle\Test\ApiTestCase;
1717
use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\FirstResource;
18+
use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\Issue7563\BookDto;
1819
use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\MappedResource;
1920
use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\MappedResourceNoMap;
20-
use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\Issue7563\BookDto;
2121
use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\MappedResourceOdm;
2222
use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\MappedResourceSourceOnly;
2323
use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\MappedResourceWithInput;
@@ -281,16 +281,30 @@ private function loadFixtures(): void
281281
$manager->flush();
282282
}
283283

284+
private function loadBookFixtures(): void
285+
{
286+
$manager = $this->getManager();
287+
288+
for ($i = 1; $i <= 5; ++$i) {
289+
$book = new Book();
290+
$book->name = 'Book '.$i;
291+
$book->isbn = 'ISBN-'.$i;
292+
$manager->persist($book);
293+
}
294+
295+
$manager->flush();
296+
}
297+
284298
public function testGetSingleBookDto(): void
285299
{
286300
if ($this->isMongoDB()) {
287301
$this->markTestSkipped('MongoDB not tested.');
288302
}
289303

290-
// When
291-
self::createClient()->request('GET', '/book_dtos/1');
304+
$this->recreateSchema([Book::class]);
305+
$this->loadBookFixtures();
292306

293-
// Then
307+
self::createClient()->request('GET', '/book_dtos/1');
294308
self::assertResponseIsSuccessful();
295309
self::assertJsonContains([
296310
'@type' => 'BookDto',
@@ -306,10 +320,10 @@ public function testGetCollectionBookDtoPaginated(): void
306320
$this->markTestSkipped('MongoDB not tested.');
307321
}
308322

309-
// When
310-
$response = self::createClient()->request('GET', '/book_dtos');
323+
$this->recreateSchema([Book::class]);
324+
$this->loadBookFixtures();
311325

312-
// Then
326+
$response = self::createClient()->request('GET', '/book_dtos');
313327
self::assertResponseIsSuccessful();
314328

315329
$json = $response->toArray();
@@ -325,10 +339,10 @@ public function testGetCollectionBookDtoUnpaginated(): void
325339
$this->markTestSkipped('MongoDB not tested.');
326340
}
327341

328-
// When
329-
$response = self::createClient()->request('GET', '/book_dtos?pagination=false');
342+
$this->recreateSchema([Book::class]);
343+
$this->loadBookFixtures();
330344

331-
// Then
345+
$response = self::createClient()->request('GET', '/book_dtos?pagination=false');
332346
self::assertResponseIsSuccessful();
333347

334348
$json = $response->toArray();

tests/State/Provider/ObjectMapperProviderTest.php

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -25,23 +25,18 @@ class ObjectMapperProviderTest extends TestCase
2525
{
2626
public function testProvideBypassesWhenNoObjectMapper(): void
2727
{
28-
// Given
2928
$data = new SourceEntity();
3029
$operation = new Get(class: TargetResource::class);
3130
$decorated = $this->createStub(ProviderInterface::class);
3231
$decorated->method('provide')->willReturn($data);
3332
$provider = new ObjectMapperProvider(null, $decorated);
3433

35-
// When
3634
$result = $provider->provide($operation);
37-
38-
// Then
3935
$this->assertSame($data, $result);
4036
}
4137

4238
public function testProvideBypassesWhenOperationCannotMap(): void
4339
{
44-
// Given
4540
$data = new SourceEntity();
4641
$operation = new Get(class: TargetResource::class, map: false);
4742
$objectMapper = $this->createMock(ObjectMapperInterface::class);
@@ -50,33 +45,25 @@ public function testProvideBypassesWhenOperationCannotMap(): void
5045
$decorated->method('provide')->willReturn($data);
5146
$provider = new ObjectMapperProvider($objectMapper, $decorated);
5247

53-
// When
5448
$result = $provider->provide($operation);
55-
56-
// Then
5749
$this->assertSame($data, $result);
5850
}
5951

6052
public function testProvideBypassesWhenDataIsNull(): void
6153
{
62-
// Given
6354
$operation = new Get(class: TargetResource::class, map: true);
6455
$objectMapper = $this->createMock(ObjectMapperInterface::class);
6556
$objectMapper->expects($this->never())->method('map');
6657
$decorated = $this->createStub(ProviderInterface::class);
6758
$decorated->method('provide')->willReturn(null);
6859
$provider = new ObjectMapperProvider($objectMapper, $decorated);
6960

70-
// When
7161
$result = $provider->provide($operation);
72-
73-
// Then
7462
$this->assertNull($result);
7563
}
7664

7765
public function testProvideMapsObject(): void
7866
{
79-
// Given
8067
$sourceEntity = new SourceEntity();
8168
$targetResource = new TargetResource();
8269
$operation = new Get(class: TargetResource::class, map: true);
@@ -89,16 +76,12 @@ public function testProvideMapsObject(): void
8976
$decorated->method('provide')->willReturn($sourceEntity);
9077
$provider = new ObjectMapperProvider($objectMapper, $decorated);
9178

92-
// When
9379
$result = $provider->provide($operation);
94-
95-
// Then
9680
$this->assertSame($targetResource, $result);
9781
}
9882

9983
public function testProvideMapsObjectAndSetsRequestAttributes(): void
10084
{
101-
// Given
10285
$sourceEntity = new SourceEntity();
10386
$targetResource = new TargetResource();
10487
$operation = new Get(class: TargetResource::class, map: true);
@@ -112,10 +95,7 @@ public function testProvideMapsObjectAndSetsRequestAttributes(): void
11295
$decorated->method('provide')->willReturn($sourceEntity);
11396
$provider = new ObjectMapperProvider($objectMapper, $decorated);
11497

115-
// When
11698
$result = $provider->provide($operation, [], ['request' => $request]);
117-
118-
// Then
11999
$this->assertSame($targetResource, $result);
120100
$this->assertSame($sourceEntity, $request->attributes->get('mapped_data'));
121101
$this->assertSame($targetResource, $request->attributes->get('data'));
@@ -125,7 +105,6 @@ public function testProvideMapsObjectAndSetsRequestAttributes(): void
125105

126106
public function testProvideMapsArray(): void
127107
{
128-
// Given
129108
$sourceEntity1 = new SourceEntity();
130109
$sourceEntity2 = new SourceEntity();
131110
$targetResource1 = new TargetResource();
@@ -148,10 +127,7 @@ public function testProvideMapsArray(): void
148127
$decorated->method('provide')->willReturn([$sourceEntity1, $sourceEntity2]);
149128
$provider = new ObjectMapperProvider($objectMapper, $decorated);
150129

151-
// When
152130
$result = $provider->provide($operation);
153-
154-
// Then
155131
$this->assertIsArray($result);
156132
$this->assertCount(2, $result);
157133
$this->assertSame($targetResource1, $result[0]);
@@ -160,7 +136,6 @@ public function testProvideMapsArray(): void
160136

161137
public function testProvideMapsPaginator(): void
162138
{
163-
// Given
164139
$sourceEntity1 = new SourceEntity();
165140
$sourceEntity2 = new SourceEntity();
166141
$targetResource1 = new TargetResource();
@@ -184,10 +159,7 @@ public function testProvideMapsPaginator(): void
184159
$decorated->method('provide')->willReturn($paginator);
185160
$provider = new ObjectMapperProvider($objectMapper, $decorated);
186161

187-
// When
188162
$result = $provider->provide($operation);
189-
190-
// Then
191163
$this->assertInstanceOf(ArrayPaginator::class, $result);
192164
$items = iterator_to_array($result);
193165
$this->assertCount(2, $items);
@@ -197,25 +169,20 @@ public function testProvideMapsPaginator(): void
197169

198170
public function testProvideMapsEmptyArray(): void
199171
{
200-
// Given
201172
$operation = new Get(class: TargetResource::class, map: true);
202173
$objectMapper = $this->createMock(ObjectMapperInterface::class);
203174
$objectMapper->expects($this->never())->method('map');
204175
$decorated = $this->createStub(ProviderInterface::class);
205176
$decorated->method('provide')->willReturn([]);
206177
$provider = new ObjectMapperProvider($objectMapper, $decorated);
207178

208-
// When
209179
$result = $provider->provide($operation);
210-
211-
// Then
212180
$this->assertIsArray($result);
213181
$this->assertEmpty($result);
214182
}
215183

216184
public function testProvideMapsEmptyPaginator(): void
217185
{
218-
// Given
219186
$operation = new Get(class: TargetResource::class, map: true);
220187
$paginator = new ArrayPaginator([], 0, 10);
221188
$objectMapper = $this->createMock(ObjectMapperInterface::class);
@@ -224,10 +191,7 @@ public function testProvideMapsEmptyPaginator(): void
224191
$decorated->method('provide')->willReturn($paginator);
225192
$provider = new ObjectMapperProvider($objectMapper, $decorated);
226193

227-
// When
228194
$result = $provider->provide($operation);
229-
230-
// Then
231195
$this->assertInstanceOf(ArrayPaginator::class, $result);
232196
$this->assertCount(0, iterator_to_array($result));
233197
}

0 commit comments

Comments
 (0)