From f77bd17eba9d4b2db5e128f2e943e8a577f83bf8 Mon Sep 17 00:00:00 2001 From: Vladimir Razuvaev Date: Fri, 10 Mar 2017 19:21:27 +0700 Subject: [PATCH] ResolveInfo: Take in account inline fragments in getFieldSelection() --- src/Type/Definition/ResolveInfo.php | 4 +++- tests/Type/ResolveInfoTest.php | 13 +++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Type/Definition/ResolveInfo.php b/src/Type/Definition/ResolveInfo.php index c104335..75c0070 100644 --- a/src/Type/Definition/ResolveInfo.php +++ b/src/Type/Definition/ResolveInfo.php @@ -5,8 +5,8 @@ use GraphQL\Error\InvariantViolation; use GraphQL\Language\AST\FieldNode; use GraphQL\Language\AST\FragmentDefinitionNode; use GraphQL\Language\AST\FragmentSpreadNode; +use GraphQL\Language\AST\InlineFragmentNode; use GraphQL\Language\AST\OperationDefinitionNode; -use GraphQL\Language\AST\SelectionNode; use GraphQL\Language\AST\SelectionSetNode; use GraphQL\Schema; use GraphQL\Utils; @@ -138,6 +138,8 @@ class ResolveInfo $fragment = $this->fragments[$spreadName]; $fields += $this->foldSelectionSet($fragment->selectionSet, $descend); } + } else if ($selectionNode instanceof InlineFragmentNode) { + $fields += $this->foldSelectionSet($selectionNode->selectionSet, $descend); } } diff --git a/tests/Type/ResolveInfoTest.php b/tests/Type/ResolveInfoTest.php index 31c956b..30775e6 100644 --- a/tests/Type/ResolveInfoTest.php +++ b/tests/Type/ResolveInfoTest.php @@ -71,6 +71,7 @@ class ResolveInfoTest extends \PHPUnit_Framework_TestCase image { width height + ...MyImage } replies { body @@ -80,6 +81,9 @@ class ResolveInfoTest extends \PHPUnit_Framework_TestCase pic { url width + ... on Image { + height + } } recentArticle { id @@ -90,6 +94,9 @@ class ResolveInfoTest extends \PHPUnit_Framework_TestCase } } } + fragment MyImage on Image { + url + } '; $expectedDefaultSelection = [ 'author' => true, @@ -106,7 +113,8 @@ class ResolveInfoTest extends \PHPUnit_Framework_TestCase ], 'image' => [ 'width' => true, - 'height' => true + 'height' => true, + 'url' => true ], 'replies' => [ 'body' => true, @@ -115,7 +123,8 @@ class ResolveInfoTest extends \PHPUnit_Framework_TestCase 'name' => true, 'pic' => [ 'url' => true, - 'width' => true + 'width' => true, + 'height' => true ], 'recentArticle' => [ 'id' => true,