diff --git a/src/Executor/ExecutionResult.php b/src/Executor/ExecutionResult.php index 074f200..7fc7523 100644 --- a/src/Executor/ExecutionResult.php +++ b/src/Executor/ExecutionResult.php @@ -14,15 +14,22 @@ class ExecutionResult * @var Error[] */ public $errors; + + /** + * @var array[] + */ + public $extensions; /** * @param array $data * @param array $errors + * @param array $extensions */ - public function __construct(array $data = null, array $errors = []) + public function __construct(array $data = null, array $errors = [], array $extensions = []) { $this->data = $data; $this->errors = $errors; + $this->extensions = $extensions; } /** @@ -35,6 +42,10 @@ class ExecutionResult if (!empty($this->errors)) { $result['errors'] = array_map(['GraphQL\Error', 'formatError'], $this->errors); } + + if (!empty($this->extensions)) { + $result['extensions'] = (array) $this->extensions; + } return $result; } diff --git a/tests/Executor/ExecutionResultTest.php b/tests/Executor/ExecutionResultTest.php new file mode 100644 index 0000000..1c942f7 --- /dev/null +++ b/tests/Executor/ExecutionResultTest.php @@ -0,0 +1,25 @@ +assertEquals(['data' => null], $executionResult->toArray()); + } + + public function testToArrayExtensions() + { + $executionResult = new ExecutionResult(null, [], ['foo' => 'bar']); + + $this->assertEquals(['data' => null, 'extensions' => ['foo' => 'bar']], $executionResult->toArray()); + + $executionResult->extensions = ['bar' => 'foo']; + + $this->assertEquals(['data' => null, 'extensions' => ['bar' => 'foo']], $executionResult->toArray()); + } +}