|
13 | 13 |
|
14 | 14 | namespace ApiPlatform\Metadata\Tests\Resource\Factory;
|
15 | 15 |
|
| 16 | +use ApiPlatform\Metadata\ApiProperty; |
16 | 17 | use ApiPlatform\Metadata\FilterInterface;
|
17 | 18 | use ApiPlatform\Metadata\Parameters;
|
18 | 19 | use ApiPlatform\Metadata\Property\Factory\PropertyMetadataFactoryInterface;
|
19 | 20 | use ApiPlatform\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface;
|
| 21 | +use ApiPlatform\Metadata\Property\PropertyNameCollection; |
20 | 22 | use ApiPlatform\Metadata\QueryParameter;
|
21 | 23 | use ApiPlatform\Metadata\Resource\Factory\AttributesResourceMetadataCollectionFactory;
|
22 | 24 | use ApiPlatform\Metadata\Resource\Factory\ParameterResourceMetadataCollectionFactory;
|
|
25 | 27 | use PHPUnit\Framework\TestCase;
|
26 | 28 | use Psr\Container\ContainerInterface;
|
27 | 29 |
|
28 |
| -class ParameterResourceMetadataCollectionFactoryTests extends TestCase |
| 30 | +class ParameterResourceMetadataCollectionFactoryTest extends TestCase |
29 | 31 | {
|
30 | 32 | public function testParameterFactory(): void
|
31 | 33 | {
|
32 | 34 | $nameCollection = $this->createStub(PropertyNameCollectionFactoryInterface::class);
|
| 35 | + $nameCollection->method('create')->willReturn(new PropertyNameCollection(['id', 'hydra', 'everywhere'])); |
33 | 36 | $propertyMetadata = $this->createStub(PropertyMetadataFactoryInterface::class);
|
| 37 | + $propertyMetadata->method('create')->willReturnOnConsecutiveCalls(new ApiProperty(identifier: true), new ApiProperty(readable: true), new ApiProperty(readable: true)); |
34 | 38 | $filterLocator = $this->createStub(ContainerInterface::class);
|
35 | 39 | $filterLocator->method('has')->willReturn(true);
|
36 | 40 | $filterLocator->method('get')->willReturn(new class implements FilterInterface {
|
@@ -64,6 +68,24 @@ public function getDescription(string $resourceClass): array
|
64 | 68 | $this->assertEquals(['type' => 'foo'], $hydraParameter->getSchema());
|
65 | 69 | $this->assertEquals(new Parameter('test', 'query'), $hydraParameter->getOpenApi());
|
66 | 70 | $everywhere = $parameters->get('everywhere', QueryParameter::class);
|
67 |
| - $this->assertEquals(new Parameter('everywhere', 'query', allowEmptyValue: true), $everywhere->getOpenApi()); |
| 71 | + $this->assertNull($everywhere->getOpenApi()); |
| 72 | + } |
| 73 | + |
| 74 | + public function testParameterFactoryNoFilter(): void |
| 75 | + { |
| 76 | + $nameCollection = $this->createStub(PropertyNameCollectionFactoryInterface::class); |
| 77 | + $nameCollection->method('create')->willReturn(new PropertyNameCollection(['id', 'hydra', 'everywhere'])); |
| 78 | + $propertyMetadata = $this->createStub(PropertyMetadataFactoryInterface::class); |
| 79 | + $propertyMetadata->method('create')->willReturnOnConsecutiveCalls(new ApiProperty(identifier: true), new ApiProperty(readable: true), new ApiProperty(readable: true)); |
| 80 | + $filterLocator = $this->createStub(ContainerInterface::class); |
| 81 | + $filterLocator->method('has')->willReturn(false); |
| 82 | + $parameter = new ParameterResourceMetadataCollectionFactory( |
| 83 | + $nameCollection, |
| 84 | + $propertyMetadata, |
| 85 | + new AttributesResourceMetadataCollectionFactory(), |
| 86 | + $filterLocator |
| 87 | + ); |
| 88 | + $operation = $parameter->create(WithParameter::class)->getOperation('collection'); |
| 89 | + $this->assertInstanceOf(Parameters::class, $parameters = $operation->getParameters()); |
68 | 90 | }
|
69 | 91 | }
|
0 commit comments