Skip to content

Commit

Permalink
fix(graphql): @searchBy will correctly extends operators for aliases.
Browse files Browse the repository at this point in the history
  • Loading branch information
LastDragon-ru committed Aug 20, 2022
1 parent 3b1c246 commit ad3dd45
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
12 changes: 9 additions & 3 deletions packages/graphql/src/SearchBy/Scalars.php
Original file line number Diff line number Diff line change
Expand Up @@ -168,11 +168,17 @@ public function getScalarOperators(string $scalar, bool $nullable): array {
}

// Base
$base = $scalar;
$operators = $scalar;

do {
$operators = $this->scalars[$operators] ?? [];
} while (!is_array($operators));
$isAlias = !is_array($operators);

if ($isAlias) {
$base = $operators;
}
} while ($isAlias);

// Create Instances
$container = $this->getContainer();
Expand All @@ -181,8 +187,8 @@ public function getScalarOperators(string $scalar, bool $nullable): array {
}, array_unique($operators));

// Extends
if (isset($this->extends[$scalar])) {
$extends = $this->getScalarOperators($this->extends[$scalar], $nullable);
if (isset($this->extends[$base])) {
$extends = $this->getScalarOperators($this->extends[$base], $nullable);
$operators = array_merge($operators, $extends);
}

Expand Down
5 changes: 5 additions & 0 deletions packages/graphql/src/SearchBy/ScalarsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ public function testGetScalarOperatorsExtends(): void {

$scalars->addScalar('test', [Equal::class, Equal::class]);
$scalars->addScalar('base', [NotEqual::class]);
$scalars->addScalar('alias', 'test');

self::assertEquals(
[Equal::class, NotEqual::class],
Expand All @@ -119,6 +120,10 @@ public function testGetScalarOperatorsExtends(): void {
[Equal::class, NotEqual::class, IsNull::class, IsNotNull::class],
$this->toClassNames($scalars->getScalarOperators('test', true)),
);
self::assertEquals(
[Equal::class, NotEqual::class, IsNull::class, IsNotNull::class],
$this->toClassNames($scalars->getScalarOperators('alias', true)),
);
}

/**
Expand Down

0 comments on commit ad3dd45

Please sign in to comment.