From 84189095d3dd4f868f68a5d3e8c7c41d9647cf9b Mon Sep 17 00:00:00 2001 From: Benedikt Franke Date: Wed, 20 Oct 2021 14:02:34 +0200 Subject: [PATCH 1/2] Validate duplicate registered type https://github.com/nuwave/lighthouse/issues/1962 --- .../Unit/Schema/Types/LaravelEnumTypeTest.php | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/Unit/Schema/Types/LaravelEnumTypeTest.php b/tests/Unit/Schema/Types/LaravelEnumTypeTest.php index cec5ad2300..b40d5a7ec9 100644 --- a/tests/Unit/Schema/Types/LaravelEnumTypeTest.php +++ b/tests/Unit/Schema/Types/LaravelEnumTypeTest.php @@ -2,6 +2,7 @@ namespace Tests\Unit\Schema\Types; +use GraphQL\Error\InvariantViolation; use Nuwave\Lighthouse\Schema\TypeRegistry; use Nuwave\Lighthouse\Schema\Types\LaravelEnumType; use PHPUnit\Framework\Constraint\Callback; @@ -61,4 +62,24 @@ public function testReceivesEnumInstanceInternally(): void } '); } + + public function testValidatesDuplicateDefinition(): void + { + $this->typeRegistry->register( + new LaravelEnumType(AOrB::class) + ); + + $this->expectException(InvariantViolation::class); + $schema = $this->buildSchema(/** @lang GraphQL */ ' + type Query { + foo: ID + } + + enum AOrB { + A + B + } + '); + $schema->assertValid(); + } } From b2509742565c6df0efe03bbe37abc9dd101d6521 Mon Sep 17 00:00:00 2001 From: Benedikt Franke Date: Wed, 20 Oct 2021 12:02:48 +0000 Subject: [PATCH 2/2] Apply fixes from StyleCI --- src/Pagination/PaginateDirective.php | 3 +-- src/Schema/Directives/AggregateDirective.php | 3 +-- src/Schema/Directives/CountDirective.php | 3 +-- src/WhereConditions/WhereConditionsServiceProvider.php | 6 ++---- .../Schema/Directives/MorphManyDirectiveTest.php | 6 ++---- tests/Integration/Scout/SearchDirectiveTest.php | 3 +-- 6 files changed, 8 insertions(+), 16 deletions(-) diff --git a/src/Pagination/PaginateDirective.php b/src/Pagination/PaginateDirective.php index f2e884bd0c..21a7160f07 100644 --- a/src/Pagination/PaginateDirective.php +++ b/src/Pagination/PaginateDirective.php @@ -120,8 +120,7 @@ function ($root, array $args, GraphQLContext $context, ResolveInfo $resolveInfo) $this->directiveArgValue('scopes', []) ); - return PaginationArgs - ::extractArgs($args, $this->paginationType(), $this->paginateMaxCount()) + return PaginationArgs::extractArgs($args, $this->paginationType(), $this->paginateMaxCount()) ->applyToBuilder($query); } ); diff --git a/src/Schema/Directives/AggregateDirective.php b/src/Schema/Directives/AggregateDirective.php index 9ef93361d4..5666cf49e1 100644 --- a/src/Schema/Directives/AggregateDirective.php +++ b/src/Schema/Directives/AggregateDirective.php @@ -89,8 +89,7 @@ public function resolveField(FieldValue $fieldValue): FieldValue function ($root, array $args, GraphQLContext $context, ResolveInfo $resolveInfo) use ($modelArg) { /** @var Builder $query */ $query = $this - ->namespaceModelClass($modelArg) - ::query(); + ->namespaceModelClass($modelArg)::query(); $this->makeBuilderDecorator($resolveInfo)($query); diff --git a/src/Schema/Directives/CountDirective.php b/src/Schema/Directives/CountDirective.php index a946f726b4..766365eb90 100644 --- a/src/Schema/Directives/CountDirective.php +++ b/src/Schema/Directives/CountDirective.php @@ -50,8 +50,7 @@ public function resolveField(FieldValue $fieldValue): FieldValue $fieldValue->setResolver( function ($root, array $args, GraphQLContext $context, ResolveInfo $resolveInfo) use ($modelArg): int { $query = $this - ->namespaceModelClass($modelArg) - ::query(); + ->namespaceModelClass($modelArg)::query(); $this->makeBuilderDecorator($resolveInfo)($query); diff --git a/src/WhereConditions/WhereConditionsServiceProvider.php b/src/WhereConditions/WhereConditionsServiceProvider.php index c0961f9d0c..b3cb88f737 100644 --- a/src/WhereConditions/WhereConditionsServiceProvider.php +++ b/src/WhereConditions/WhereConditionsServiceProvider.php @@ -72,8 +72,7 @@ public static function createWhereConditionsInputType(string $name, string $desc /** @var \Nuwave\Lighthouse\WhereConditions\Operator $operator */ $operator = app(Operator::class); - $operatorName = Parser - ::enumTypeDefinition( + $operatorName = Parser::enumTypeDefinition( $operator->enumDefinition() ) ->name @@ -113,8 +112,7 @@ public static function createHasConditionsInputType(string $name, string $descri /** @var \Nuwave\Lighthouse\WhereConditions\Operator $operator */ $operator = app(Operator::class); - $operatorName = Parser - ::enumTypeDefinition( + $operatorName = Parser::enumTypeDefinition( $operator->enumDefinition() ) ->name diff --git a/tests/Integration/Schema/Directives/MorphManyDirectiveTest.php b/tests/Integration/Schema/Directives/MorphManyDirectiveTest.php index e0c36d7a9a..7dfd42df1e 100644 --- a/tests/Integration/Schema/Directives/MorphManyDirectiveTest.php +++ b/tests/Integration/Schema/Directives/MorphManyDirectiveTest.php @@ -52,8 +52,7 @@ public function setUp(): void $this->task = factory(Task::class)->create([ 'user_id' => $this->user->id, ]); - $this->taskImages = Collection - ::times(10) + $this->taskImages = Collection::times(10) ->map(function (): Image { $image = $this->task ->images() @@ -71,8 +70,7 @@ public function setUp(): void $this->post = factory(Post::class)->create([ 'user_id' => $this->user->id, ]); - $this->postImages = Collection - ::times( + $this->postImages = Collection::times( $this->faker()->numberBetween(1, 10) ) ->map(function () { diff --git a/tests/Integration/Scout/SearchDirectiveTest.php b/tests/Integration/Scout/SearchDirectiveTest.php index 5f8939e7e1..a5f44c175c 100644 --- a/tests/Integration/Scout/SearchDirectiveTest.php +++ b/tests/Integration/Scout/SearchDirectiveTest.php @@ -30,8 +30,7 @@ public function setUp(): void parent::setUp(); $this->engineManager = Mockery::mock(EngineManager::class); - $this->engine = Mockery - ::mock(NullEngine::class) + $this->engine = Mockery::mock(NullEngine::class) ->makePartial(); $this->app->singleton(EngineManager::class, function (): MockInterface {