Skip to content

Commit

Permalink
DEP Upgrade webonyx/graphql-php to v14 (#454)
Browse files Browse the repository at this point in the history
  • Loading branch information
emteknetnz authored Apr 13, 2022
1 parent b51ce72 commit 4f7e836
Show file tree
Hide file tree
Showing 14 changed files with 102 additions and 33 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"require": {
"silverstripe/framework": "^4.10",
"silverstripe/vendor-plugin": "^1.0",
"webonyx/graphql-php": "~0.12.6"
"webonyx/graphql-php": "^14"
},
"conflict": {
"silverstripe/versioned-admin": "<1.8",
Expand Down
2 changes: 1 addition & 1 deletion src/Scaffolding/Util/StringTypeParser.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class StringTypeParser implements TypeParserInterface
*/
public static function isInternalType($type)
{
$types = array_keys(Type::getInternalTypes());
$types = array_keys(Type::getStandardTypes());

return in_array($type, $types);
}
Expand Down
4 changes: 2 additions & 2 deletions tests/ConnectionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
use GraphQL\Type\Definition\FieldDefinition;
use GraphQL\Type\Definition\InputObjectField;
use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\ResolveInfo;
use GraphQL\Type\Definition\Type;
use InvalidArgumentException;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\GraphQL\Manager;
use SilverStripe\GraphQL\Pagination\Connection;
use SilverStripe\GraphQL\Pagination\SortInputTypeCreator;
use SilverStripe\GraphQL\Tests\Fake\DataObjectFake;
use SilverStripe\GraphQL\Tests\Fake\FakeResolveInfo;
use SilverStripe\GraphQL\Tests\Fake\PaginatedQueryFake;
use SilverStripe\GraphQL\Tests\Fake\TypeCreatorFake;
use SilverStripe\ORM\ArrayList;
Expand Down Expand Up @@ -195,7 +195,7 @@ public function testGetEdgeTypeResolver()

public function testCollectionResolves()
{
$resolve = $this->connection->resolve(null, [], [], new ResolveInfo([]));
$resolve = $this->connection->resolve(null, [], [], new FakeResolveInfo());
$item = $resolve['edges']->first()->toMap();
$this->assertEquals('testMyValidResolverValue', $item['MyValue']);
}
Expand Down
42 changes: 42 additions & 0 deletions tests/Fake/FakeResolveInfo.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?php

namespace SilverStripe\GraphQL\Tests\Fake;

use GraphQL\Type\Definition\FieldDefinition;
use GraphQL\Type\Definition\ResolveInfo;
use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\Type;
use GraphQL\Type\Schema;
use SilverStripe\Dev\TestOnly;

class FakeResolveInfo extends ResolveInfo implements TestOnly
{
public function __construct(array $options = [])
{
// This is a minimal implementation that's just good enough
// to get unit tests to pass
$name = 'fake';
$type = Type::string();
foreach ($options as $key => $value) {
if ($key === 'name') {
$name = $value;
}
if ($key === 'type') {
if ($value === 'int') {
$type = Type::int();
}
}
}
parent::__construct(
FieldDefinition::create(['name' => $name, 'type' => $type]),
[],
new ObjectType(['name' => 'abc', 'fields' => [$name => $type]]),
[],
new Schema([]),
[],
'',
null,
[]
);
}
}
6 changes: 3 additions & 3 deletions tests/QueryFilter/ReadTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@

use GraphQL\Type\Definition\InputObjectType;
use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\ResolveInfo;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\GraphQL\Manager;
use SilverStripe\GraphQL\QueryFilter\DataObjectQueryFilter;
use SilverStripe\GraphQL\Scaffolding\Scaffolders\CRUD\Read;
use SilverStripe\GraphQL\Scaffolding\Scaffolders\CRUD\ReadOne;
use SilverStripe\GraphQL\Scaffolding\Scaffolders\SchemaScaffolder;
use SilverStripe\GraphQL\Tests\Fake\DataObjectFake;
use SilverStripe\GraphQL\Tests\Fake\FakeResolveInfo;
use SilverStripe\GraphQL\Tests\Fake\FilterDataList;

class ReadTest extends SapphireTest
Expand Down Expand Up @@ -145,7 +145,7 @@ public function testQueryFilterResolve($classToTest)
null,
[],
['currentUser' => null],
new ResolveInfo([])
new FakeResolveInfo()
);

/* @var ReadOne|Read $read */
Expand All @@ -171,7 +171,7 @@ public function testQueryFilterResolve($classToTest)
]
],
['currentUser' => null],
new ResolveInfo([])
new FakeResolveInfo()
);
}

