From 5af1443b9facea3e7e5916e114b7cee919531aad Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sun, 5 Nov 2023 20:28:05 +0100 Subject: [PATCH 1/6] Make it possible to get arguments and field name --- src/Query.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/Query.php b/src/Query.php index 5fc7456..12123eb 100644 --- a/src/Query.php +++ b/src/Query.php @@ -92,6 +92,11 @@ public function __construct(string $fieldName = '', string $alias = '') $this->isNested = false; } + public function getFieldName(): string + { + return $this->fieldName; + } + /** * @param string $alias * @@ -163,6 +168,11 @@ public function setArguments(array $arguments): Query return $this; } + public function getArguments(): array + { + return $this->arguments; + } + /** * @return string */ From 6c5260ad22eb89333cc9edfde75671514f2cc8b3 Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sun, 5 Nov 2023 20:58:16 +0100 Subject: [PATCH 2/6] Add tests --- tests/QueryTest.php | 67 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/tests/QueryTest.php b/tests/QueryTest.php index f64ec05..68b7b1c 100644 --- a/tests/QueryTest.php +++ b/tests/QueryTest.php @@ -730,4 +730,71 @@ public function testTwoLevelQueryWithInlineFragment(Query $query) return $query; } + + /** + * @covers \GraphQL\Query::getArguments + */ + public function testGettingArguments() + { + $gql = (new Query('things')) + ->setArguments([ + 'someClientId' => 'someValueBasedOnCodebase' + ]); + $cursor_id = 'someCursor'; + $new_args = $gql->getArguments(); + $gql->setArguments(array_merge($new_args, [ + 'after' => $cursor_id + ])); + self::assertEquals('query { +things(someClientId: "someValueBasedOnCodebase" after: "someCursor") +}', (string) $gql); + } + + /** + * @covers \GraphQL\Query::getFieldName + */ + public function testGettingNameAndAltering() + { + $gql = (new Query('things')) + ->setSelectionSet([ + 'id', + 'name', + (new Query('subThings')) + ->setArguments([ + 'filter' => 'providerId123', + ]) + ->setSelectionSet([ + 'id', + 'name' + ]) + ]); + $sets = $gql->getSelectionSet(); + $new_set = []; + foreach ($sets as $set) { + if (!$set instanceof Query) { + continue; + } + $name = $set->getFieldName(); + if ($name !== 'subThings') { + continue; + } + $set->setArguments(['filter' => 'providerId456']); + $set->setSelectionSet(array_merge($set->getSelectionSet(), [ + 'someField', + 'someOtherField' + ])); + } + self::assertEquals('query { +things { +id +name +subThings(filter: "providerId456") { +id +name +someField +someOtherField +} +} +}', (string) $gql); + } } From 0ee11cafc3f35f1c3bf4f3dc36e33fc94ec592d6 Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sun, 5 Nov 2023 20:59:53 +0100 Subject: [PATCH 3/6] Code style --- src/Query.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Query.php b/src/Query.php index 12123eb..5f35ae9 100644 --- a/src/Query.php +++ b/src/Query.php @@ -92,6 +92,9 @@ public function __construct(string $fieldName = '', string $alias = '') $this->isNested = false; } + /** + * @return string + */ public function getFieldName(): string { return $this->fieldName; @@ -168,6 +171,9 @@ public function setArguments(array $arguments): Query return $this; } + /** + * @return array + */ public function getArguments(): array { return $this->arguments; From 6dedbe8180ba09151875117519e3ce2e06df6785 Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sun, 5 Nov 2023 21:05:47 +0100 Subject: [PATCH 4/6] Some code style issues --- tests/QueryTest.php | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/tests/QueryTest.php b/tests/QueryTest.php index 68b7b1c..f574d91 100644 --- a/tests/QueryTest.php +++ b/tests/QueryTest.php @@ -737,17 +737,27 @@ public function testTwoLevelQueryWithInlineFragment(Query $query) public function testGettingArguments() { $gql = (new Query('things')) - ->setArguments([ - 'someClientId' => 'someValueBasedOnCodebase' - ]); + ->setArguments( + [ + 'someClientId' => 'someValueBasedOnCodebase' + ] + ); $cursor_id = 'someCursor'; $new_args = $gql->getArguments(); - $gql->setArguments(array_merge($new_args, [ - 'after' => $cursor_id - ])); - self::assertEquals('query { + $gql->setArguments( + array_merge( + $new_args, + [ + 'after' => $cursor_id + ] + ) + ); + self::assertEquals( + 'query { things(someClientId: "someValueBasedOnCodebase" after: "someCursor") -}', (string) $gql); +}', + (string) $gql + ); } /** From 66d967925fc1c2a70e0ced3bceefad9d8ced973d Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sun, 5 Nov 2023 21:07:42 +0100 Subject: [PATCH 5/6] Some code style issues --- tests/QueryTest.php | 47 +++++++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/tests/QueryTest.php b/tests/QueryTest.php index f574d91..cd2ae77 100644 --- a/tests/QueryTest.php +++ b/tests/QueryTest.php @@ -766,20 +766,24 @@ public function testGettingArguments() public function testGettingNameAndAltering() { $gql = (new Query('things')) - ->setSelectionSet([ - 'id', - 'name', - (new Query('subThings')) - ->setArguments([ - 'filter' => 'providerId123', - ]) - ->setSelectionSet([ - 'id', - 'name' - ]) + ->setSelectionSet( + [ + 'id', + 'name', + (new Query('subThings')) + ->setArguments( + [ + 'filter' => 'providerId123', + ] + ) + ->setSelectionSet( + [ + 'id', + 'name' + ] + ) ]); $sets = $gql->getSelectionSet(); - $new_set = []; foreach ($sets as $set) { if (!$set instanceof Query) { continue; @@ -788,11 +792,20 @@ public function testGettingNameAndAltering() if ($name !== 'subThings') { continue; } - $set->setArguments(['filter' => 'providerId456']); - $set->setSelectionSet(array_merge($set->getSelectionSet(), [ - 'someField', - 'someOtherField' - ])); + $set->setArguments( + [ + 'filter' => 'providerId456' + ] + ); + $set->setSelectionSet( + array_merge( + $set->getSelectionSet(), + [ + 'someField', + 'someOtherField' + ] + ) + ); } self::assertEquals('query { things { From b49fbf7dfeeda8ed0ec15f90f8b5473524ab85f2 Mon Sep 17 00:00:00 2001 From: "Eirik S. Morland" Date: Sun, 5 Nov 2023 21:19:50 +0100 Subject: [PATCH 6/6] Some code style issues --- tests/QueryTest.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/QueryTest.php b/tests/QueryTest.php index cd2ae77..e3bdb87 100644 --- a/tests/QueryTest.php +++ b/tests/QueryTest.php @@ -785,7 +785,7 @@ public function testGettingNameAndAltering() ]); $sets = $gql->getSelectionSet(); foreach ($sets as $set) { - if (!$set instanceof Query) { + if (($set instanceof Query) === false) { continue; } $name = $set->getFieldName(); @@ -807,7 +807,8 @@ public function testGettingNameAndAltering() ) ); } - self::assertEquals('query { + self::assertEquals( + 'query { things { id name @@ -818,6 +819,7 @@ public function testGettingNameAndAltering() someOtherField } } -}', (string) $gql); +}', + (string) $gql); } }