diff --git a/src/Parameters/PrefetchDataParameter.php b/src/Parameters/PrefetchDataParameter.php index 9aaab6c7a8..774f3a0bff 100644 --- a/src/Parameters/PrefetchDataParameter.php +++ b/src/Parameters/PrefetchDataParameter.php @@ -57,10 +57,7 @@ public function resolve(object|null $source, array $args, mixed $context, Resolv $this->processPrefetch($args, $context, $info, $prefetchBuffer); } - $result = $prefetchBuffer->getResult($source); - // clear internal storage - $prefetchBuffer->purgeResult($source); - return $result; + return $prefetchBuffer->getResult($source); }); } diff --git a/tests/Parameters/PrefetchDataParameterTest.php b/tests/Parameters/PrefetchDataParameterTest.php index a7e875c76a..b478880cbe 100644 --- a/tests/Parameters/PrefetchDataParameterTest.php +++ b/tests/Parameters/PrefetchDataParameterTest.php @@ -37,47 +37,10 @@ public function testResolveWithExistingResult(): void self::assertSame($prefetchResult, $this->deferredValue($resolvedParameterPromise)); } - public function testResolveWithoutExistingResult(): void - { - $prefetchResult = new stdClass(); - $source = new stdClass(); - $prefetchHandler = function (array $sources, string $second) use ($prefetchResult, $source) { - self::assertSame([$source], $sources); - self::assertSame('rty', $second); - - return $prefetchResult; - }; - - $parameter = new PrefetchDataParameter('field', $prefetchHandler, [ - new InputTypeParameter( - name: 'second', - type: Type::string(), - description: '', - hasDefaultValue: false, - defaultValue: null, - argumentResolver: new ArgumentResolver() - ) - ]); - - $context = new Context(); - $args = [ - 'first' => 'qwe', - 'second' => 'rty', - ]; - $buffer = $context->getPrefetchBuffer($parameter); - - $resolvedParameterPromise = $parameter->resolve($source, $args, $context, $this->createStub(ResolveInfo::class)); - - self::assertFalse($buffer->hasResult($source)); - self::assertSame([$source], $buffer->getObjectsByArguments($args)); - self::assertSame($prefetchResult, $this->deferredValue($resolvedParameterPromise)); - self::assertFalse($buffer->hasResult($source)); - } - private function deferredValue(Deferred $promise): mixed { $syncPromiseAdapter = new SyncPromiseAdapter(); return $syncPromiseAdapter->wait(new Promise($promise, $syncPromiseAdapter)); } -} \ No newline at end of file +}