Expand Down
6 changes: 3 additions & 3 deletions tests/Scaffolding/Scaffolders/CRUD/CreateTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
use GraphQL\Type\Definition\IntType;
use GraphQL\Type\Definition\NonNull;
use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\ResolveInfo;
use GraphQL\Type\Definition\StringType;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\GraphQL\Manager;
use SilverStripe\GraphQL\Scaffolding\Scaffolders\CRUD\Create;
use SilverStripe\GraphQL\Scaffolding\StaticSchema;
use SilverStripe\GraphQL\Tests\Fake\DataObjectFake;
use SilverStripe\GraphQL\Tests\Fake\FakeCRUDExtension;
use SilverStripe\GraphQL\Tests\Fake\FakeResolveInfo;
use SilverStripe\GraphQL\Tests\Fake\RestrictedDataObjectFake;
use SilverStripe\Security\Member;

Expand Down Expand Up @@ -76,7 +76,7 @@ public function testCreateOperationResolver($shouldExtend)
[
'currentUser' => Member::create(),
],
new ResolveInfo([])
new FakeResolveInfo()
);

if ($shouldExtend) {
Expand Down Expand Up @@ -148,7 +148,7 @@ public function testCreateOperationPermissionCheck()
null,
[],
['currentUser' => Member::create()],
new ResolveInfo([])
new FakeResolveInfo()
);
}
}
6 changes: 3 additions & 3 deletions tests/Scaffolding/Scaffolders/CRUD/DeleteTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@
use GraphQL\Type\Definition\ListOfType;
use GraphQL\Type\Definition\NonNull;
use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\ResolveInfo;
use GraphQL\Type\Definition\StringType;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\GraphQL\Manager;
use SilverStripe\GraphQL\Scaffolding\Scaffolders\CRUD\Delete;
use SilverStripe\GraphQL\Tests\Fake\DataObjectFake;
use SilverStripe\GraphQL\Tests\Fake\FakeCRUDExtension;
use SilverStripe\GraphQL\Tests\Fake\FakeResolveInfo;
use SilverStripe\GraphQL\Tests\Fake\RestrictedDataObjectFake;
use SilverStripe\Security\Member;

Expand Down Expand Up @@ -73,7 +73,7 @@ public function testDeleteOperationResolver($shouldExtend)
[
'currentUser' => Member::create(),
],
new ResolveInfo([])
new FakeResolveInfo()
);

if ($shouldExtend) {
Expand Down Expand Up @@ -130,7 +130,7 @@ public function testDeleteOperationPermissionCheck()
$restrictedDataobject,
['IDs' => [$ID]],
['currentUser' => Member::create()],
new ResolveInfo([])
new FakeResolveInfo()
);
}
}
4 changes: 2 additions & 2 deletions tests/Scaffolding/Scaffolders/CRUD/ReadOneTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
use GraphQL\Type\Definition\IDType;
use GraphQL\Type\Definition\NonNull;
use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\ResolveInfo;
use GraphQL\Type\Definition\StringType;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\GraphQL\Manager;
use SilverStripe\GraphQL\Scaffolding\Scaffolders\CRUD\ReadOne;
use SilverStripe\GraphQL\Tests\Fake\DataObjectFake;
use SilverStripe\GraphQL\Tests\Fake\FakeResolveInfo;
use SilverStripe\GraphQL\Tests\Fake\RestrictedDataObjectFake;
use SilverStripe\Security\Member;

