Skip to content

Commit b15e658

Browse files
author
abluchet
committed
Fix consider empty resource declaration as an actual resource
1 parent b3cae36 commit b15e658

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

src/Metadata/Extractor/YamlExtractor.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,7 @@ private function extractResources(array $resourcesYaml, string $path)
5252
{
5353
foreach ($resourcesYaml as $resourceName => $resourceYaml) {
5454
if (null === $resourceYaml) {
55-
$this->resources[$resourceName] = null;
56-
57-
continue;
55+
$resourceYaml = [];
5856
}
5957

6058
if (!is_array($resourceYaml)) {
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
resources:
2+
'ApiPlatform\Core\Tests\Fixtures\TestBundle\Entity\Dummy': ''

tests/Metadata/Resource/Factory/ExtractorResourceMetadataFactoryTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use ApiPlatform\Core\Metadata\Resource\Factory\ExtractorResourceNameCollectionFactory;
1818
use ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface;
1919
use ApiPlatform\Core\Metadata\Resource\ResourceMetadata;
20+
use ApiPlatform\Core\Tests\Fixtures\TestBundle\Entity\Dummy;
2021
use ApiPlatform\Core\Tests\Fixtures\TestBundle\Entity\FileConfigDummy;
2122

2223
/**
@@ -35,6 +36,7 @@ public function testXmlCreateResourceMetadata($expectedResourceMetadata)
3536

3637
$resourceMetadataFactory = new ExtractorResourceMetadataFactory(new XmlExtractor([$configPath]));
3738
$resourceMetadata = $resourceMetadataFactory->create(FileConfigDummy::class);
39+
$resourceMetadataDummy = $resourceMetadataFactory->create(Dummy::class);
3840

3941
$this->assertInstanceOf(ResourceMetadata::class, $resourceMetadata);
4042
$this->assertEquals($expectedResourceMetadata, $resourceMetadata);
@@ -125,6 +127,7 @@ public function testYamlCreateResourceMetadata(ResourceMetadata $expectedResourc
125127

126128
$resourceMetadataFactory = new ExtractorResourceMetadataFactory(new YamlExtractor([$configPath]));
127129
$resourceMetadata = $resourceMetadataFactory->create(FileConfigDummy::class);
130+
$resourceMetadataDummy = $resourceMetadataFactory->create(Dummy::class);
128131

129132
$this->assertInstanceOf(ResourceMetadata::class, $resourceMetadata);
130133
$this->assertEquals($expectedResourceMetadata, $resourceMetadata);
@@ -217,4 +220,15 @@ public function testCreateWithMalformedYaml()
217220

218221
(new ExtractorResourceMetadataFactory(new YamlExtractor([$configPath])))->create(FileConfigDummy::class);
219222
}
223+
224+
/**
225+
* @expectedException \ApiPlatform\Core\Exception\InvalidArgumentException
226+
* @expectedExceptionMessageRegExp /"ApiPlatform\\Core\\Tests\\Fixtures\\TestBundle\\Entity\\Dummy" setting is expected to be null or an array, string given in ".+\/Fixtures\/FileConfigurations\/bad_declaration\.yml"\./
227+
*/
228+
public function testCreateWithBadDeclaration()
229+
{
230+
$configPath = __DIR__.'/../../../Fixtures/FileConfigurations/bad_declaration.yml';
231+
232+
(new ExtractorResourceMetadataFactory(new YamlExtractor([$configPath])))->create(FileConfigDummy::class);
233+
}
220234
}

0 commit comments

Comments
 (0)