From 327cc52601ae98c41a023e5daa870b4408bb1f6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9miah=20VALERIE?= Date: Mon, 25 Apr 2016 11:23:10 +0200 Subject: [PATCH] Add ExecutionResult $extensions https://facebook.github.io/graphql/#sec-Response-Format --- src/Executor/ExecutionResult.php | 13 ++++++++++++- tests/Executor/ExecutionResultTest.php | 25 +++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 tests/Executor/ExecutionResultTest.php 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()); + } +}