From 13899d8bf506992665cc80594e9902bd602898f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Mon, 11 Jul 2016 16:17:24 +0200 Subject: [PATCH] Fix some Scrutinizr issues --- .../Doctrine/Orm/Filter/SearchFilter.php | 2 +- .../DoctrineOrmPropertyMetadataFactory.php | 9 +++++- src/Bridge/Doctrine/Orm/Util/QueryChecker.php | 28 +++++++++++-------- .../Doctrine/Orm/Util/QueryNameGenerator.php | 17 +++++------ src/Bridge/FosUser/EventListener.php | 2 +- .../ApiPlatformProvider.php | 20 +++++++++---- .../NelmioApiDoc/Parser/ApiPlatformParser.php | 23 +++++++-------- .../PropertyInfoPropertyMetadataFactory.php | 5 +++- ...pertyInfoPropertyNameCollectionFactory.php | 8 +++++- src/Bridge/Symfony/Routing/ApiLoader.php | 12 +++++--- src/Bridge/Symfony/Routing/IriConverter.php | 12 +++----- src/Hydra/DocumentationNormalizer.php | 3 +- src/JsonLd/ContextBuilder.php | 2 +- src/Swagger/DocumentationNormalizer.php | 1 + src/Util/Reflection.php | 21 +------------- .../ApiPlatformProviderTest.php | 9 ++---- tests/Swagger/DocumentationNormalizerTest.php | 4 +-- 17 files changed, 92 insertions(+), 86 deletions(-) diff --git a/src/Bridge/Doctrine/Orm/Filter/SearchFilter.php b/src/Bridge/Doctrine/Orm/Filter/SearchFilter.php index d8b6cd255cd..feea0365205 100644 --- a/src/Bridge/Doctrine/Orm/Filter/SearchFilter.php +++ b/src/Bridge/Doctrine/Orm/Filter/SearchFilter.php @@ -294,11 +294,11 @@ public function getDescription(string $resourceClass) : array ]; } } elseif ($metadata->hasAssociation($field)) { - $association = $field; $filterParameterNames = [ $property, $property.'[]', ]; + foreach ($filterParameterNames as $filterParameterName) { $description[$filterParameterName] = [ 'property' => $property, diff --git a/src/Bridge/Doctrine/Orm/Metadata/Property/DoctrineOrmPropertyMetadataFactory.php b/src/Bridge/Doctrine/Orm/Metadata/Property/DoctrineOrmPropertyMetadataFactory.php index c9677c2ff0d..0a648d2cc61 100644 --- a/src/Bridge/Doctrine/Orm/Metadata/Property/DoctrineOrmPropertyMetadataFactory.php +++ b/src/Bridge/Doctrine/Orm/Metadata/Property/DoctrineOrmPropertyMetadataFactory.php @@ -14,6 +14,7 @@ use ApiPlatform\Core\Metadata\Property\Factory\PropertyMetadataFactoryInterface; use ApiPlatform\Core\Metadata\Property\PropertyMetadata; use Doctrine\Common\Persistence\ManagerRegistry; +use Doctrine\ORM\Mapping\ClassMetadataInfo; /** * Use Doctrine metadata to populate the identifier property. @@ -56,7 +57,13 @@ public function create(string $resourceClass, string $property, array $options = foreach ($identifiers as $identifier) { if ($identifier === $property) { $propertyMetadata = $propertyMetadata->withIdentifier(true); - $propertyMetadata = $propertyMetadata->withWritable($doctrineClassMetadata->isIdentifierNatural()); + if ($doctrineClassMetadata instanceof ClassMetadataInfo) { + $writable = $doctrineClassMetadata->isIdentifierNatural(); + } else { + $writable = false; + } + + $propertyMetadata = $propertyMetadata->withWritable($writable); break; } diff --git a/src/Bridge/Doctrine/Orm/Util/QueryChecker.php b/src/Bridge/Doctrine/Orm/Util/QueryChecker.php index dc2f33eb923..0ec1031fc9b 100644 --- a/src/Bridge/Doctrine/Orm/Util/QueryChecker.php +++ b/src/Bridge/Doctrine/Orm/Util/QueryChecker.php @@ -44,17 +44,7 @@ public static function hasHavingClause(QueryBuilder $queryBuilder) : bool */ public static function hasRootEntityWithForeignKeyIdentifier(QueryBuilder $queryBuilder, ManagerRegistry $managerRegistry) : bool { - foreach ($queryBuilder->getRootEntities() as $rootEntity) { - $rootMetadata = $managerRegistry - ->getManagerForClass($rootEntity) - ->getClassMetadata($rootEntity); - - if ($rootMetadata->containsForeignIdentifier) { - return true; - } - } - - return false; + return self::hasRootEntityWithIdentifier($queryBuilder, $managerRegistry, true); } /** @@ -66,13 +56,27 @@ public static function hasRootEntityWithForeignKeyIdentifier(QueryBuilder $query * @return bool */ public static function hasRootEntityWithCompositeIdentifier(QueryBuilder $queryBuilder, ManagerRegistry $managerRegistry) : bool + { + return self::hasRootEntityWithIdentifier($queryBuilder, $managerRegistry, false); + } + + /** + * Detects if the root entity has the given identifier. + * + * @param QueryBuilder $queryBuilder + * @param ManagerRegistry $managerRegistry + * @param bool $isForeign + * + * @return bool + */ + private static function hasRootEntityWithIdentifier(QueryBuilder $queryBuilder, ManagerRegistry $managerRegistry, bool $isForeign) : bool { foreach ($queryBuilder->getRootEntities() as $rootEntity) { $rootMetadata = $managerRegistry ->getManagerForClass($rootEntity) ->getClassMetadata($rootEntity); - if ($rootMetadata->isIdentifierComposite) { + if ($isForeign ? $rootMetadata->isIdentifierComposite : $rootMetadata->containsForeignIdentifier) { return true; } } diff --git a/src/Bridge/Doctrine/Orm/Util/QueryNameGenerator.php b/src/Bridge/Doctrine/Orm/Util/QueryNameGenerator.php index 5c75371f955..4b55572b00e 100644 --- a/src/Bridge/Doctrine/Orm/Util/QueryNameGenerator.php +++ b/src/Bridge/Doctrine/Orm/Util/QueryNameGenerator.php @@ -32,7 +32,7 @@ abstract class QueryNameGenerator * * @return string */ - public static function generateJoinAlias($association) + public static function generateJoinAlias(string $association) : string { return sprintf('%s_%s', $association, uniqid()); } @@ -44,7 +44,7 @@ public static function generateJoinAlias($association) * * @return string */ - public static function generateParameterName($name) + public static function generateParameterName(string $name) : string { return sprintf('%s_%s', $name, uniqid()); } @@ -58,11 +58,8 @@ public static function generateParameterName($name) * * @return ClassMetadata */ - public static function getClassMetadataFromJoinAlias( - $alias, - QueryBuilder $queryBuilder, - ManagerRegistry $managerRegistry - ) { + public static function getClassMetadataFromJoinAlias(string $alias, QueryBuilder $queryBuilder, ManagerRegistry $managerRegistry) : ClassMetadata + { $rootEntities = $queryBuilder->getRootEntities(); $rootAliases = $queryBuilder->getRootAliases(); @@ -127,7 +124,7 @@ public static function getClassMetadataFromJoinAlias( * * @return string */ - public static function getJoinRelationship(Join $join) + public static function getJoinRelationship(Join $join) : string { static $relationshipProperty = null; static $initialized = false; @@ -149,7 +146,7 @@ public static function getJoinRelationship(Join $join) * * @return string */ - public static function getJoinAlias(Join $join) + public static function getJoinAlias(Join $join) : string { static $aliasProperty = null; static $initialized = false; @@ -171,7 +168,7 @@ public static function getJoinAlias(Join $join) * * @return string[] */ - public static function getOrderByParts(OrderBy $orderBy) + public static function getOrderByParts(OrderBy $orderBy) : array { static $partsProperty = null; static $initialized = false; diff --git a/src/Bridge/FosUser/EventListener.php b/src/Bridge/FosUser/EventListener.php index a1782102ebd..dc742bbcf2f 100644 --- a/src/Bridge/FosUser/EventListener.php +++ b/src/Bridge/FosUser/EventListener.php @@ -52,7 +52,7 @@ public function onKernelView(GetResponseForControllerResultEvent $event) break; default: - $this->userManager->updateUser($user, false); + $this->userManager->updateUser($user); break; } } diff --git a/src/Bridge/NelmioApiDoc/Extractor/AnnotationsProvider/ApiPlatformProvider.php b/src/Bridge/NelmioApiDoc/Extractor/AnnotationsProvider/ApiPlatformProvider.php index 622a488cf5b..a067989d680 100644 --- a/src/Bridge/NelmioApiDoc/Extractor/AnnotationsProvider/ApiPlatformProvider.php +++ b/src/Bridge/NelmioApiDoc/Extractor/AnnotationsProvider/ApiPlatformProvider.php @@ -14,6 +14,7 @@ use ApiPlatform\Core\Api\FilterCollection; use ApiPlatform\Core\Bridge\NelmioApiDoc\Parser\ApiPlatformParser; use ApiPlatform\Core\Bridge\Symfony\Routing\OperationMethodResolverInterface; +use ApiPlatform\Core\Documentation\Documentation; use ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface; use ApiPlatform\Core\Metadata\Resource\Factory\ResourceNameCollectionFactoryInterface; use ApiPlatform\Core\Metadata\Resource\ResourceMetadata; @@ -50,22 +51,31 @@ public function __construct(ResourceNameCollectionFactoryInterface $resourceName */ public function getAnnotations() : array { - $annotations = []; - $hydraDoc = $this->documentationNormalizer->normalize($this->resourceNameCollectionFactory->create()); + $hydraDoc = $this->documentationNormalizer->normalize(new Documentation($this->resourceNameCollectionFactory->create())); $entrypointHydraDoc = $this->getResourceHydraDoc($hydraDoc, '#Entrypoint'); + if (empty($hydraDoc) || null === $entrypointHydraDoc) { + return []; + } + + $annotations = []; foreach ($this->resourceNameCollectionFactory->create() as $resourceClass) { $resourceMetadata = $this->resourceMetadataFactory->create($resourceClass); $prefixedShortName = ($iri = $resourceMetadata->getIri()) ? $iri : '#'.$resourceMetadata->getShortName(); $resourceHydraDoc = $this->getResourceHydraDoc($hydraDoc, $prefixedShortName); + if (null === $resourceHydraDoc) { + continue; + } - if ($hydraDoc) { - foreach ($resourceMetadata->getCollectionOperations() as $operationName => $operation) { + if (null !== $collectionOperations = $resourceMetadata->getCollectionOperations()) { + foreach ($collectionOperations as $operationName => $operation) { $annotations[] = $this->getApiDoc(true, $resourceClass, $resourceMetadata, $operationName, $resourceHydraDoc, $entrypointHydraDoc); } + } - foreach ($resourceMetadata->getItemOperations() as $operationName => $operation) { + if (null !== $itemOperations = $resourceMetadata->getItemOperations()) { + foreach ($itemOperations as $operationName => $operation) { $annotations[] = $this->getApiDoc(false, $resourceClass, $resourceMetadata, $operationName, $resourceHydraDoc); } } diff --git a/src/Bridge/NelmioApiDoc/Parser/ApiPlatformParser.php b/src/Bridge/NelmioApiDoc/Parser/ApiPlatformParser.php index ced60348636..649fabafd74 100644 --- a/src/Bridge/NelmioApiDoc/Parser/ApiPlatformParser.php +++ b/src/Bridge/NelmioApiDoc/Parser/ApiPlatformParser.php @@ -82,7 +82,7 @@ public function parse(array $item) : array list($io, $resourceClass, $operationName) = explode(':', $item['class'], 3); $resourceMetadata = $this->resourceMetadataFactory->create($resourceClass); - $classOperations = $this->getGroupsForItemAndCollectionOperation($resourceMetadata, $resourceClass, $io, $operationName); + $classOperations = $this->getGroupsForItemAndCollectionOperation($resourceMetadata, $resourceClass, $operationName); if (!empty($classOperations['serializer_groups'])) { return $this->getPropertyMetadata($resourceMetadata, $resourceClass, $io, [], $classOperations); } @@ -123,26 +123,27 @@ private function parseResource(ResourceMetadata $resourceMetadata, string $resou * * @param ResourceMetadata $resourceMetadata * @param string $resourceClass - * @param string $io * @param string[] $visited * * @return array */ - private function getGroupsForItemAndCollectionOperation(ResourceMetadata $resourceMetadata, string $resourceClass, string $io, string $operationName, array $visited = []) : array + private function getGroupsForItemAndCollectionOperation(ResourceMetadata $resourceMetadata, string $resourceClass, string $operationName, array $visited = []) : array { $visited[] = $resourceClass; - $options = []; - - $operation['denormalization_context'] = array_merge($resourceMetadata->getItemOperationAttribute($operationName, 'denormalization_context', []), $resourceMetadata->getCollectionOperationAttribute($operationName, 'denormalization_context', [])); - $operation['normalization_context'] = array_merge($resourceMetadata->getItemOperationAttribute($operationName, 'normalization_context', []), $resourceMetadata->getCollectionOperationAttribute($operationName, 'normalization_context', [])); + $operation = [ + 'denormalization_context' => array_merge($resourceMetadata->getItemOperationAttribute($operationName, 'denormalization_context', []), $resourceMetadata->getCollectionOperationAttribute($operationName, 'denormalization_context', [])), + 'normalization_context' => array_merge($resourceMetadata->getItemOperationAttribute($operationName, 'normalization_context', []), $resourceMetadata->getCollectionOperationAttribute($operationName, 'normalization_context', [])), + ]; - $options['serializer_groups'] = !empty($operation['normalization_context']) ? $operation['normalization_context']['groups'] : []; + $options = [ + 'serializer_groups' => !empty($operation['normalization_context']) ? $operation['normalization_context']['groups'] : [], + ]; $options['serializer_groups'] = array_merge( - $options['serializer_groups'], - !empty($operation['denormalization_context']) ? $operation['denormalization_context']['groups'] : [] - ); + $options['serializer_groups'], + !empty($operation['denormalization_context']) ? $operation['denormalization_context']['groups'] : [] + ); return $options; } diff --git a/src/Bridge/Symfony/PropertyInfo/Metadata/Property/PropertyInfoPropertyMetadataFactory.php b/src/Bridge/Symfony/PropertyInfo/Metadata/Property/PropertyInfoPropertyMetadataFactory.php index 9632e1fa5b6..986a73fba8f 100644 --- a/src/Bridge/Symfony/PropertyInfo/Metadata/Property/PropertyInfoPropertyMetadataFactory.php +++ b/src/Bridge/Symfony/PropertyInfo/Metadata/Property/PropertyInfoPropertyMetadataFactory.php @@ -37,13 +37,16 @@ public function __construct(PropertyInfoExtractorInterface $propertyInfo, Proper */ public function create(string $resourceClass, string $name, array $options = []) : PropertyMetadata { - if (null !== $this->decorated) { + if (null === $this->decorated) { + $propertyMetadata = new PropertyMetadata(); + } else { try { $propertyMetadata = $this->decorated->create($resourceClass, $name, $options); } catch (PropertyNotFoundException $propertyNotFoundException) { $propertyMetadata = new PropertyMetadata(); } } + if (null === $propertyMetadata->getType()) { $types = $this->propertyInfo->getTypes($resourceClass, $name, $options); if (isset($types[0])) { diff --git a/src/Bridge/Symfony/PropertyInfo/Metadata/Property/PropertyInfoPropertyNameCollectionFactory.php b/src/Bridge/Symfony/PropertyInfo/Metadata/Property/PropertyInfoPropertyNameCollectionFactory.php index 834d5abeb24..b23df2be06b 100644 --- a/src/Bridge/Symfony/PropertyInfo/Metadata/Property/PropertyInfoPropertyNameCollectionFactory.php +++ b/src/Bridge/Symfony/PropertyInfo/Metadata/Property/PropertyInfoPropertyNameCollectionFactory.php @@ -11,6 +11,7 @@ namespace ApiPlatform\Core\Bridge\Symfony\PropertyInfo\Metadata\Property; +use ApiPlatform\Core\Exception\RuntimeException; use ApiPlatform\Core\Metadata\Property\Factory\PropertyNameCollectionFactoryInterface; use ApiPlatform\Core\Metadata\Property\PropertyNameCollection; use Symfony\Component\PropertyInfo\PropertyInfoExtractorInterface; @@ -36,6 +37,11 @@ public function __construct(PropertyInfoExtractorInterface $propertyInfo) */ public function create(string $resourceClass, array $options = []) : PropertyNameCollection { - return new PropertyNameCollection($this->propertyInfo->getProperties($resourceClass, $options)); + $properties = $this->propertyInfo->getProperties($resourceClass, $options); + if (null === $properties) { + throw new RuntimeException(sprintf('There is no PropertyInfo extractor supporting the class "%s".', $resourceClass)); + } + + return new PropertyNameCollection($properties); } } diff --git a/src/Bridge/Symfony/Routing/ApiLoader.php b/src/Bridge/Symfony/Routing/ApiLoader.php index b690ce8d57f..6e1d41545d6 100644 --- a/src/Bridge/Symfony/Routing/ApiLoader.php +++ b/src/Bridge/Symfony/Routing/ApiLoader.php @@ -69,12 +69,16 @@ public function load($data, $type = null) throw new InvalidResourceException(sprintf('Resource %s has no short name defined.', $resourceClass)); } - foreach ($resourceMetadata->getCollectionOperations() as $operationName => $operation) { - $this->addRoute($routeCollection, $resourceClass, $operationName, $operation, $resourceShortName, true); + if (null !== $collectionOperations = $resourceMetadata->getCollectionOperations()) { + foreach ($collectionOperations as $operationName => $operation) { + $this->addRoute($routeCollection, $resourceClass, $operationName, $operation, $resourceShortName, true); + } } - foreach ($resourceMetadata->getItemOperations() as $operationName => $operation) { - $this->addRoute($routeCollection, $resourceClass, $operationName, $operation, $resourceShortName, false); + if (null !== $itemOperations = $resourceMetadata->getItemOperations()) { + foreach ($itemOperations as $operationName => $operation) { + $this->addRoute($routeCollection, $resourceClass, $operationName, $operation, $resourceShortName, false); + } } } diff --git a/src/Bridge/Symfony/Routing/IriConverter.php b/src/Bridge/Symfony/Routing/IriConverter.php index f3495687f8f..a6732ad2f3d 100644 --- a/src/Bridge/Symfony/Routing/IriConverter.php +++ b/src/Bridge/Symfony/Routing/IriConverter.php @@ -119,7 +119,8 @@ private function getIdentifiersFromItem($item) : array foreach ($this->propertyNameCollectionFactory->create($resourceClass) as $propertyName) { $propertyMetadata = $this->propertyMetadataFactory->create($resourceClass, $propertyName); - if (!$propertyMetadata->isIdentifier()) { + $identifier = $propertyMetadata->isIdentifier(); + if (null === $identifier || false === $identifier) { continue; } @@ -180,15 +181,10 @@ private function getRouteName(string $resourceClass, bool $collection) : string $methods = $route->getMethods(); if ($resourceClass === $currentResourceClass && null !== $operation && (empty($methods) || in_array('GET', $methods))) { - $found = true; - break; + return $routeName; } } - if (!isset($found)) { - throw new InvalidArgumentException(sprintf('No route associated with the type "%s".', $resourceClass)); - } - - return $routeName; + throw new InvalidArgumentException(sprintf('No route associated with the type "%s".', $resourceClass)); } } diff --git a/src/Hydra/DocumentationNormalizer.php b/src/Hydra/DocumentationNormalizer.php index 28ebd299745..a98f9df7bb0 100644 --- a/src/Hydra/DocumentationNormalizer.php +++ b/src/Hydra/DocumentationNormalizer.php @@ -116,8 +116,7 @@ public function normalize($object, $format = null, array $context = []) foreach ($this->propertyNameCollectionFactory->create($resourceClass, $context) as $propertyName) { $propertyMetadata = $this->propertyMetadataFactory->create($resourceClass, $propertyName); - - if ($propertyMetadata->isIdentifier() && !$propertyMetadata->isWritable()) { + if (true === $propertyMetadata->isIdentifier() && false === $propertyMetadata->isWritable()) { continue; } diff --git a/src/JsonLd/ContextBuilder.php b/src/JsonLd/ContextBuilder.php index bf2d6d994f6..51f78f499ba 100644 --- a/src/JsonLd/ContextBuilder.php +++ b/src/JsonLd/ContextBuilder.php @@ -85,7 +85,7 @@ public function getEntrypointContext(int $referenceType = UrlGeneratorInterface: */ public function getResourceContext(string $resourceClass, int $referenceType = UrlGeneratorInterface::ABS_PATH) : array { - $context = $this->getBaseContext($referenceType, $referenceType); + $context = $this->getBaseContext($referenceType); $resourceMetadata = $this->resourceMetadataFactory->create($resourceClass); $prefixedShortName = sprintf('#%s', $resourceMetadata->getShortName()); diff --git a/src/Swagger/DocumentationNormalizer.php b/src/Swagger/DocumentationNormalizer.php index 4e9829d6cb6..f76e9516a7a 100644 --- a/src/Swagger/DocumentationNormalizer.php +++ b/src/Swagger/DocumentationNormalizer.php @@ -185,6 +185,7 @@ public function normalize($object, $format = null, array $context = []) } } } catch (InvalidArgumentException $e) { + continue; } $classes[] = $class; diff --git a/src/Util/Reflection.php b/src/Util/Reflection.php index 71af868f087..a4aa9ece497 100644 --- a/src/Util/Reflection.php +++ b/src/Util/Reflection.php @@ -18,7 +18,7 @@ * * @author Kévin Dunglas */ -class Reflection +final class Reflection { const ACCESSOR_PREFIXES = ['get', 'is', 'has', 'can']; const MUTATOR_PREFIXES = ['set', 'add', 'remove']; @@ -38,23 +38,4 @@ public function getProperty($methodName) return $matches[2]; } } - - /** - * Gets the {@see \ReflectionProperty} from the class or its parent. - * - * @param \ReflectionClass $reflectionClass - * @param string $attributeName - * - * @return \ReflectionProperty - */ - private function getReflectionProperty(\ReflectionClass $reflectionClass, $attributeName) - { - if ($reflectionClass->hasProperty($attributeName)) { - return $reflectionClass->getProperty($attributeName); - } - - if ($parent = $reflectionClass->getParentClass()) { - return $this->getReflectionProperty($parent, $attributeName); - } - } } diff --git a/tests/Bridge/NelmioApiDoc/Extractor/AnnotationsProvider/ApiPlatformProviderTest.php b/tests/Bridge/NelmioApiDoc/Extractor/AnnotationsProvider/ApiPlatformProviderTest.php index a36dc7bf2e5..d466084ddad 100644 --- a/tests/Bridge/NelmioApiDoc/Extractor/AnnotationsProvider/ApiPlatformProviderTest.php +++ b/tests/Bridge/NelmioApiDoc/Extractor/AnnotationsProvider/ApiPlatformProviderTest.php @@ -16,6 +16,7 @@ use ApiPlatform\Core\Bridge\NelmioApiDoc\Extractor\AnnotationsProvider\ApiPlatformProvider; use ApiPlatform\Core\Bridge\NelmioApiDoc\Parser\ApiPlatformParser; use ApiPlatform\Core\Bridge\Symfony\Routing\OperationMethodResolverInterface; +use ApiPlatform\Core\Documentation\Documentation; use ApiPlatform\Core\Metadata\Resource\Factory\ResourceMetadataFactoryInterface; use ApiPlatform\Core\Metadata\Resource\Factory\ResourceNameCollectionFactoryInterface; use ApiPlatform\Core\Metadata\Resource\ResourceMetadata; @@ -55,16 +56,12 @@ public function testConstruct() public function testGetAnnotations() { $resourceNameCollectionFactoryProphecy = $this->prophesize(ResourceNameCollectionFactoryInterface::class); - $resourceNameCollectionFactoryProphecy->create()->willReturn(new ResourceNameCollection([ - Dummy::class, - ]))->shouldBeCalled(); + $resourceNameCollectionFactoryProphecy->create()->willReturn(new ResourceNameCollection([Dummy::class]))->shouldBeCalled(); $resourceNameCollectionFactory = $resourceNameCollectionFactoryProphecy->reveal(); $apiDocumentationBuilderProphecy = $this->prophesize(NormalizerInterface::class); $hydraDoc = $this->getHydraDoc(); - $apiDocumentationBuilderProphecy->normalize(new ResourceNameCollection([ - Dummy::class, - ]))->willReturn($hydraDoc)->shouldBeCalled(); + $apiDocumentationBuilderProphecy->normalize(new Documentation(new ResourceNameCollection([Dummy::class])))->willReturn($hydraDoc)->shouldBeCalled(); $apiDocumentationBuilder = $apiDocumentationBuilderProphecy->reveal(); $resourceMetadataFactoryProphecy = $this->prophesize(ResourceMetadataFactoryInterface::class); diff --git a/tests/Swagger/DocumentationNormalizerTest.php b/tests/Swagger/DocumentationNormalizerTest.php index 6d92e2fcaba..e60ebfecc1b 100644 --- a/tests/Swagger/DocumentationNormalizerTest.php +++ b/tests/Swagger/DocumentationNormalizerTest.php @@ -64,7 +64,7 @@ public function testNormalize() $iriConverter = $this->prophesize(IriConverterInterface::class); $iriConverter->getIriFromResourceClass('dummy')->shouldBeCalled()->willReturn('/dummies'); - $apiDocumentationBuilder = new DocumentationNormalizer($resourceNameCollectionFactoryProphecy->reveal(), $resourceMetadataFactoryProphecy->reveal(), $propertyNameCollectionFactoryProphecy->reveal(), $propertyMetadataFactoryProphecy->reveal(), $resourceClassResolverProphecy->reveal(), $operationMethodResolverProphecy->reveal(), $iriConverter->reveal()); + $normalizer = new DocumentationNormalizer($resourceNameCollectionFactoryProphecy->reveal(), $resourceMetadataFactoryProphecy->reveal(), $propertyNameCollectionFactoryProphecy->reveal(), $propertyMetadataFactoryProphecy->reveal(), $resourceClassResolverProphecy->reveal(), $operationMethodResolverProphecy->reveal(), $iriConverter->reveal()); $expected = [ 'swagger' => '2.0', @@ -185,6 +185,6 @@ public function testNormalize() ], ]; - $this->assertEquals($expected, $apiDocumentationBuilder->normalize($documentation)); + $this->assertEquals($expected, $normalizer->normalize($documentation)); } }