Exemple #1
0
 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;
 }
Exemple #2
0
 /**
  * @param $fieldConfig
  *
  * @dataProvider invalidFieldProvider
  * @expectedException Youshido\GraphQL\Exception\ConfigurationException
  */
 public function testInvalidFieldParams($fieldConfig)
 {
     $field = new Field($fieldConfig);
     ConfigValidator::getInstance()->assertValidConfig($field->getConfig());
 }
Exemple #3
0
 /**
  * @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);
 }