Skip to content

Commit

Permalink
Merge pull request #9 from worksome/feat-ignore-description-on-base-t…
Browse files Browse the repository at this point in the history
…ypes

Add support for ignoring root type names
  • Loading branch information
Oliver Nybroe authored Jun 20, 2022
2 parents 0898760 + 28d40c0 commit 195346a
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 3 deletions.
6 changes: 6 additions & 0 deletions src/Inspections/DescriptionRequiredInspection.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,13 @@
use Worksome\Graphlint\InspectionDescription;
use Worksome\Graphlint\ProblemsHolder;
use Worksome\Graphlint\Utils\ApolloFederationChecker;
use Worksome\Graphlint\Utils\RootTypeChecker;

class DescriptionRequiredInspection extends Inspection
{
public function __construct(
private readonly ApolloFederationChecker $apolloFederationChecker,
private readonly RootTypeChecker $baseTypeChecker,
) {
}

Expand Down Expand Up @@ -100,6 +102,10 @@ private function visitDefinition(Node $node, ProblemsHolder $problemsHolder): vo
return;
}

if ($this->baseTypeChecker->isRootName($node->name)) {
return;
}

if ($this->apolloFederationChecker->isApolloDefinitionName($node->name)) {
return;
}
Expand Down
26 changes: 26 additions & 0 deletions src/Utils/RootTypeChecker.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php

declare(strict_types=1);

namespace Worksome\Graphlint\Utils;

use GraphQL\Language\AST\NameNode;

class RootTypeChecker
{
public function __construct(
private readonly NodeNameResolver $nameResolver,
) {
}

public function isRootName(NameNode $nameNode): bool
{
$name = $this->nameResolver->getName($nameNode);

if ($name === null) {
return false;
}

return RootTypeName::tryFrom($name) !== null;
}
}
11 changes: 11 additions & 0 deletions src/Utils/RootTypeName.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

declare(strict_types=1);

namespace Worksome\Graphlint\Utils;

enum RootTypeName: string
{
case Query = 'Query';
case Mutation = "Mutation";
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
type Query
type Mutation
7 changes: 4 additions & 3 deletions tests/Pest.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,11 @@
);

if (Str::endsWith($smartFileInfo->getRealPath(), '.skip.graphql.inc')) {
Collection::make($result->getProblemsHolder()->getProblems())
$descriptions = Collection::make($result->getProblemsHolder()->getProblems())
->map(fn(ProblemDescriptor $descriptor) => $descriptor->getDescription())
->dump();
expect($result->getProblemsHolder()->getProblems())->toHaveCount(0);
->all();
expect($descriptions)->toEqual([])
->and($result->getProblemsHolder()->getProblems())->toHaveCount(0);
return;
}

Expand Down

0 comments on commit 195346a

Please sign in to comment.