diff --git a/src/GraphQl/Resolver/Factory/CollectionResolverFactory.php b/src/GraphQl/Resolver/Factory/CollectionResolverFactory.php index e503013930f..29c873b982f 100644 --- a/src/GraphQl/Resolver/Factory/CollectionResolverFactory.php +++ b/src/GraphQl/Resolver/Factory/CollectionResolverFactory.php @@ -66,7 +66,7 @@ public function __invoke(?string $resourceClass = null, ?string $rootClass = nul $operationName = $operationName ?? 'query'; $resolverContext = ['source' => $source, 'args' => $args, 'info' => $info, 'is_collection' => true, 'is_mutation' => false]; - $collection = $this->readStage->apply($resourceClass, $rootClass, $operationName, $resolverContext); + $collection = ($this->readStage)($resourceClass, $rootClass, $operationName, $resolverContext); if (!is_iterable($collection)) { throw new \LogicException('Collection from read stage should be iterable.'); } @@ -80,14 +80,14 @@ public function __invoke(?string $resourceClass = null, ?string $rootClass = nul $collection = $queryResolver($collection, $resolverContext); } - $this->denyAccessStage->apply($resourceClass, $operationName, $resolverContext + [ + ($this->denyAccessStage)($resourceClass, $operationName, $resolverContext + [ 'extra_variables' => [ 'object' => $collection, 'previous_object' => \is_object($collection) ? clone $collection : $collection, ], ]); - return $this->serializeStage->apply($collection, $resourceClass, $operationName, $resolverContext); + return ($this->serializeStage)($collection, $resourceClass, $operationName, $resolverContext); }; } } diff --git a/src/GraphQl/Resolver/Factory/ItemMutationResolverFactory.php b/src/GraphQl/Resolver/Factory/ItemMutationResolverFactory.php index 32da49db918..3ebb21d62e7 100644 --- a/src/GraphQl/Resolver/Factory/ItemMutationResolverFactory.php +++ b/src/GraphQl/Resolver/Factory/ItemMutationResolverFactory.php @@ -67,7 +67,7 @@ public function __invoke(?string $resourceClass = null, ?string $rootClass = nul $resolverContext = ['source' => $source, 'args' => $args, 'info' => $info, 'is_collection' => false, 'is_mutation' => true]; - $item = $this->readStage->apply($resourceClass, $rootClass, $operationName, $resolverContext); + $item = ($this->readStage)($resourceClass, $rootClass, $operationName, $resolverContext); if (null !== $item && !\is_object($item)) { throw new \LogicException('Item from read stage should be a nullable object.'); } @@ -75,19 +75,19 @@ public function __invoke(?string $resourceClass = null, ?string $rootClass = nul $previousItem = \is_object($item) ? clone $item : $item; if ('delete' === $operationName) { - $this->denyAccessStage->apply($resourceClass, $operationName, $resolverContext + [ + ($this->denyAccessStage)($resourceClass, $operationName, $resolverContext + [ 'extra_variables' => [ 'object' => $item, 'previous_object' => $previousItem, ], ]); - $item = $this->writeStage->apply($item, $resourceClass, $operationName, $resolverContext); + $item = ($this->writeStage)($item, $resourceClass, $operationName, $resolverContext); - return $this->serializeStage->apply($item, $resourceClass, $operationName, $resolverContext); + return ($this->serializeStage)($item, $resourceClass, $operationName, $resolverContext); } - $item = $this->deserializeStage->apply($item, $resourceClass, $operationName, $resolverContext); + $item = ($this->deserializeStage)($item, $resourceClass, $operationName, $resolverContext); $resourceMetadata = $this->resourceMetadataFactory->create($resourceClass); @@ -101,7 +101,7 @@ public function __invoke(?string $resourceClass = null, ?string $rootClass = nul } } - $this->denyAccessStage->apply($resourceClass, $operationName, $resolverContext + [ + ($this->denyAccessStage)($resourceClass, $operationName, $resolverContext + [ 'extra_variables' => [ 'object' => $item, 'previous_object' => $previousItem, @@ -109,12 +109,12 @@ public function __invoke(?string $resourceClass = null, ?string $rootClass = nul ]); if (null !== $item) { - $this->validateStage->apply($item, $resourceClass, $operationName, $resolverContext); + ($this->validateStage)($item, $resourceClass, $operationName, $resolverContext); - $persistResult = $this->writeStage->apply($item, $resourceClass, $operationName, $resolverContext); + $persistResult = ($this->writeStage)($item, $resourceClass, $operationName, $resolverContext); } - return $this->serializeStage->apply($persistResult ?? $item, $resourceClass, $operationName, $resolverContext); + return ($this->serializeStage)($persistResult ?? $item, $resourceClass, $operationName, $resolverContext); }; } } diff --git a/src/GraphQl/Resolver/Factory/ItemResolverFactory.php b/src/GraphQl/Resolver/Factory/ItemResolverFactory.php index 75d31fdc66d..658aff28f50 100644 --- a/src/GraphQl/Resolver/Factory/ItemResolverFactory.php +++ b/src/GraphQl/Resolver/Factory/ItemResolverFactory.php @@ -61,7 +61,7 @@ public function __invoke(?string $resourceClass = null, ?string $rootClass = nul $operationName = $operationName ?? 'query'; $resolverContext = ['source' => $source, 'args' => $args, 'info' => $info, 'is_collection' => false, 'is_mutation' => false]; - $item = $this->readStage->apply($resourceClass, $rootClass, $operationName, $resolverContext); + $item = ($this->readStage)($resourceClass, $rootClass, $operationName, $resolverContext); if (null !== $item && !\is_object($item)) { throw new \LogicException('Item from read stage should be a nullable object.'); } @@ -77,14 +77,14 @@ public function __invoke(?string $resourceClass = null, ?string $rootClass = nul $resourceClass = $this->getResourceClass($item, $resourceClass, $info, sprintf('Custom query resolver "%s"', $queryResolverId).' has to return an item of class %s but returned an item of class %s.'); } - $this->denyAccessStage->apply($resourceClass, $operationName, $resolverContext + [ + ($this->denyAccessStage)($resourceClass, $operationName, $resolverContext + [ 'extra_variables' => [ 'object' => $item, 'previous_object' => \is_object($item) ? clone $item : $item, ], ]); - return $this->serializeStage->apply($item, $resourceClass, $operationName, $resolverContext); + return ($this->serializeStage)($item, $resourceClass, $operationName, $resolverContext); }; } diff --git a/src/GraphQl/Resolver/Stage/DenyAccessStage.php b/src/GraphQl/Resolver/Stage/DenyAccessStage.php index 3c32cd951be..873e17b0e2a 100644 --- a/src/GraphQl/Resolver/Stage/DenyAccessStage.php +++ b/src/GraphQl/Resolver/Stage/DenyAccessStage.php @@ -39,7 +39,7 @@ public function __construct(ResourceMetadataFactoryInterface $resourceMetadataFa /** * {@inheritdoc} */ - public function apply(string $resourceClass, string $operationName, array $context): void + public function __invoke(string $resourceClass, string $operationName, array $context): void { $resourceMetadata = $this->resourceMetadataFactory->create($resourceClass); diff --git a/src/GraphQl/Resolver/Stage/DenyAccessStageInterface.php b/src/GraphQl/Resolver/Stage/DenyAccessStageInterface.php index 43034da4e65..a7abf006feb 100644 --- a/src/GraphQl/Resolver/Stage/DenyAccessStageInterface.php +++ b/src/GraphQl/Resolver/Stage/DenyAccessStageInterface.php @@ -27,5 +27,5 @@ interface DenyAccessStageInterface /** * @throws Error */ - public function apply(string $resourceClass, string $operationName, array $context): void; + public function __invoke(string $resourceClass, string $operationName, array $context): void; } diff --git a/src/GraphQl/Resolver/Stage/DeserializeStage.php b/src/GraphQl/Resolver/Stage/DeserializeStage.php index 2da2ef7474c..f45c9ac5dbc 100644 --- a/src/GraphQl/Resolver/Stage/DeserializeStage.php +++ b/src/GraphQl/Resolver/Stage/DeserializeStage.php @@ -42,7 +42,7 @@ public function __construct(ResourceMetadataFactoryInterface $resourceMetadataFa /** * {@inheritdoc} */ - public function apply($objectToPopulate, string $resourceClass, string $operationName, array $context) + public function __invoke($objectToPopulate, string $resourceClass, string $operationName, array $context) { $resourceMetadata = $this->resourceMetadataFactory->create($resourceClass); if (!$resourceMetadata->getGraphqlAttribute($operationName, 'deserialize', true, true)) { diff --git a/src/GraphQl/Resolver/Stage/DeserializeStageInterface.php b/src/GraphQl/Resolver/Stage/DeserializeStageInterface.php index caa30a06f89..be57bbe4126 100644 --- a/src/GraphQl/Resolver/Stage/DeserializeStageInterface.php +++ b/src/GraphQl/Resolver/Stage/DeserializeStageInterface.php @@ -27,5 +27,5 @@ interface DeserializeStageInterface * * @return object|null */ - public function apply($objectToPopulate, string $resourceClass, string $operationName, array $context); + public function __invoke($objectToPopulate, string $resourceClass, string $operationName, array $context); } diff --git a/src/GraphQl/Resolver/Stage/ReadStage.php b/src/GraphQl/Resolver/Stage/ReadStage.php index 79a3ba2f59f..522c46f9344 100644 --- a/src/GraphQl/Resolver/Stage/ReadStage.php +++ b/src/GraphQl/Resolver/Stage/ReadStage.php @@ -53,7 +53,7 @@ public function __construct(ResourceMetadataFactoryInterface $resourceMetadataFa /** * {@inheritdoc} */ - public function apply(?string $resourceClass, ?string $rootClass, string $operationName, array $context) + public function __invoke(?string $resourceClass, ?string $rootClass, string $operationName, array $context) { $resourceMetadata = $resourceClass ? $this->resourceMetadataFactory->create($resourceClass) : null; if ($resourceMetadata && !$resourceMetadata->getGraphqlAttribute($operationName, 'read', true, true)) { diff --git a/src/GraphQl/Resolver/Stage/ReadStageInterface.php b/src/GraphQl/Resolver/Stage/ReadStageInterface.php index 659750379dc..7acc16101be 100644 --- a/src/GraphQl/Resolver/Stage/ReadStageInterface.php +++ b/src/GraphQl/Resolver/Stage/ReadStageInterface.php @@ -25,5 +25,5 @@ interface ReadStageInterface /** * @return object|iterable|null */ - public function apply(?string $resourceClass, ?string $rootClass, string $operationName, array $context); + public function __invoke(?string $resourceClass, ?string $rootClass, string $operationName, array $context); } diff --git a/src/GraphQl/Resolver/Stage/SerializeStage.php b/src/GraphQl/Resolver/Stage/SerializeStage.php index 6c8235e5d98..57715d63fe2 100644 --- a/src/GraphQl/Resolver/Stage/SerializeStage.php +++ b/src/GraphQl/Resolver/Stage/SerializeStage.php @@ -46,7 +46,7 @@ public function __construct(ResourceMetadataFactoryInterface $resourceMetadataFa /** * {@inheritdoc} */ - public function apply($itemOrCollection, string $resourceClass, string $operationName, array $context): ?array + public function __invoke($itemOrCollection, string $resourceClass, string $operationName, array $context): ?array { $isCollection = $context['is_collection']; $isMutation = $context['is_mutation']; diff --git a/src/GraphQl/Resolver/Stage/SerializeStageInterface.php b/src/GraphQl/Resolver/Stage/SerializeStageInterface.php index 1c78e5491ef..be96883832e 100644 --- a/src/GraphQl/Resolver/Stage/SerializeStageInterface.php +++ b/src/GraphQl/Resolver/Stage/SerializeStageInterface.php @@ -25,5 +25,5 @@ interface SerializeStageInterface /** * @param object|iterable|null $itemOrCollection */ - public function apply($itemOrCollection, string $resourceClass, string $operationName, array $context): ?array; + public function __invoke($itemOrCollection, string $resourceClass, string $operationName, array $context): ?array; } diff --git a/src/GraphQl/Resolver/Stage/ValidateStage.php b/src/GraphQl/Resolver/Stage/ValidateStage.php index 87c2859e20a..14d98e51ae0 100644 --- a/src/GraphQl/Resolver/Stage/ValidateStage.php +++ b/src/GraphQl/Resolver/Stage/ValidateStage.php @@ -40,7 +40,7 @@ public function __construct(ResourceMetadataFactoryInterface $resourceMetadataFa /** * {@inheritdoc} */ - public function apply($object, string $resourceClass, string $operationName, array $context): void + public function __invoke($object, string $resourceClass, string $operationName, array $context): void { $resourceMetadata = $this->resourceMetadataFactory->create($resourceClass); if (!$resourceMetadata->getGraphqlAttribute($operationName, 'validate', true, true)) { diff --git a/src/GraphQl/Resolver/Stage/ValidateStageInterface.php b/src/GraphQl/Resolver/Stage/ValidateStageInterface.php index 027e3108c2c..e798a820671 100644 --- a/src/GraphQl/Resolver/Stage/ValidateStageInterface.php +++ b/src/GraphQl/Resolver/Stage/ValidateStageInterface.php @@ -29,5 +29,5 @@ interface ValidateStageInterface * * @throws Error */ - public function apply($object, string $resourceClass, string $operationName, array $context): void; + public function __invoke($object, string $resourceClass, string $operationName, array $context): void; } diff --git a/src/GraphQl/Resolver/Stage/WriteStage.php b/src/GraphQl/Resolver/Stage/WriteStage.php index 8939b874b4f..ebbfc8e511a 100644 --- a/src/GraphQl/Resolver/Stage/WriteStage.php +++ b/src/GraphQl/Resolver/Stage/WriteStage.php @@ -41,7 +41,7 @@ public function __construct(ResourceMetadataFactoryInterface $resourceMetadataFa /** * {@inheritdoc} */ - public function apply($data, string $resourceClass, string $operationName, array $context) + public function __invoke($data, string $resourceClass, string $operationName, array $context) { $resourceMetadata = $this->resourceMetadataFactory->create($resourceClass); if (null === $data || !$resourceMetadata->getGraphqlAttribute($operationName, 'write', true, true)) { diff --git a/src/GraphQl/Resolver/Stage/WriteStageInterface.php b/src/GraphQl/Resolver/Stage/WriteStageInterface.php index 9a18a50b94b..1b54363d443 100644 --- a/src/GraphQl/Resolver/Stage/WriteStageInterface.php +++ b/src/GraphQl/Resolver/Stage/WriteStageInterface.php @@ -27,5 +27,5 @@ interface WriteStageInterface * * @return object|null */ - public function apply($data, string $resourceClass, string $operationName, array $context); + public function __invoke($data, string $resourceClass, string $operationName, array $context); } diff --git a/tests/GraphQl/Resolver/Factory/CollectionResolverFactoryTest.php b/tests/GraphQl/Resolver/Factory/CollectionResolverFactoryTest.php index 4ea17f3eefd..5685a7b190f 100644 --- a/tests/GraphQl/Resolver/Factory/CollectionResolverFactoryTest.php +++ b/tests/GraphQl/Resolver/Factory/CollectionResolverFactoryTest.php @@ -80,11 +80,11 @@ public function testResolve(): void $this->requestStackProphecy->getCurrentRequest()->willReturn($request); $readStageCollection = [new \stdClass()]; - $this->readStageProphecy->apply($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageCollection); + $this->readStageProphecy->__invoke($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageCollection); $this->resourceMetadataFactoryProphecy->create($resourceClass)->willReturn(new ResourceMetadata()); - $this->denyAccessStageProphecy->apply($resourceClass, $operationName, $resolverContext + [ + $this->denyAccessStageProphecy->__invoke($resourceClass, $operationName, $resolverContext + [ 'extra_variables' => [ 'object' => $readStageCollection, 'previous_object' => $readStageCollection, @@ -92,7 +92,7 @@ public function testResolve(): void ])->shouldBeCalled(); $serializeStageData = ['serialized']; - $this->serializeStageProphecy->apply($readStageCollection, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($serializeStageData); + $this->serializeStageProphecy->__invoke($readStageCollection, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($serializeStageData); $this->assertSame($serializeStageData, ($this->collectionResolverFactory)($resourceClass, $rootClass, $operationName)($source, $args, null, $info)); } @@ -132,7 +132,7 @@ public function testResolveBadReadStageCollection(): void $resolverContext = ['source' => $source, 'args' => $args, 'info' => $info, 'is_collection' => true, 'is_mutation' => false]; $readStageCollection = new \stdClass(); - $this->readStageProphecy->apply($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageCollection); + $this->readStageProphecy->__invoke($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageCollection); $this->expectException(\LogicException::class); $this->expectExceptionMessage('Collection from read stage should be iterable.'); @@ -151,7 +151,7 @@ public function testResolveCustom(): void $resolverContext = ['source' => $source, 'args' => $args, 'info' => $info, 'is_collection' => true, 'is_mutation' => false]; $readStageCollection = [new \stdClass()]; - $this->readStageProphecy->apply($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageCollection); + $this->readStageProphecy->__invoke($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageCollection); $this->resourceMetadataFactoryProphecy->create($resourceClass)->willReturn( (new ResourceMetadata())->withGraphql([$operationName => ['collection_query' => 'query_resolver_id']]) @@ -163,7 +163,7 @@ public function testResolveCustom(): void return $customCollection; }); - $this->denyAccessStageProphecy->apply($resourceClass, $operationName, $resolverContext + [ + $this->denyAccessStageProphecy->__invoke($resourceClass, $operationName, $resolverContext + [ 'extra_variables' => [ 'object' => $customCollection, 'previous_object' => $customCollection, @@ -171,7 +171,7 @@ public function testResolveCustom(): void ])->shouldBeCalled(); $serializeStageData = ['serialized']; - $this->serializeStageProphecy->apply($customCollection, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($serializeStageData); + $this->serializeStageProphecy->__invoke($customCollection, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($serializeStageData); $this->assertSame($serializeStageData, ($this->collectionResolverFactory)($resourceClass, $rootClass, $operationName)($source, $args, null, $info)); } diff --git a/tests/GraphQl/Resolver/Factory/ItemMutationResolverFactoryTest.php b/tests/GraphQl/Resolver/Factory/ItemMutationResolverFactoryTest.php index a5bc3aabbbc..eaa4087616c 100644 --- a/tests/GraphQl/Resolver/Factory/ItemMutationResolverFactoryTest.php +++ b/tests/GraphQl/Resolver/Factory/ItemMutationResolverFactoryTest.php @@ -82,29 +82,29 @@ public function testResolve(): void $readStageItem = new \stdClass(); $readStageItem->field = 'read'; - $this->readStageProphecy->apply($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); + $this->readStageProphecy->__invoke($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); $deserializeStageItem = new \stdClass(); $deserializeStageItem->field = 'deserialize'; - $this->deserializeStageProphecy->apply($readStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($deserializeStageItem); + $this->deserializeStageProphecy->__invoke($readStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($deserializeStageItem); $this->resourceMetadataFactoryProphecy->create($resourceClass)->willReturn(new ResourceMetadata()); - $this->denyAccessStageProphecy->apply($resourceClass, $operationName, $resolverContext + [ + $this->denyAccessStageProphecy->__invoke($resourceClass, $operationName, $resolverContext + [ 'extra_variables' => [ 'object' => $deserializeStageItem, 'previous_object' => $readStageItem, ], ])->shouldBeCalled(); - $this->validateStageProphecy->apply($deserializeStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled(); + $this->validateStageProphecy->__invoke($deserializeStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled(); $writeStageItem = new \stdClass(); $writeStageItem->field = 'write'; - $this->writeStageProphecy->apply($deserializeStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($writeStageItem); + $this->writeStageProphecy->__invoke($deserializeStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($writeStageItem); $serializeStageData = ['serialized']; - $this->serializeStageProphecy->apply($writeStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($serializeStageData); + $this->serializeStageProphecy->__invoke($writeStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($serializeStageData); $this->assertSame($serializeStageData, ($this->itemMutationResolverFactory)($resourceClass, $rootClass, $operationName)($source, $args, null, $info)); } @@ -144,7 +144,7 @@ public function testResolveBadReadStageItem(): void $resolverContext = ['source' => $source, 'args' => $args, 'info' => $info, 'is_collection' => false, 'is_mutation' => true]; $readStageItem = []; - $this->readStageProphecy->apply($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); + $this->readStageProphecy->__invoke($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); $this->expectException(\LogicException::class); $this->expectExceptionMessage('Item from read stage should be a nullable object.'); @@ -164,26 +164,26 @@ public function testResolveNullDeserializeStageItem(): void $readStageItem = new \stdClass(); $readStageItem->field = 'read'; - $this->readStageProphecy->apply($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); + $this->readStageProphecy->__invoke($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); $deserializeStageItem = null; - $this->deserializeStageProphecy->apply($readStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($deserializeStageItem); + $this->deserializeStageProphecy->__invoke($readStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($deserializeStageItem); $this->resourceMetadataFactoryProphecy->create($resourceClass)->willReturn(new ResourceMetadata()); - $this->denyAccessStageProphecy->apply($resourceClass, $operationName, $resolverContext + [ + $this->denyAccessStageProphecy->__invoke($resourceClass, $operationName, $resolverContext + [ 'extra_variables' => [ 'object' => $deserializeStageItem, 'previous_object' => $readStageItem, ], ])->shouldBeCalled(); - $this->validateStageProphecy->apply(Argument::cetera())->shouldNotBeCalled(); + $this->validateStageProphecy->__invoke(Argument::cetera())->shouldNotBeCalled(); - $this->writeStageProphecy->apply(Argument::cetera())->shouldNotBeCalled(); + $this->writeStageProphecy->__invoke(Argument::cetera())->shouldNotBeCalled(); $serializeStageData = null; - $this->serializeStageProphecy->apply($deserializeStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($serializeStageData); + $this->serializeStageProphecy->__invoke($deserializeStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($serializeStageData); $this->assertNull(($this->itemMutationResolverFactory)($resourceClass, $rootClass, $operationName)($source, $args, null, $info)); } @@ -200,25 +200,25 @@ public function testResolveDelete(): void $readStageItem = new \stdClass(); $readStageItem->field = 'read'; - $this->readStageProphecy->apply($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); + $this->readStageProphecy->__invoke($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); - $this->deserializeStageProphecy->apply(Argument::cetera())->shouldNotBeCalled(); + $this->deserializeStageProphecy->__invoke(Argument::cetera())->shouldNotBeCalled(); - $this->denyAccessStageProphecy->apply($resourceClass, $operationName, $resolverContext + [ + $this->denyAccessStageProphecy->__invoke($resourceClass, $operationName, $resolverContext + [ 'extra_variables' => [ 'object' => $readStageItem, 'previous_object' => $readStageItem, ], ])->shouldBeCalled(); - $this->validateStageProphecy->apply(Argument::cetera())->shouldNotBeCalled(); + $this->validateStageProphecy->__invoke(Argument::cetera())->shouldNotBeCalled(); $writeStageItem = new \stdClass(); $writeStageItem->field = 'write'; - $this->writeStageProphecy->apply($readStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($writeStageItem); + $this->writeStageProphecy->__invoke($readStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($writeStageItem); $serializeStageData = ['serialized']; - $this->serializeStageProphecy->apply($writeStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($serializeStageData); + $this->serializeStageProphecy->__invoke($writeStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($serializeStageData); $this->assertSame($serializeStageData, ($this->itemMutationResolverFactory)($resourceClass, $rootClass, $operationName)($source, $args, null, $info)); } @@ -235,11 +235,11 @@ public function testResolveCustom(): void $readStageItem = new \stdClass(); $readStageItem->field = 'read'; - $this->readStageProphecy->apply($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); + $this->readStageProphecy->__invoke($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); $deserializeStageItem = new \stdClass(); $deserializeStageItem->field = 'deserialize'; - $this->deserializeStageProphecy->apply($readStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($deserializeStageItem); + $this->deserializeStageProphecy->__invoke($readStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($deserializeStageItem); $this->resourceMetadataFactoryProphecy->create($resourceClass)->willReturn( (new ResourceMetadata())->withGraphql([$operationName => ['mutation' => 'query_resolver_id']]) @@ -251,21 +251,21 @@ public function testResolveCustom(): void return $customItem; }); - $this->denyAccessStageProphecy->apply($resourceClass, $operationName, $resolverContext + [ + $this->denyAccessStageProphecy->__invoke($resourceClass, $operationName, $resolverContext + [ 'extra_variables' => [ 'object' => $customItem, 'previous_object' => $readStageItem, ], ])->shouldBeCalled(); - $this->validateStageProphecy->apply($customItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled(); + $this->validateStageProphecy->__invoke($customItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled(); $writeStageItem = new \stdClass(); $writeStageItem->field = 'write'; - $this->writeStageProphecy->apply($customItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($writeStageItem); + $this->writeStageProphecy->__invoke($customItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($writeStageItem); $serializeStageData = ['serialized']; - $this->serializeStageProphecy->apply($writeStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($serializeStageData); + $this->serializeStageProphecy->__invoke($writeStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($serializeStageData); $this->assertSame($serializeStageData, ($this->itemMutationResolverFactory)($resourceClass, $rootClass, $operationName)($source, $args, null, $info)); } @@ -282,11 +282,11 @@ public function testResolveCustomBadItem(): void $readStageItem = new \stdClass(); $readStageItem->field = 'read'; - $this->readStageProphecy->apply($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); + $this->readStageProphecy->__invoke($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); $deserializeStageItem = new \stdClass(); $deserializeStageItem->field = 'deserialize'; - $this->deserializeStageProphecy->apply($readStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($deserializeStageItem); + $this->deserializeStageProphecy->__invoke($readStageItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($deserializeStageItem); $this->resourceMetadataFactoryProphecy->create($resourceClass)->willReturn( (new ResourceMetadata('shortName'))->withGraphql([$operationName => ['mutation' => 'query_resolver_id']]) diff --git a/tests/GraphQl/Resolver/Factory/ItemResolverFactoryTest.php b/tests/GraphQl/Resolver/Factory/ItemResolverFactoryTest.php index 018fc1f474d..c91918eb604 100644 --- a/tests/GraphQl/Resolver/Factory/ItemResolverFactoryTest.php +++ b/tests/GraphQl/Resolver/Factory/ItemResolverFactoryTest.php @@ -72,11 +72,11 @@ public function testResolve(?string $resourceClass, string $determinedResourceCl $info = $this->prophesize(ResolveInfo::class)->reveal(); $resolverContext = ['source' => $source, 'args' => $args, 'info' => $info, 'is_collection' => false, 'is_mutation' => false]; - $this->readStageProphecy->apply($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); + $this->readStageProphecy->__invoke($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); $this->resourceMetadataFactoryProphecy->create($determinedResourceClass)->willReturn(new ResourceMetadata()); - $this->denyAccessStageProphecy->apply($determinedResourceClass, $operationName, $resolverContext + [ + $this->denyAccessStageProphecy->__invoke($determinedResourceClass, $operationName, $resolverContext + [ 'extra_variables' => [ 'object' => $readStageItem, 'previous_object' => $readStageItem, @@ -84,7 +84,7 @@ public function testResolve(?string $resourceClass, string $determinedResourceCl ])->shouldBeCalled(); $serializeStageData = ['serialized']; - $this->serializeStageProphecy->apply($readStageItem, $determinedResourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($serializeStageData); + $this->serializeStageProphecy->__invoke($readStageItem, $determinedResourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($serializeStageData); $this->assertSame($serializeStageData, ($this->itemResolverFactory)($resourceClass, $rootClass, $operationName)($source, $args, null, $info)); } @@ -118,7 +118,7 @@ public function testResolveBadReadStageItem(): void $resolverContext = ['source' => $source, 'args' => $args, 'info' => $info, 'is_collection' => false, 'is_mutation' => false]; $readStageItem = []; - $this->readStageProphecy->apply($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); + $this->readStageProphecy->__invoke($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); $this->expectException(\LogicException::class); $this->expectExceptionMessage('Item from read stage should be a nullable object.'); @@ -137,7 +137,7 @@ public function testResolveNoResourceNoItem(): void $resolverContext = ['source' => $source, 'args' => $args, 'info' => $info, 'is_collection' => false, 'is_mutation' => false]; $readStageItem = null; - $this->readStageProphecy->apply($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); + $this->readStageProphecy->__invoke($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); $this->expectException(Error::class); $this->expectExceptionMessage('Resource class cannot be determined.'); @@ -156,7 +156,7 @@ public function testResolveBadItem(): void $resolverContext = ['source' => $source, 'args' => $args, 'info' => $info, 'is_collection' => false, 'is_mutation' => false]; $readStageItem = new \stdClass(); - $this->readStageProphecy->apply($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); + $this->readStageProphecy->__invoke($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); $this->expectException(Error::class); $this->expectExceptionMessage('Resolver only handles items of class Dummy but retrieved item is of class stdClass.'); @@ -175,7 +175,7 @@ public function testResolveCustom(): void $resolverContext = ['source' => $source, 'args' => $args, 'info' => $info, 'is_collection' => false, 'is_mutation' => false]; $readStageItem = new \stdClass(); - $this->readStageProphecy->apply($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); + $this->readStageProphecy->__invoke($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); $this->resourceMetadataFactoryProphecy->create($resourceClass)->willReturn( (new ResourceMetadata())->withGraphql([$operationName => ['item_query' => 'query_resolver_id']]) @@ -187,7 +187,7 @@ public function testResolveCustom(): void return $customItem; }); - $this->denyAccessStageProphecy->apply($resourceClass, $operationName, $resolverContext + [ + $this->denyAccessStageProphecy->__invoke($resourceClass, $operationName, $resolverContext + [ 'extra_variables' => [ 'object' => $customItem, 'previous_object' => $customItem, @@ -195,7 +195,7 @@ public function testResolveCustom(): void ])->shouldBeCalled(); $serializeStageData = ['serialized']; - $this->serializeStageProphecy->apply($customItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($serializeStageData); + $this->serializeStageProphecy->__invoke($customItem, $resourceClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($serializeStageData); $this->assertSame($serializeStageData, ($this->itemResolverFactory)($resourceClass, $rootClass, $operationName)($source, $args, null, $info)); } @@ -211,7 +211,7 @@ public function testResolveCustomBadItem(): void $resolverContext = ['source' => $source, 'args' => $args, 'info' => $info, 'is_collection' => false, 'is_mutation' => false]; $readStageItem = new \stdClass(); - $this->readStageProphecy->apply($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); + $this->readStageProphecy->__invoke($resourceClass, $rootClass, $operationName, $resolverContext)->shouldBeCalled()->willReturn($readStageItem); $this->resourceMetadataFactoryProphecy->create($resourceClass)->willReturn( (new ResourceMetadata())->withGraphql([$operationName => ['item_query' => 'query_resolver_id']]) diff --git a/tests/GraphQl/Resolver/Stage/DenyAccessStageTest.php b/tests/GraphQl/Resolver/Stage/DenyAccessStageTest.php index f7dc8bf1be7..5ce6c8c07dc 100644 --- a/tests/GraphQl/Resolver/Stage/DenyAccessStageTest.php +++ b/tests/GraphQl/Resolver/Stage/DenyAccessStageTest.php @@ -53,7 +53,7 @@ public function testNoAccessControl(): void $this->resourceAccessCheckerProphecy->isGranted(Argument::cetera())->shouldNotBeCalled(); - $this->denyAccessStage->apply($resourceClass, 'query', []); + ($this->denyAccessStage)($resourceClass, 'query', []); } public function testGranted(): void @@ -69,7 +69,7 @@ public function testGranted(): void $this->resourceAccessCheckerProphecy->isGranted($resourceClass, $isGranted, $extraVariables)->shouldBeCalled()->willReturn(true); - $this->denyAccessStage->apply($resourceClass, 'query', ['extra_variables' => $extraVariables]); + ($this->denyAccessStage)($resourceClass, 'query', ['extra_variables' => $extraVariables]); } public function testNotGranted(): void @@ -90,7 +90,7 @@ public function testNotGranted(): void $this->expectException(Error::class); $this->expectExceptionMessage('Access Denied.'); - $this->denyAccessStage->apply($resourceClass, 'query', [ + ($this->denyAccessStage)($resourceClass, 'query', [ 'info' => $info, 'extra_variables' => $extraVariables, ]); diff --git a/tests/GraphQl/Resolver/Stage/DeserializeStageTest.php b/tests/GraphQl/Resolver/Stage/DeserializeStageTest.php index 469e9cde5b3..a6dd2071bf3 100644 --- a/tests/GraphQl/Resolver/Stage/DeserializeStageTest.php +++ b/tests/GraphQl/Resolver/Stage/DeserializeStageTest.php @@ -62,7 +62,7 @@ public function testApplyDisabled($objectToPopulate): void ]); $this->resourceMetadataFactoryProphecy->create($resourceClass)->willReturn($resourceMetadata); - $result = $this->deserializeStage->apply($objectToPopulate, $resourceClass, $operationName, []); + $result = ($this->deserializeStage)($objectToPopulate, $resourceClass, $operationName, []); $this->assertSame($objectToPopulate, $result); } @@ -84,7 +84,7 @@ public function testApply($objectToPopulate, array $denormalizationContext): voi $denormalizedData = new \stdClass(); $this->denormalizerProphecy->denormalize($context['args']['input'], $resourceClass, ItemNormalizer::FORMAT, $denormalizationContext)->shouldBeCalled()->willReturn($denormalizedData); - $result = $this->deserializeStage->apply($objectToPopulate, $resourceClass, $operationName, $context); + $result = ($this->deserializeStage)($objectToPopulate, $resourceClass, $operationName, $context); $this->assertSame($denormalizedData, $result); } diff --git a/tests/GraphQl/Resolver/Stage/ReadStageTest.php b/tests/GraphQl/Resolver/Stage/ReadStageTest.php index 5ffcb6270d6..356c1958897 100644 --- a/tests/GraphQl/Resolver/Stage/ReadStageTest.php +++ b/tests/GraphQl/Resolver/Stage/ReadStageTest.php @@ -73,7 +73,7 @@ public function testApplyDisabled(array $context, $expectedResult): void ]); $this->resourceMetadataFactoryProphecy->create($resourceClass)->willReturn($resourceMetadata); - $result = $this->readStage->apply($resourceClass, null, $operationName, $context); + $result = ($this->readStage)($resourceClass, null, $operationName, $context); $this->assertSame($expectedResult, $result); } @@ -114,7 +114,7 @@ public function testApplyItem(?string $identifier, $item, bool $throwNotFound, $ $this->iriConverterProphecy->getItemFromIri($identifier, $normalizationContext)->willReturn($item); } - $result = $this->readStage->apply($resourceClass, null, $operationName, $context); + $result = ($this->readStage)($resourceClass, null, $operationName, $context); $this->assertSame($expectedResult, $result); } @@ -162,7 +162,7 @@ public function testApplyMutation(string $resourceClass, ?string $identifier, $i $this->expectExceptionMessage($expectedExceptionMessage); } - $result = $this->readStage->apply($resourceClass, null, $operationName, $context); + $result = ($this->readStage)($resourceClass, null, $operationName, $context); $this->assertSame($expectedResult, $result); } @@ -205,7 +205,7 @@ public function testApplyCollection(array $args, ?string $rootClass, ?array $sou $this->collectionDataProviderProphecy->getCollection($resourceClass, null, $normalizationContext + ['filters' => $expectedFilters])->willReturn($expectedResult); - $result = $this->readStage->apply($resourceClass, $rootClass, $operationName, $context); + $result = ($this->readStage)($resourceClass, $rootClass, $operationName, $context); $this->assertSame($expectedResult, $result); } diff --git a/tests/GraphQl/Resolver/Stage/SerializeStageTest.php b/tests/GraphQl/Resolver/Stage/SerializeStageTest.php index bee0e7a7164..f92730453aa 100644 --- a/tests/GraphQl/Resolver/Stage/SerializeStageTest.php +++ b/tests/GraphQl/Resolver/Stage/SerializeStageTest.php @@ -56,7 +56,7 @@ public function testApplyDisabled(array $context, bool $paginationEnabled, ?arra ]); $this->resourceMetadataFactoryProphecy->create($resourceClass)->willReturn($resourceMetadata); - $result = $this->createSerializeStage($paginationEnabled)->apply(null, $resourceClass, $operationName, $context); + $result = ($this->createSerializeStage($paginationEnabled))(null, $resourceClass, $operationName, $context); $this->assertSame($expectedResult, $result); } @@ -86,7 +86,7 @@ public function testApply($itemOrCollection, string $operationName, array $conte $this->normalizerProphecy->normalize(Argument::type('stdClass'), ItemNormalizer::FORMAT, $normalizationContext)->willReturn(['normalized_item']); - $result = $this->createSerializeStage($paginationEnabled)->apply($itemOrCollection, $resourceClass, $operationName, $context); + $result = ($this->createSerializeStage($paginationEnabled))($itemOrCollection, $resourceClass, $operationName, $context); $this->assertSame($expectedResult, $result); } @@ -131,7 +131,7 @@ public function testApplyCollectionWithPagination(iterable $collection, array $a $this->expectExceptionMessage($expectedExceptionMessage); } - $result = $this->createSerializeStage(true)->apply($collection, $resourceClass, $operationName, $context); + $result = ($this->createSerializeStage(true))($collection, $resourceClass, $operationName, $context); $this->assertSame($expectedResult, $result); } @@ -165,7 +165,7 @@ public function testApplyBadNormalizedData(): void $this->expectException(Error::class); $this->expectExceptionMessage('Expected serialized data to be a nullable array.'); - $this->createSerializeStage(false)->apply(new \stdClass(), $resourceClass, $operationName, $context); + ($this->createSerializeStage(false))(new \stdClass(), $resourceClass, $operationName, $context); } private function createSerializeStage(bool $paginationEnabled): SerializeStage diff --git a/tests/GraphQl/Resolver/Stage/ValidateStageTest.php b/tests/GraphQl/Resolver/Stage/ValidateStageTest.php index 78664e764b7..0f47d35f946 100644 --- a/tests/GraphQl/Resolver/Stage/ValidateStageTest.php +++ b/tests/GraphQl/Resolver/Stage/ValidateStageTest.php @@ -58,7 +58,7 @@ public function testApplyDisabled(): void $this->validatorProphecy->validate(Argument::cetera())->shouldNotBeCalled(); - $this->validateStage->apply(new \stdClass(), $resourceClass, $operationName, []); + ($this->validateStage)(new \stdClass(), $resourceClass, $operationName, []); } public function testApply(): void @@ -74,7 +74,7 @@ public function testApply(): void $object = new \stdClass(); $this->validatorProphecy->validate($object, ['groups' => $validationGroups])->shouldBeCalled(); - $this->validateStage->apply($object, $resourceClass, $operationName, []); + ($this->validateStage)($object, $resourceClass, $operationName, []); } public function testApplyNotValidated(): void @@ -94,6 +94,6 @@ public function testApplyNotValidated(): void $this->expectException(Error::class); - $this->validateStage->apply($object, $resourceClass, $operationName, $context); + ($this->validateStage)($object, $resourceClass, $operationName, $context); } } diff --git a/tests/GraphQl/Resolver/Stage/WriteStageTest.php b/tests/GraphQl/Resolver/Stage/WriteStageTest.php index 9fcdc748565..0b04d24ccb9 100644 --- a/tests/GraphQl/Resolver/Stage/WriteStageTest.php +++ b/tests/GraphQl/Resolver/Stage/WriteStageTest.php @@ -53,7 +53,7 @@ public function testNoData(): void $resourceClass = 'myResource'; $this->resourceMetadataFactoryProphecy->create($resourceClass)->willReturn(new ResourceMetadata()); - $result = $this->writeStage->apply(null, $resourceClass, 'query', []); + $result = ($this->writeStage)(null, $resourceClass, 'query', []); $this->assertNull($result); } @@ -68,7 +68,7 @@ public function testApplyDisabled(): void $this->resourceMetadataFactoryProphecy->create($resourceClass)->willReturn($resourceMetadata); $data = new \stdClass(); - $result = $this->writeStage->apply($data, $resourceClass, $operationName, []); + $result = ($this->writeStage)($data, $resourceClass, $operationName, []); $this->assertSame($data, $result); } @@ -87,7 +87,7 @@ public function testApplyDelete(): void $this->dataPersisterProphecy->remove($data, $denormalizationContext)->shouldBeCalled(); $this->dataPersisterProphecy->persist(Argument::cetera())->shouldNotBeCalled(); - $result = $this->writeStage->apply($data, $resourceClass, $operationName, $context); + $result = ($this->writeStage)($data, $resourceClass, $operationName, $context); $this->assertNull($result); } @@ -107,7 +107,7 @@ public function testApply(): void $this->dataPersisterProphecy->remove(Argument::cetera())->shouldNotBeCalled(); $this->dataPersisterProphecy->persist($data, $denormalizationContext)->shouldBeCalled()->willReturn($persistedData); - $result = $this->writeStage->apply($data, $resourceClass, $operationName, $context); + $result = ($this->writeStage)($data, $resourceClass, $operationName, $context); $this->assertSame($persistedData, $result); } @@ -130,7 +130,7 @@ public function testLegacyApply(): void $this->dataPersisterProphecy->remove(Argument::cetera())->shouldNotBeCalled(); $this->dataPersisterProphecy->persist($data, $denormalizationContext)->shouldBeCalled(); - $result = $this->writeStage->apply($data, $resourceClass, $operationName, $context); + $result = ($this->writeStage)($data, $resourceClass, $operationName, $context); $this->assertNull($result); }