Esempio n. 1
0
        public void BuildsSchemaType()
        {
            var server = new Model().CreateServer();

            var rawResult = server.Execute <JObject>(@"{
                __type(name:""Query"") {
                    name
                    kind
                    fields {
                        name
                        args {
                            name
                            type {
                                name
                                kind
                                ofType {
                                    name
                                    kind
                                }
                            }
                        }
                        type {
                            name
                            kind
                            fields {
                                name
                                type {
                                    name
                                    kind
                                    ofType {
                                        name
                                        kind
                                    }
                                }
                            }
                        }
                    }
                }
            }");

            var expectedType = new ObjectType {
                Kind   = ObjectKinds.Object,
                Name   = "Query",
                Fields = new [] {
                    new ObjectField
                    {
                        Name = "children",
                        Type = ObjectType.ConnectionOf(
                            new ObjectType {
                            Name = "ChildObject",
                            Kind = ObjectKinds.Object
                        }
                            ),
                        Args = new [] {
                            new FieldArgument {
                                Name = "offset",
                                Type = ObjectType.NonNullableOf(ObjectType.Int)
                            },
                            new FieldArgument {
                                Name = "count",
                                Type = ObjectType.NonNullableOf(ObjectType.Int)
                            },
                            new FieldArgument {
                                Name = "orderBy",
                                Type = new ObjectType {
                                    Name = "ChildObjectOrderBy",
                                    Kind = ObjectKinds.Enum
                                }
                            },
                        }
                    }
                }
            };

            var queryType = rawResult["__type"].ToObject <ObjectType>();

            queryType.Should().BeEquivalentTo(expectedType);
        }