From 6f3c0b75c97b8a5bb1b7dd47d1a749baf08fb402 Mon Sep 17 00:00:00 2001 From: Alan Poulain Date: Thu, 5 Sep 2019 17:10:10 +0200 Subject: [PATCH] Fix some issue with the separation of query --- features/graphql/input_output.feature | 2 +- features/graphql/mutation.feature | 4 +-- features/graphql/schema.feature | 22 --------------- src/GraphQl/Type/FieldsBuilder.php | 4 +-- src/GraphQl/Type/TypeBuilder.php | 6 ++-- .../Factory/CollectionResolverFactoryTest.php | 10 +++---- .../Factory/ItemResolverFactoryTest.php | 8 +++--- .../Resolver/Stage/DeserializeStageTest.php | 4 +-- .../GraphQl/Resolver/Stage/ReadStageTest.php | 6 ++-- .../SecurityPostDenormalizeStageTest.php | 14 +++++----- .../Resolver/Stage/SecurityStageTest.php | 10 +++---- .../Resolver/Stage/SerializeStageTest.php | 10 +++---- .../Resolver/Stage/ValidateStageTest.php | 6 ++-- .../GraphQl/Resolver/Stage/WriteStageTest.php | 4 +-- .../SerializerContextBuilderTest.php | 10 +++---- tests/GraphQl/Type/FieldsBuilderTest.php | 6 ++-- tests/GraphQl/Type/TypeBuilderTest.php | 28 +++++++++---------- 17 files changed, 66 insertions(+), 88 deletions(-) diff --git a/features/graphql/input_output.feature b/features/graphql/input_output.feature index ee616ffc5fc..9030cfb17f2 100644 --- a/features/graphql/input_output.feature +++ b/features/graphql/input_output.feature @@ -107,7 +107,7 @@ Feature: GraphQL DTO input and output { "errors": [ { - "message": "Cannot query field \"id\" on type \"DummyDtoNoOutput\".", + "message": "Cannot query field \"id\" on type \"DummyDtoNoOutputItem\".", "extensions": { "category": "graphql" }, diff --git a/features/graphql/mutation.feature b/features/graphql/mutation.feature index f19156c217c..79c77d19b81 100644 --- a/features/graphql/mutation.feature +++ b/features/graphql/mutation.feature @@ -60,7 +60,7 @@ Feature: GraphQL mutation support And the header "Content-Type" should be equal to "application/json" And the JSON node "data.createFoo.foo.id" should be equal to "/foos/1" And the JSON node "data.createFoo.foo._id" should be equal to 1 - And the JSON node "data.createFoo.foo.__typename" should be equal to "Foo" + And the JSON node "data.createFoo.foo.__typename" should be equal to "FooItem" And the JSON node "data.createFoo.foo.name" should be equal to "A new one" And the JSON node "data.createFoo.foo.bar" should be equal to "new" And the JSON node "data.createFoo.clientMutationId" should be equal to "myId" @@ -111,7 +111,7 @@ Feature: GraphQL mutation support And the JSON node "data.createDummy.dummy.name" should be equal to "A dummy" And the JSON node "data.createDummy.dummy.foo" should have 0 elements And the JSON node "data.createDummy.dummy.relatedDummy.name" should be equal to "RelatedDummy #1" - And the JSON node "data.createDummy.dummy.relatedDummy.__typename" should be equal to "RelatedDummy" + And the JSON node "data.createDummy.dummy.relatedDummy.__typename" should be equal to "RelatedDummyItem" And the JSON node "data.createDummy.clientMutationId" should be equal to "myId" Scenario: Create an item with an iterable field diff --git a/features/graphql/schema.feature b/features/graphql/schema.feature index 0c6471643cf..ccde09a41e0 100644 --- a/features/graphql/schema.feature +++ b/features/graphql/schema.feature @@ -5,17 +5,6 @@ Feature: GraphQL schema-related features When I run the command "api:graphql:export" Then the command output should contain: """ - ###Dummy Friend.### - type DummyFriend implements Node { - id: ID! - - ###The id### - _id: Int! - - ###The dummy name### - name: String! - } - ###Dummy Friend.### type DummyFriendCollection implements Node { id: ID! @@ -65,17 +54,6 @@ Feature: GraphQL schema-related features | --comment-descriptions | true | Then the command output should contain: """ - # Dummy Friend. - type DummyFriend implements Node { - id: ID! - - # The id - _id: Int! - - # The dummy name - name: String! - } - # Dummy Friend. type DummyFriendCollection implements Node { id: ID! diff --git a/src/GraphQl/Type/FieldsBuilder.php b/src/GraphQl/Type/FieldsBuilder.php index cb656db164d..87a295762fa 100644 --- a/src/GraphQl/Type/FieldsBuilder.php +++ b/src/GraphQl/Type/FieldsBuilder.php @@ -179,7 +179,7 @@ public function getResourceObjectTypeFields(?string $resourceClass, ResourceMeta if (null !== $resourceClass) { foreach ($this->propertyNameCollectionFactory->create($resourceClass) as $property) { - $propertyMetadata = $this->propertyMetadataFactory->create($resourceClass, $property, ['graphql_operation_name' => $mutationName ?? $queryName ?? 'item_query']); + $propertyMetadata = $this->propertyMetadataFactory->create($resourceClass, $property, ['graphql_operation_name' => $mutationName ?? $queryName]); if ( null === ($propertyType = $propertyMetadata->getType()) || (!$input && false === $propertyMetadata->isReadable()) @@ -299,7 +299,7 @@ private function getFilterArgs(array $args, ?string $resourceClass, ?ResourceMet return $args; } - foreach ($resourceMetadata->getGraphqlAttribute($queryName ?? 'query', 'filters', [], true) as $filterId) { + foreach ($resourceMetadata->getGraphqlAttribute($queryName, 'filters', [], true) as $filterId) { if (null === $this->filterLocator || !$this->filterLocator->has($filterId)) { continue; } diff --git a/src/GraphQl/Type/TypeBuilder.php b/src/GraphQl/Type/TypeBuilder.php index 5530e02347a..4c1312123f6 100644 --- a/src/GraphQl/Type/TypeBuilder.php +++ b/src/GraphQl/Type/TypeBuilder.php @@ -84,7 +84,7 @@ public function getResourceObjectType(?string $resourceClass, ResourceMetadata $ return $resourceObjectType; } - $ioMetadata = $resourceMetadata->getGraphqlAttribute($mutationName ?? 'query', $input ? 'input' : 'output', null, true); + $ioMetadata = $resourceMetadata->getGraphqlAttribute($mutationName ?? $queryName, $input ? 'input' : 'output', null, true); if (null !== $ioMetadata && \array_key_exists('class', $ioMetadata) && null !== $ioMetadata['class']) { $resourceClass = $ioMetadata['class']; } @@ -97,7 +97,7 @@ public function getResourceObjectType(?string $resourceClass, ResourceMetadata $ 'resolveField' => $this->defaultFieldResolver, 'fields' => function () use ($resourceClass, $resourceMetadata, $input, $mutationName, $queryName, $wrapData, $depth, $ioMetadata) { if ($wrapData) { - $queryNormalizationContext = $resourceMetadata->getGraphqlAttribute($queryName ?? 'query', 'normalization_context', [], true); + $queryNormalizationContext = $resourceMetadata->getGraphqlAttribute($queryName ?? '', 'normalization_context', [], true); $mutationNormalizationContext = $resourceMetadata->getGraphqlAttribute($mutationName ?? '', 'normalization_context', [], true); // Use a new type for the wrapped object only if there is a specific normalization context for the mutation. // If not, use the query type in order to ensure the client cache could be used. @@ -106,7 +106,7 @@ public function getResourceObjectType(?string $resourceClass, ResourceMetadata $ return [ lcfirst($resourceMetadata->getShortName()) => $useWrappedType ? $this->getResourceObjectType($resourceClass, $resourceMetadata, $input, $queryName, $mutationName, true, $depth) : - $this->getResourceObjectType($resourceClass, $resourceMetadata, $input, $queryName, null, true, $depth), + $this->getResourceObjectType($resourceClass, $resourceMetadata, $input, $queryName ?? 'item_query', null, true, $depth), 'clientMutationId' => GraphQLType::string(), ]; } diff --git a/tests/GraphQl/Resolver/Factory/CollectionResolverFactoryTest.php b/tests/GraphQl/Resolver/Factory/CollectionResolverFactoryTest.php index 85b0e441dbf..960306d3832 100644 --- a/tests/GraphQl/Resolver/Factory/CollectionResolverFactoryTest.php +++ b/tests/GraphQl/Resolver/Factory/CollectionResolverFactoryTest.php @@ -70,7 +70,7 @@ public function testResolve(): void { $resourceClass = 'stdClass'; $rootClass = 'rootClass'; - $operationName = 'query'; + $operationName = 'collection_query'; $source = ['source']; $args = ['args']; $info = $this->prophesize(ResolveInfo::class)->reveal(); @@ -110,7 +110,7 @@ public function testResolveNullResourceClass(): void { $resourceClass = null; $rootClass = 'rootClass'; - $operationName = 'query'; + $operationName = 'collection_query'; $source = ['source']; $args = ['args']; $info = $this->prophesize(ResolveInfo::class)->reveal(); @@ -122,7 +122,7 @@ public function testResolveNullRootClass(): void { $resourceClass = 'stdClass'; $rootClass = null; - $operationName = 'query'; + $operationName = 'collection_query'; $source = ['source']; $args = ['args']; $info = $this->prophesize(ResolveInfo::class)->reveal(); @@ -134,7 +134,7 @@ public function testResolveBadReadStageCollection(): void { $resourceClass = 'stdClass'; $rootClass = 'rootClass'; - $operationName = 'query'; + $operationName = 'collection_query'; $source = ['source']; $args = ['args']; $info = $this->prophesize(ResolveInfo::class)->reveal(); @@ -153,7 +153,7 @@ public function testResolveCustom(): void { $resourceClass = 'stdClass'; $rootClass = 'rootClass'; - $operationName = 'query'; + $operationName = 'collection_query'; $source = ['source']; $args = ['args']; $info = $this->prophesize(ResolveInfo::class)->reveal(); diff --git a/tests/GraphQl/Resolver/Factory/ItemResolverFactoryTest.php b/tests/GraphQl/Resolver/Factory/ItemResolverFactoryTest.php index 26eedee01b4..1093daf904d 100644 --- a/tests/GraphQl/Resolver/Factory/ItemResolverFactoryTest.php +++ b/tests/GraphQl/Resolver/Factory/ItemResolverFactoryTest.php @@ -70,7 +70,7 @@ protected function setUp(): void public function testResolve(?string $resourceClass, string $determinedResourceClass, $readStageItem): void { $rootClass = 'rootClass'; - $operationName = 'query'; + $operationName = 'item_query'; $source = ['source']; $args = ['args']; $info = $this->prophesize(ResolveInfo::class)->reveal(); @@ -120,7 +120,7 @@ public function testResolveBadReadStageItem(): void { $resourceClass = 'stdClass'; $rootClass = 'rootClass'; - $operationName = 'query'; + $operationName = 'item_query'; $source = ['source']; $args = ['args']; $info = $this->prophesize(ResolveInfo::class)->reveal(); @@ -139,7 +139,7 @@ public function testResolveNoResourceNoItem(): void { $resourceClass = null; $rootClass = 'rootClass'; - $operationName = 'query'; + $operationName = 'item_query'; $source = ['source']; $args = ['args']; $info = $this->prophesize(ResolveInfo::class)->reveal(); @@ -158,7 +158,7 @@ public function testResolveBadItem(): void { $resourceClass = Dummy::class; $rootClass = 'rootClass'; - $operationName = 'query'; + $operationName = 'item_query'; $source = ['source']; $args = ['args']; $info = $this->prophesize(ResolveInfo::class)->reveal(); diff --git a/tests/GraphQl/Resolver/Stage/DeserializeStageTest.php b/tests/GraphQl/Resolver/Stage/DeserializeStageTest.php index a6dd2071bf3..807bfadca36 100644 --- a/tests/GraphQl/Resolver/Stage/DeserializeStageTest.php +++ b/tests/GraphQl/Resolver/Stage/DeserializeStageTest.php @@ -55,7 +55,7 @@ protected function setUp(): void */ public function testApplyDisabled($objectToPopulate): void { - $operationName = 'query'; + $operationName = 'item_query'; $resourceClass = 'myResource'; $resourceMetadata = (new ResourceMetadata())->withGraphql([ $operationName => ['deserialize' => false], @@ -74,7 +74,7 @@ public function testApplyDisabled($objectToPopulate): void */ public function testApply($objectToPopulate, array $denormalizationContext): void { - $operationName = 'query'; + $operationName = 'item_query'; $resourceClass = 'myResource'; $context = ['args' => ['input' => 'myInput']]; $this->resourceMetadataFactoryProphecy->create($resourceClass)->willReturn(new ResourceMetadata()); diff --git a/tests/GraphQl/Resolver/Stage/ReadStageTest.php b/tests/GraphQl/Resolver/Stage/ReadStageTest.php index 356c1958897..2430ef7f52a 100644 --- a/tests/GraphQl/Resolver/Stage/ReadStageTest.php +++ b/tests/GraphQl/Resolver/Stage/ReadStageTest.php @@ -66,7 +66,7 @@ protected function setUp(): void */ public function testApplyDisabled(array $context, $expectedResult): void { - $operationName = 'query'; + $operationName = 'item_query'; $resourceClass = 'myResource'; $resourceMetadata = (new ResourceMetadata())->withGraphql([ $operationName => ['read' => false], @@ -94,7 +94,7 @@ public function contextProvider(): array */ public function testApplyItem(?string $identifier, $item, bool $throwNotFound, $expectedResult): void { - $operationName = 'query'; + $operationName = 'item_query'; $resourceClass = 'myResource'; $info = $this->prophesize(ResolveInfo::class)->reveal(); $context = [ @@ -184,7 +184,7 @@ public function itemMutationProvider(): array */ public function testApplyCollection(array $args, ?string $rootClass, ?array $source, array $expectedFilters, iterable $expectedResult): void { - $operationName = 'query'; + $operationName = 'collection_query'; $resourceClass = 'myResource'; $info = $this->prophesize(ResolveInfo::class)->reveal(); $fieldName = 'subresource'; diff --git a/tests/GraphQl/Resolver/Stage/SecurityPostDenormalizeStageTest.php b/tests/GraphQl/Resolver/Stage/SecurityPostDenormalizeStageTest.php index a442bfec6d0..21f11dda5ce 100644 --- a/tests/GraphQl/Resolver/Stage/SecurityPostDenormalizeStageTest.php +++ b/tests/GraphQl/Resolver/Stage/SecurityPostDenormalizeStageTest.php @@ -54,12 +54,12 @@ public function testNoSecurity(): void $this->resourceAccessCheckerProphecy->isGranted(Argument::cetera())->shouldNotBeCalled(); - ($this->securityPostDenormalizeStage)($resourceClass, 'query', []); + ($this->securityPostDenormalizeStage)($resourceClass, 'item_query', []); } public function testGranted(): void { - $operationName = 'query'; + $operationName = 'item_query'; $resourceClass = 'myResource'; $isGranted = 'not_granted'; $extraVariables = ['extra' => false]; @@ -70,7 +70,7 @@ public function testGranted(): void $this->resourceAccessCheckerProphecy->isGranted($resourceClass, $isGranted, $extraVariables)->shouldBeCalled()->willReturn(true); - ($this->securityPostDenormalizeStage)($resourceClass, 'query', ['extra_variables' => $extraVariables]); + ($this->securityPostDenormalizeStage)($resourceClass, 'item_query', ['extra_variables' => $extraVariables]); } /** @@ -78,7 +78,7 @@ public function testGranted(): void */ public function testGrantedLegacy(): void { - $operationName = 'query'; + $operationName = 'item_query'; $resourceClass = 'myResource'; $isGranted = 'not_granted'; $extraVariables = ['extra' => false]; @@ -89,12 +89,12 @@ public function testGrantedLegacy(): void $this->resourceAccessCheckerProphecy->isGranted($resourceClass, $isGranted, $extraVariables)->shouldBeCalled()->willReturn(true); - ($this->securityPostDenormalizeStage)($resourceClass, 'query', ['extra_variables' => $extraVariables]); + ($this->securityPostDenormalizeStage)($resourceClass, 'item_query', ['extra_variables' => $extraVariables]); } public function testNotGranted(): void { - $operationName = 'query'; + $operationName = 'item_query'; $resourceClass = 'myResource'; $isGranted = 'not_granted'; $extraVariables = ['extra' => false]; @@ -110,7 +110,7 @@ public function testNotGranted(): void $this->expectException(Error::class); $this->expectExceptionMessage('Access Denied.'); - ($this->securityPostDenormalizeStage)($resourceClass, 'query', [ + ($this->securityPostDenormalizeStage)($resourceClass, 'item_query', [ 'info' => $info, 'extra_variables' => $extraVariables, ]); diff --git a/tests/GraphQl/Resolver/Stage/SecurityStageTest.php b/tests/GraphQl/Resolver/Stage/SecurityStageTest.php index 8140c75cbf9..4b18a7345fd 100644 --- a/tests/GraphQl/Resolver/Stage/SecurityStageTest.php +++ b/tests/GraphQl/Resolver/Stage/SecurityStageTest.php @@ -54,12 +54,12 @@ public function testNoSecurity(): void $this->resourceAccessCheckerProphecy->isGranted(Argument::cetera())->shouldNotBeCalled(); - ($this->securityStage)($resourceClass, 'query', []); + ($this->securityStage)($resourceClass, 'item_query', []); } public function testGranted(): void { - $operationName = 'query'; + $operationName = 'item_query'; $resourceClass = 'myResource'; $isGranted = 'not_granted'; $extraVariables = ['extra' => false]; @@ -70,12 +70,12 @@ public function testGranted(): void $this->resourceAccessCheckerProphecy->isGranted($resourceClass, $isGranted, $extraVariables)->shouldBeCalled()->willReturn(true); - ($this->securityStage)($resourceClass, 'query', ['extra_variables' => $extraVariables]); + ($this->securityStage)($resourceClass, 'item_query', ['extra_variables' => $extraVariables]); } public function testNotGranted(): void { - $operationName = 'query'; + $operationName = 'item_query'; $resourceClass = 'myResource'; $isGranted = 'not_granted'; $extraVariables = ['extra' => false]; @@ -91,7 +91,7 @@ public function testNotGranted(): void $this->expectException(Error::class); $this->expectExceptionMessage('Access Denied.'); - ($this->securityStage)($resourceClass, 'query', [ + ($this->securityStage)($resourceClass, 'item_query', [ 'info' => $info, 'extra_variables' => $extraVariables, ]); diff --git a/tests/GraphQl/Resolver/Stage/SerializeStageTest.php b/tests/GraphQl/Resolver/Stage/SerializeStageTest.php index f92730453aa..7e9ce67cf92 100644 --- a/tests/GraphQl/Resolver/Stage/SerializeStageTest.php +++ b/tests/GraphQl/Resolver/Stage/SerializeStageTest.php @@ -49,7 +49,7 @@ protected function setUp(): void */ public function testApplyDisabled(array $context, bool $paginationEnabled, ?array $expectedResult): void { - $operationName = 'query'; + $operationName = 'item_query'; $resourceClass = 'myResource'; $resourceMetadata = (new ResourceMetadata())->withGraphql([ $operationName => ['serialize' => false], @@ -99,8 +99,8 @@ public function applyProvider(): array ]; return [ - 'item' => [new \stdClass(), 'query', $defaultContext + ['is_collection' => false, 'is_mutation' => false], false, ['normalized_item']], - 'collection without pagination' => [[new \stdClass(), new \stdClass()], 'query', $defaultContext + ['is_collection' => true, 'is_mutation' => false], false, [['normalized_item'], ['normalized_item']]], + 'item' => [new \stdClass(), 'item_query', $defaultContext + ['is_collection' => false, 'is_mutation' => false], false, ['normalized_item']], + 'collection without pagination' => [[new \stdClass(), new \stdClass()], 'collection_query', $defaultContext + ['is_collection' => true, 'is_mutation' => false], false, [['normalized_item'], ['normalized_item']]], 'mutation' => [new \stdClass(), 'create', array_merge($defaultContext, ['args' => ['input' => ['clientMutationId' => 'clientMutationId']], 'is_collection' => false, 'is_mutation' => true]), false, ['shortName' => ['normalized_item'], 'clientMutationId' => 'clientMutationId']], 'delete mutation' => [new \stdClass(), 'delete', array_merge($defaultContext, ['args' => ['input' => ['id' => 4]], 'is_collection' => false, 'is_mutation' => true]), false, ['shortName' => ['id' => 4], 'clientMutationId' => null]], ]; @@ -111,7 +111,7 @@ public function applyProvider(): array */ public function testApplyCollectionWithPagination(iterable $collection, array $args, ?array $expectedResult, ?string $expectedExceptionClass = null, ?string $expectedExceptionMessage = null): void { - $operationName = 'query'; + $operationName = 'collection_query'; $resourceClass = 'myResource'; $context = [ 'is_collection' => true, @@ -152,7 +152,7 @@ public function applyCollectionWithPaginationProvider(): array public function testApplyBadNormalizedData(): void { - $operationName = 'query'; + $operationName = 'item_query'; $resourceClass = 'myResource'; $context = ['is_collection' => false, 'is_mutation' => false, 'args' => [], 'info' => $this->prophesize(ResolveInfo::class)->reveal()]; $this->resourceMetadataFactoryProphecy->create($resourceClass)->willReturn(new ResourceMetadata()); diff --git a/tests/GraphQl/Resolver/Stage/ValidateStageTest.php b/tests/GraphQl/Resolver/Stage/ValidateStageTest.php index 0f47d35f946..7b064b75ef3 100644 --- a/tests/GraphQl/Resolver/Stage/ValidateStageTest.php +++ b/tests/GraphQl/Resolver/Stage/ValidateStageTest.php @@ -49,7 +49,7 @@ protected function setUp(): void public function testApplyDisabled(): void { - $operationName = 'query'; + $operationName = 'item_query'; $resourceClass = 'myResource'; $resourceMetadata = (new ResourceMetadata())->withGraphql([ $operationName => ['validate' => false], @@ -63,7 +63,7 @@ public function testApplyDisabled(): void public function testApply(): void { - $operationName = 'query'; + $operationName = 'item_query'; $resourceClass = 'myResource'; $validationGroups = ['group']; $resourceMetadata = (new ResourceMetadata())->withGraphql([ @@ -79,7 +79,7 @@ public function testApply(): void public function testApplyNotValidated(): void { - $operationName = 'query'; + $operationName = 'item_query'; $resourceClass = 'myResource'; $validationGroups = ['group']; $resourceMetadata = (new ResourceMetadata())->withGraphql([ diff --git a/tests/GraphQl/Resolver/Stage/WriteStageTest.php b/tests/GraphQl/Resolver/Stage/WriteStageTest.php index 0b04d24ccb9..3b0057544b2 100644 --- a/tests/GraphQl/Resolver/Stage/WriteStageTest.php +++ b/tests/GraphQl/Resolver/Stage/WriteStageTest.php @@ -53,14 +53,14 @@ public function testNoData(): void $resourceClass = 'myResource'; $this->resourceMetadataFactoryProphecy->create($resourceClass)->willReturn(new ResourceMetadata()); - $result = ($this->writeStage)(null, $resourceClass, 'query', []); + $result = ($this->writeStage)(null, $resourceClass, 'item_query', []); $this->assertNull($result); } public function testApplyDisabled(): void { - $operationName = 'query'; + $operationName = 'item_query'; $resourceClass = 'myResource'; $resourceMetadata = (new ResourceMetadata())->withGraphql([ $operationName => ['write' => false], diff --git a/tests/GraphQl/Serializer/SerializerContextBuilderTest.php b/tests/GraphQl/Serializer/SerializerContextBuilderTest.php index 5b6acb08d6c..43fb3dab926 100644 --- a/tests/GraphQl/Serializer/SerializerContextBuilderTest.php +++ b/tests/GraphQl/Serializer/SerializerContextBuilderTest.php @@ -78,7 +78,7 @@ public function createNormalizationContextProvider(): array return [ 'nominal' => [ $resourceClass = 'myResource', - $operationName = 'query', + $operationName = 'item_query', ['_id' => 3, 'field' => 'foo'], [ 'groups' => ['normalization_group'], @@ -95,7 +95,7 @@ public function createNormalizationContextProvider(): array ], 'nominal collection' => [ $resourceClass = 'myResource', - $operationName = 'query', + $operationName = 'collection_query', ['edges' => ['node' => ['nodeField' => 'baz']]], [ 'groups' => ['normalization_group'], @@ -111,7 +111,7 @@ public function createNormalizationContextProvider(): array ], 'no resource class' => [ $resourceClass = null, - $operationName = 'query', + $operationName = 'item_query', ['related' => ['_id' => 9]], [ 'resource_class' => $resourceClass, @@ -177,7 +177,7 @@ public function createDenormalizationContextProvider(): array return [ 'nominal' => [ $resourceClass = 'myResource', - $operationName = 'query', + $operationName = 'item_query', [ 'groups' => ['denormalization_group'], 'resource_class' => $resourceClass, @@ -188,7 +188,7 @@ public function createDenormalizationContextProvider(): array ], 'no resource class' => [ $resourceClass = null, - $operationName = 'query', + $operationName = 'item_query', [ 'resource_class' => $resourceClass, 'graphql_operation_name' => $operationName, diff --git a/tests/GraphQl/Type/FieldsBuilderTest.php b/tests/GraphQl/Type/FieldsBuilderTest.php index 037590155f2..c766967e87a 100644 --- a/tests/GraphQl/Type/FieldsBuilderTest.php +++ b/tests/GraphQl/Type/FieldsBuilderTest.php @@ -424,7 +424,7 @@ public function resourceObjectTypeFieldsProvider(): array 'propertyBool' => new PropertyMetadata(new Type(Type::BUILTIN_TYPE_BOOL), null, true, false), 'propertyNotReadable' => new PropertyMetadata(new Type(Type::BUILTIN_TYPE_BOOL), null, false, false), ], - false, 'query', null, null, + false, 'item_query', null, null, [ 'id' => [ 'type' => GraphQLType::nonNull(GraphQLType::id()), @@ -443,7 +443,7 @@ public function resourceObjectTypeFieldsProvider(): array 'property' => new PropertyMetadata(), 'propertyBool' => new PropertyMetadata(new Type(Type::BUILTIN_TYPE_BOOL), null, false, false), ], - true, 'query', null, null, + true, 'item_query', null, null, [ 'id' => [ 'type' => GraphQLType::nonNull(GraphQLType::id()), @@ -580,7 +580,7 @@ public function resourceObjectTypeFieldsProvider(): array 'propertyInvalidType' => new PropertyMetadata(new Type(Type::BUILTIN_TYPE_NULL), null, true, false), 'propertyNotRegisteredType' => new PropertyMetadata(new Type(Type::BUILTIN_TYPE_CALLABLE), null, true, false), ], - false, 'query', null, null, + false, 'item_query', null, null, [ 'id' => [ 'type' => GraphQLType::nonNull(GraphQLType::id()), diff --git a/tests/GraphQl/Type/TypeBuilderTest.php b/tests/GraphQl/Type/TypeBuilderTest.php index 1da281ee7d8..1239be66a36 100644 --- a/tests/GraphQl/Type/TypeBuilderTest.php +++ b/tests/GraphQl/Type/TypeBuilderTest.php @@ -64,21 +64,21 @@ protected function setUp(): void public function testGetResourceObjectType(): void { $resourceMetadata = new ResourceMetadata('shortName', 'description'); - $this->typesContainerProphecy->has('shortName')->shouldBeCalled()->willReturn(false); - $this->typesContainerProphecy->set('shortName', Argument::type(ObjectType::class))->shouldBeCalled(); + $this->typesContainerProphecy->has('shortNameItem')->shouldBeCalled()->willReturn(false); + $this->typesContainerProphecy->set('shortNameItem', Argument::type(ObjectType::class))->shouldBeCalled(); $this->typesContainerProphecy->has('Node')->shouldBeCalled()->willReturn(false); $this->typesContainerProphecy->set('Node', Argument::type(InterfaceType::class))->shouldBeCalled(); /** @var ObjectType $resourceObjectType */ - $resourceObjectType = $this->typeBuilder->getResourceObjectType('resourceClass', $resourceMetadata, false, null, null); - $this->assertSame('shortName', $resourceObjectType->name); + $resourceObjectType = $this->typeBuilder->getResourceObjectType('resourceClass', $resourceMetadata, false, 'item_query', null); + $this->assertSame('shortNameItem', $resourceObjectType->name); $this->assertSame('description', $resourceObjectType->description); $this->assertSame($this->defaultFieldResolver, $resourceObjectType->resolveFieldFn); $this->assertArrayHasKey('interfaces', $resourceObjectType->config); $this->assertArrayHasKey('fields', $resourceObjectType->config); $fieldsBuilderProphecy = $this->prophesize(FieldsBuilderInterface::class); - $fieldsBuilderProphecy->getResourceObjectTypeFields('resourceClass', $resourceMetadata, false, null, null, 0, null)->shouldBeCalled(); + $fieldsBuilderProphecy->getResourceObjectTypeFields('resourceClass', $resourceMetadata, false, 'item_query', null, 0, null)->shouldBeCalled(); $this->fieldsBuilderLocatorProphecy->get('api_platform.graphql.fields_builder')->shouldBeCalled()->willReturn($fieldsBuilderProphecy->reveal()); $resourceObjectType->config['fields'](); } @@ -86,22 +86,22 @@ public function testGetResourceObjectType(): void public function testGetResourceObjectTypeOutputClass(): void { $resourceMetadata = (new ResourceMetadata('shortName', 'description')) - ->withGraphql(['query' => ['output' => ['class' => 'outputClass']]]); - $this->typesContainerProphecy->has('shortName')->shouldBeCalled()->willReturn(false); - $this->typesContainerProphecy->set('shortName', Argument::type(ObjectType::class))->shouldBeCalled(); + ->withGraphql(['item_query' => ['output' => ['class' => 'outputClass']]]); + $this->typesContainerProphecy->has('shortNameItem')->shouldBeCalled()->willReturn(false); + $this->typesContainerProphecy->set('shortNameItem', Argument::type(ObjectType::class))->shouldBeCalled(); $this->typesContainerProphecy->has('Node')->shouldBeCalled()->willReturn(false); $this->typesContainerProphecy->set('Node', Argument::type(InterfaceType::class))->shouldBeCalled(); /** @var ObjectType $resourceObjectType */ - $resourceObjectType = $this->typeBuilder->getResourceObjectType('resourceClass', $resourceMetadata, false, null, null); - $this->assertSame('shortName', $resourceObjectType->name); + $resourceObjectType = $this->typeBuilder->getResourceObjectType('resourceClass', $resourceMetadata, false, 'item_query', null); + $this->assertSame('shortNameItem', $resourceObjectType->name); $this->assertSame('description', $resourceObjectType->description); $this->assertSame($this->defaultFieldResolver, $resourceObjectType->resolveFieldFn); $this->assertArrayHasKey('interfaces', $resourceObjectType->config); $this->assertArrayHasKey('fields', $resourceObjectType->config); $fieldsBuilderProphecy = $this->prophesize(FieldsBuilderInterface::class); - $fieldsBuilderProphecy->getResourceObjectTypeFields('outputClass', $resourceMetadata, false, null, null, 0, ['class' => 'outputClass'])->shouldBeCalled(); + $fieldsBuilderProphecy->getResourceObjectTypeFields('outputClass', $resourceMetadata, false, 'item_query', null, 0, ['class' => 'outputClass'])->shouldBeCalled(); $this->fieldsBuilderLocatorProphecy->get('api_platform.graphql.fields_builder')->shouldBeCalled()->willReturn($fieldsBuilderProphecy->reveal()); $resourceObjectType->config['fields'](); } @@ -175,8 +175,8 @@ public function testGetResourceObjectTypeMutation(): void $this->assertArrayHasKey('fields', $resourceObjectType->config); // Recursive call (not using wrapped type) - $this->typesContainerProphecy->has('shortName')->shouldBeCalled()->willReturn(false); - $this->typesContainerProphecy->set('shortName', Argument::type(ObjectType::class))->shouldBeCalled(); + $this->typesContainerProphecy->has('shortNameItem')->shouldBeCalled()->willReturn(false); + $this->typesContainerProphecy->set('shortNameItem', Argument::type(ObjectType::class))->shouldBeCalled(); $fieldsType = $resourceObjectType->config['fields'](); $this->assertArrayHasKey('shortName', $fieldsType); @@ -188,7 +188,7 @@ public function testGetResourceObjectTypeMutationWrappedType(): void { $resourceMetadata = (new ResourceMetadata('shortName', 'description')) ->withGraphql([ - 'query' => ['normalization_context' => ['groups' => ['query']]], + 'item_query' => ['normalization_context' => ['groups' => ['item_query']]], 'create' => ['normalization_context' => ['groups' => ['create']]], ]); $this->typesContainerProphecy->has('createShortNamePayload')->shouldBeCalled()->willReturn(false);