Expand Down Expand Up @@ -51,7 +51,7 @@ public function testReadOneOperationResolver()
[
'currentUser' => Member::create(),
],
new ResolveInfo([])
new FakeResolveInfo()
);
$this->assertInstanceOf(DataObjectFake::class, $response);
$this->assertEquals($ID, $response->ID);
Expand Down
4 changes: 2 additions & 2 deletions tests/Scaffolding/Scaffolders/CRUD/ReadTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
namespace SilverStripe\GraphQL\Tests\Scaffolding\Scaffolders\CRUD;

use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\ResolveInfo;
use GraphQL\Type\Definition\StringType;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\GraphQL\Manager;
use SilverStripe\GraphQL\Scaffolding\Scaffolders\CRUD\Read;
use SilverStripe\GraphQL\Tests\Fake\DataObjectFake;
use SilverStripe\GraphQL\Tests\Fake\FakeResolveInfo;
use SilverStripe\GraphQL\Tests\Fake\RestrictedDataObjectFake;
use SilverStripe\ORM\DataList;
use SilverStripe\Security\Member;
Expand Down Expand Up @@ -57,7 +57,7 @@ public function testReadOperationResolver()
[
'currentUser' => Member::create(),
],
new ResolveInfo([])
new FakeResolveInfo()
);

$this->assertArrayHasKey('edges', $response);
Expand Down
6 changes: 3 additions & 3 deletions tests/Scaffolding/Scaffolders/CRUD/UpdateTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
use GraphQL\Type\Definition\IntType;
use GraphQL\Type\Definition\NonNull;
use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\ResolveInfo;
use GraphQL\Type\Definition\StringType;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\GraphQL\Manager;
use SilverStripe\GraphQL\Scaffolding\Scaffolders\CRUD\Update;
use SilverStripe\GraphQL\Tests\Fake\DataObjectFake;
use SilverStripe\GraphQL\Tests\Fake\FakeCRUDExtension;
use SilverStripe\GraphQL\Tests\Fake\FakeResolveInfo;
use SilverStripe\GraphQL\Tests\Fake\RestrictedDataObjectFake;
use SilverStripe\Security\Member;

Expand Down Expand Up @@ -74,7 +74,7 @@ public function testUpdateOperationResolver($shouldExtend)
[
'currentUser' => Member::create(),
],
new ResolveInfo([])
new FakeResolveInfo()
);

/** @var DataObjectFake $updatedRecord */
Expand Down Expand Up @@ -148,7 +148,7 @@ public function testUpdateOperationPermissionCheck()
],
],
['currentUser' => Member::create()],
new ResolveInfo([])
new FakeResolveInfo()
);
}
}
33 changes: 30 additions & 3 deletions tests/Scaffolding/Scaffolders/DataObjectScaffolderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

use Exception;
use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\ResolveInfo;
use InvalidArgumentException;
use SilverStripe\Core\Config\Config;
use SilverStripe\Dev\SapphireTest;
Expand All @@ -23,8 +22,10 @@
use SilverStripe\GraphQL\Tests\Fake\FakeFieldAccessor;
use SilverStripe\GraphQL\Tests\Fake\FakePage;
use SilverStripe\GraphQL\Tests\Fake\FakeRedirectorPage;
use SilverStripe\GraphQL\Tests\Fake\FakeResolveInfo;
use SilverStripe\GraphQL\Tests\Fake\FakeSiteTree;
use SilverStripe\ORM\FieldType\DBInt;
use SilverStripe\View\ViewableData;

