protected function resolveList(FieldInterface $field, AstFieldInterface $ast, $parentValue) { /** @var AstQuery $ast */ $resolvedValue = $this->doResolve($field, $ast, $parentValue); $this->resolveValidator->assertValidResolvedValueForField($field, $resolvedValue); if (null === $resolvedValue) { return null; } /** @var AbstractListType $type */ $type = $field->getType()->getNullableType(); $itemType = $type->getNamedType(); $fakeAst = clone $ast; if ($fakeAst instanceof AstQuery) { $fakeAst->setArguments([]); } $fakeField = new Field(['name' => $field->getName(), 'type' => $itemType]); $result = []; foreach ($resolvedValue as $resolvedValueItem) { try { $fakeField->getConfig()->set('resolve', function () use($resolvedValueItem) { return $resolvedValueItem; }); switch ($itemType->getNullableType()->getKind()) { case TypeMap::KIND_ENUM: case TypeMap::KIND_SCALAR: $value = $this->resolveScalar($fakeField, $fakeAst, $resolvedValueItem); break; case TypeMap::KIND_OBJECT: $value = $this->resolveObject($fakeField, $fakeAst, $resolvedValueItem); break; case TypeMap::KIND_UNION: case TypeMap::KIND_INTERFACE: $value = $this->resolveComposite($fakeField, $fakeAst, $resolvedValueItem); break; default: $value = null; } } catch (\Exception $e) { $this->executionContext->addError($e); $value = null; } $result[] = $value; } return $result; }
/** * @param $fieldConfig * * @dataProvider invalidFieldProvider * @expectedException Youshido\GraphQL\Exception\ConfigurationException */ public function testInvalidFieldParams($fieldConfig) { $field = new Field($fieldConfig); ConfigValidator::getInstance()->assertValidConfig($field->getConfig()); }
/** * @param AbstractSchema|Field $value * * @return string|null * * //todo implement value printer */ public function resolveDefaultValue($value) { $resolvedValue = $value->getConfig()->getDefaultValue(); return $resolvedValue === null ? $resolvedValue : json_encode($resolvedValue); }