示例#1
0
        public void QueryWithDefaultArgumentsOverrideCodeDefault()
        {
            var schemaProvider = SchemaBuilder.FromObject <TestSchema>();

            // code default of 5
            schemaProvider.ReplaceField("people", new { limit = 5 }, (db, p) => db.People.Take(p.limit), "List of people with limit");

            // should use gql default of 6
            var tree = new GraphQLCompiler(schemaProvider, new DefaultMethodProvider()).Compile(@"
query MyQuery($limit: Int = 6) {
    people(limit: $limit) { id name projects { id name } }
}
");

            Assert.Single(tree.Operations.First().QueryFields);
            TestSchema context = new TestSchema();

            for (int i = 0; i < 20; i++)
            {
                context.People.Add(new Person());
            }
            var     qr     = tree.ExecuteQuery(context, null);
            dynamic people = (dynamic)qr.Data["people"];

            // we only have the fields requested
            Assert.Equal(6, Enumerable.Count(people));
        }
示例#2
0
        public void TestTopLevelScalar()
        {
            var schemaProvider = SchemaBuilder.FromObject <TestSchema>();
            var gql            = new GraphQLCompiler(schemaProvider, new DefaultMethodProvider()).Compile(@"
query {
    totalPeople
}");

            var context = new TestSchema();

            context.People.Clear();
            for (int i = 0; i < 15; i++)
            {
                context.People.Add(new Person());
            }
            var     qr          = gql.ExecuteQuery(context, null);
            dynamic totalPeople = (dynamic)qr.Data["totalPeople"];

            // we only have the fields requested
            Assert.Equal(15, totalPeople);
        }
示例#3
0
        public void QueryWithEnumAsArg()
        {
            var schema = SchemaBuilder.FromObject <TestSchema>();

            schema.AddEnum("UserType", typeof(UserType), "Testing enums!");
            schema.ReplaceField("users", new
            {
                enumVal = (UserType?)null,
            },
                                (db, p) => db.Users, "Testing enum");

            var     gql     = new GraphQLCompiler(schema, new DefaultMethodProvider()).Compile(@"
query {
    users(enumVal: Admin)
}");
            var     context = new TestSchema();
            var     qr      = gql.ExecuteQuery(context, null);
            dynamic users   = (dynamic)qr.Data["users"];

            // we only have the fields requested
            Assert.Equal(2, Enumerable.Count(users));
        }