class DataObjectScaffolderTest extends SapphireTest
{
Expand Down Expand Up @@ -433,7 +434,11 @@ public function testDataObjectScaffolderSimpleFieldTypes()
$fields = $result->config['fields']();
$myIntResolver = $fields['MyInt']['resolve'];
$fake = new DataObjectFake(['MyInt' => 5]);
$value = $myIntResolver($fake, [], null, new ResolveInfo(['fieldName' => 'MyInt']));

$orig = StaticSchema::inst()->getFieldAccessor();
StaticSchema::inst()->setFieldAccessor($this->getMyFieldAccessor());
$value = $myIntResolver($fake, [], null, new FakeResolveInfo(['name' => 'MyInt', 'type' => 'int']));
StaticSchema::inst()->setFieldAccessor($orig);

$this->assertEquals(5, $value);
Config::modify()->merge(DBInt::class, 'graphql_type', [
Expand Down Expand Up @@ -461,11 +466,33 @@ public function testDataObjectScaffolderComplexFieldTypes()
$fields = $result->config['fields']();
$myIntResolver = $fields['MyInt']['resolve'];

$value = $myIntResolver($fake, [], null, new ResolveInfo(['fieldName' => 'MyInt']));
$orig = StaticSchema::inst()->getFieldAccessor();
StaticSchema::inst()->setFieldAccessor($this->getMyFieldAccessor());
$value = $myIntResolver($fake, [], null, new FakeResolveInfo(['name' => 'MyInt', 'type' => 'int']));
StaticSchema::inst()->setFieldAccessor($orig);

$this->assertInstanceOf(DBInt::class, $value);
}

private function getMyFieldAccessor()
{
// same as FakeFieldAccessor, though without $field = strrev($fieldName)
return new class extends FakeFieldAccessor
{
public function getObjectFieldName(ViewableData $object, $fieldName, $opts = [])
{
return $object->hasField($fieldName) ? $fieldName : null;
}
public function getValue(ViewableData $object, $fieldName, $opts = [], $asObject = false)
{
if ($object->hasField($fieldName)) {
return $object->obj($fieldName);
}
return $asObject ? $object->obj($fieldName): $object->$fieldName;
}
};
}

public function testCloneTo()
{
$scaffolder = new DataObjectScaffolder(FakeRedirectorPage::class);
Expand Down
4 changes: 2 additions & 2 deletions tests/Scaffolding/Scaffolders/ItemQueryScaffolderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
namespace SilverStripe\GraphQL\Tests\Scaffolders\Scaffolding;

use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\ResolveInfo;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\GraphQL\Manager;
use SilverStripe\GraphQL\Scaffolding\Scaffolders\ItemQueryScaffolder;
use SilverStripe\GraphQL\Tests\Fake\FakeQueryPermissionChecker;
use SilverStripe\GraphQL\Tests\Fake\FakeResolveInfo;
use SilverStripe\ORM\ArrayList;
use SilverStripe\View\ArrayData;

Expand Down Expand Up @@ -74,7 +74,7 @@ public function testPermissionCheck($allow)
if ($allow === false) {
$this->expectException('Exception');
}
$result = $arr['resolve'](null, [], ['currentUser' => null], new ResolveInfo([]));
$result = $arr['resolve'](null, [], ['currentUser' => null], new FakeResolveInfo());
if ($allow !== false) {
$this->assertNotNull($result);
$this->assertEquals('Bar', $result->Foo);
Expand Down
4 changes: 2 additions & 2 deletions tests/Scaffolding/Scaffolders/ListQueryScaffolderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
namespace SilverStripe\GraphQL\Tests\Scaffolders\Scaffolding;

use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\ResolveInfo;
use InvalidArgumentException;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\GraphQL\Manager;
use SilverStripe\GraphQL\Scaffolding\Scaffolders\ListQueryScaffolder;
use SilverStripe\GraphQL\Tests\Fake\FakeQueryPermissionChecker;
use SilverStripe\GraphQL\Tests\Fake\FakeResolveInfo;
use SilverStripe\ORM\ArrayList;
use SilverStripe\View\ArrayData;

Expand Down Expand Up @@ -195,7 +195,7 @@ public function testPermissionCheck($allow)

$scaffolder->addToManager($manager);
$arr = $scaffolder->scaffold($manager);
$result = $arr['resolve'](null, [], ['currentUser' => null], new ResolveInfo([]));
$result = $arr['resolve'](null, [], ['currentUser' => null], new FakeResolveInfo());
$this->assertNotNull($result);
$expected = $allow === false ? 0 : 1;
$this->assertCount($expected, $result);
Expand Down
Loading

0 comments on commit 4f7e836

Please sign in to comment.