Youshido\Tests\Schema\ProcessorTest::testListEnumsSchemaOperations PHP Метод

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

    public function testListEnumsSchemaOperations()
    {
        $processor = new Processor(new Schema(['query' => new ObjectType(['name' => 'RootQuery', 'fields' => ['listQuery' => ['type' => new ListType(new TestEnumType()), 'resolve' => function () {
            return 'invalid list';
        }], 'listEnumQuery' => ['type' => new ListType(new TestEnumType()), 'resolve' => function () {
            return ['invalid enum'];
        }], 'invalidEnumQuery' => ['type' => new TestEnumType(), 'resolve' => function () {
            return 'invalid enum';
        }], 'enumQuery' => ['type' => new TestEnumType(), 'resolve' => function () {
            return 1;
        }], 'invalidNonNullQuery' => ['type' => new NonNullType(new IntType()), 'resolve' => function () {
            return null;
        }], 'invalidNonNullInsideQuery' => ['type' => new NonNullType(new IntType()), 'resolve' => function () {
            return 'hello';
        }], 'objectQuery' => ['type' => new TestObjectType(), 'resolve' => function () {
            return ['name' => 'John'];
        }], 'deepObjectQuery' => ['type' => new ObjectType(['name' => 'deepObject', 'fields' => ['object' => new TestObjectType(), 'enum' => new TestEnumType()]]), 'resolve' => function () {
            return ['object' => ['name' => 'John'], 'enum' => 1];
        }]]])]));
        $processor->processPayload('{ listQuery }');
        $this->assertEquals(['data' => ['listQuery' => null], 'errors' => [['message' => 'Not valid resolved type for field "listQuery"']]], $processor->getResponseData());
        $processor->getExecutionContext()->clearErrors();
        $processor->processPayload('{ listEnumQuery }');
        $this->assertEquals(['data' => ['listEnumQuery' => [null]], 'errors' => [['message' => 'Not valid resolved type for field "listEnumQuery"']]], $processor->getResponseData());
        $processor->getExecutionContext()->clearErrors();
        $processor->processPayload('{ invalidEnumQuery }');
        $this->assertEquals(['data' => ['invalidEnumQuery' => null], 'errors' => [['message' => 'Not valid resolved type for field "invalidEnumQuery"']]], $processor->getResponseData());
        $processor->getExecutionContext()->clearErrors();
        $processor->processPayload('{ enumQuery }');
        $this->assertEquals(['data' => ['enumQuery' => 'FINISHED']], $processor->getResponseData());
        $processor->processPayload('{ invalidNonNullQuery }');
        $this->assertEquals(['data' => ['invalidNonNullQuery' => null], 'errors' => [['message' => 'Cannot return null for non-nullable field "invalidNonNullQuery"']]], $processor->getResponseData());
        $processor->getExecutionContext()->clearErrors();
        $processor->processPayload('{ invalidNonNullInsideQuery }');
        $this->assertEquals(['data' => ['invalidNonNullInsideQuery' => null], 'errors' => [['message' => 'Not valid resolved type for field "invalidNonNullInsideQuery"']]], $processor->getResponseData());
        $processor->getExecutionContext()->clearErrors();
        $processor->processPayload('{ test:deepObjectQuery { object { name } } }');
        $this->assertEquals(['data' => ['test' => ['object' => ['name' => 'John']]]], $processor->getResponseData());
    }