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)); }
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); }
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)); }