Merge pull request #421 from JanBukva/new-executor-forces-array

Fix new executor is removing associative array when using custom scalar
This commit is contained in:
Vladimir Razuvaev 2018-12-31 13:00:58 +03:00 committed by GitHub
commit a80d38747f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 2 deletions

View File

@ -152,8 +152,8 @@ class CoroutineExecutor implements Runtime, ExecutorImplementation
if (is_array($value)) { if (is_array($value)) {
$array = []; $array = [];
foreach ($value as $item) { foreach ($value as $key => $item) {
$array[] = self::resultToArray($item); $array[$key] = self::resultToArray($item);
} }
return $array; return $array;
} }

View File

@ -6,6 +6,7 @@ namespace GraphQL\Tests\Executor;
use GraphQL\Executor\Executor; use GraphQL\Executor\Executor;
use GraphQL\Language\Parser; use GraphQL\Language\Parser;
use GraphQL\Type\Definition\CustomScalarType;
use GraphQL\Type\Definition\ObjectType; use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\Type; use GraphQL\Type\Definition\Type;
use GraphQL\Type\Schema; use GraphQL\Type\Schema;
@ -20,6 +21,13 @@ class ExecutorSchemaTest extends TestCase
*/ */
public function testExecutesUsingASchema() : void public function testExecutesUsingASchema() : void
{ {
$BlogSerializableValueType = new CustomScalarType([
'name' => 'JsonSerializableValueScalar',
'serialize' => static function ($value) {
return $value;
},
]);
$BlogArticle = null; $BlogArticle = null;
$BlogImage = new ObjectType([ $BlogImage = new ObjectType([
'name' => 'Image', 'name' => 'Image',
@ -57,6 +65,7 @@ class ExecutorSchemaTest extends TestCase
'title' => ['type' => Type::string()], 'title' => ['type' => Type::string()],
'body' => ['type' => Type::string()], 'body' => ['type' => Type::string()],
'keywords' => ['type' => Type::listOf(Type::string())], 'keywords' => ['type' => Type::listOf(Type::string())],
'meta' => ['type' => $BlogSerializableValueType],
], ],
]); ]);
@ -113,6 +122,7 @@ class ExecutorSchemaTest extends TestCase
keywords keywords
} }
} }
meta
} }
} }
@ -191,6 +201,7 @@ class ExecutorSchemaTest extends TestCase
'keywords' => ['foo', 'bar', '1', 'true', null], 'keywords' => ['foo', 'bar', '1', 'true', null],
], ],
], ],
'meta' => [ 'title' => 'My Article 1 | My Blog' ],
], ],
], ],
]; ];
@ -210,6 +221,7 @@ class ExecutorSchemaTest extends TestCase
'body' => 'This is a post', 'body' => 'This is a post',
'hidden' => 'This data is not exposed in the schema', 'hidden' => 'This data is not exposed in the schema',
'keywords' => ['foo', 'bar', 1, true, null], 'keywords' => ['foo', 'bar', 1, true, null],
'meta' => ['title' => 'My Article 1 | My Blog'],
]; ];
}; };