Skip to content

Commit a0b2155

Browse files
committed
Report parent-based resolvers on root fields
1 parent 78f698d commit a0b2155

File tree

4 files changed

+12
-0
lines changed

4 files changed

+12
-0
lines changed

src/GraphQL/CorrespondanceRule.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,10 @@ private function listObjectTypeResolvedValueTypes(
313313
{
314314
$result = [];
315315

316+
if ($objectType === $schemaServiceOraculum->getRootOperationType(Vojtechdobes\GraphQL\OperationType::Query)) {
317+
return [new PHPStan\Type\NullType()];
318+
}
319+
316320
foreach ($schemaServiceOraculum->listFieldsResolvedToObjectType($objectType) as [$parentObjectType, $parentFieldName]) {
317321
[$parentTypes] = $this->listFieldResolvedValueTypes(
318322
$scope,

tests-shared/AbstractCorrespondanceRuleTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ final public function testRule(): void
4040
"Arguments array{arg1: string|null} of field Query.invalidArgumentsMismatch aren't contravariant with arguments array{} of resolver Vojtechdobes\TestsShared\Resolvers\QueryInvalidArgumentsMismatchFieldResolver",
4141
-1,
4242
],
43+
[
44+
"Resolver Vojtechdobes\GraphQL\PropertyFieldResolver of field Query.rootFieldWithParentBasedResolver expects parent to be an object, but parent is resolved to null",
45+
-1,
46+
],
4347
[
4448
"Resolver Vojtechdobes\TestsShared\Resolvers\PersonParentTypeNameFieldResolver of field PersonParentType.name expects parent to be Vojtechdobes\TestsShared\Resolvers\Person, but parent is resolved to array{}",
4549
-1,

tests-shared/schema.graphqls

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ type Query {
1818
providerOfValidEntityParentTypeEntity: EntityParentType!
1919
providerOfValidEntityParentTypePerson: EntityParentType!
2020
providerOfValidEntityParentTypeThing: EntityParentType!
21+
22+
rootFieldWithParentBasedResolver: String # should be eg. PropertyFieldResolver
2123
}
2224

2325
type ArrayType {

tests/CustomAdapter.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ public function getFieldResolverProvider(string $schemaName): Vojtechdobes\Graph
5252
'Query.providerOfValidEntityParentTypePerson' => new Vojtechdobes\TestsShared\Resolvers\QueryProviderOfValidEntityParentTypePersonFieldResolver(),
5353
'Query.providerOfValidEntityParentTypeThing' => new Vojtechdobes\TestsShared\Resolvers\QueryProviderOfValidEntityParentTypeThingFieldResolver(),
5454

55+
'Query.rootFieldWithParentBasedResolver' => new Vojtechdobes\GraphQL\PropertyFieldResolver(),
56+
5557
'PersonParentType.name' => new Vojtechdobes\TestsShared\Resolvers\PersonParentTypeNameFieldResolver(),
5658
'EntityParentType.name' => new Vojtechdobes\TestsShared\Resolvers\EntityParentTypeNameFieldResolver(),
5759
]);

0 commit comments

Comments
 (0)