Youshido\Tests\Schema\SchemaTest::testCustomTypes PHP Метод

testCustomTypes() публичный Метод

public testCustomTypes ( )
    public function testCustomTypes()
    {
        $authorType = null;
        $userInterface = new ObjectType(['name' => 'UserInterface', 'fields' => ['name' => new StringType()], 'resolveType' => function () use($authorType) {
            return $authorType;
        }]);
        $authorType = new ObjectType(['name' => 'Author', 'fields' => ['name' => new StringType()], 'interfaces' => [$userInterface]]);
        $schema = new Schema(['query' => new ObjectType(['name' => 'QueryType', 'fields' => ['user' => ['type' => $userInterface, 'resolve' => function () {
            return ['name' => 'Alex'];
        }]]])]);
        $schema->getTypesList()->addType($authorType);
        $processor = new Processor($schema);
        $processor->processPayload('{ user { name } }');
        $this->assertEquals(['data' => ['user' => ['name' => 'Alex']]], $processor->getResponseData());
        $processor->processPayload('{
                    __schema {
                        types {
                            name
                        }
                    }
                }');
        $data = $processor->getResponseData();
        $this->assertArraySubset([11 => ['name' => 'Author']], $data['data']['__schema']['types']);
        $processor->processPayload('{ user { name { } } }');
        $result = $processor->getResponseData();
        $this->assertEquals(['errors' => [['message' => 'Unexpected token "RBRACE"', 'locations' => [['line' => 1, 'column' => 19]]]]], $result);
        $processor->getExecutionContext()->clearErrors();
        $processor->processPayload('{ user { name { invalidSelection } } }');
        $result = $processor->getResponseData();
        $this->assertEquals(['data' => ['user' => null], 'errors' => [['message' => 'You can\'t specify fields for scalar type "String"', 'locations' => [['line' => 1, 'column' => 10]]]]], $result);
    }