示例#1
0
        public async Task TestJson()
        {
            var organisations = new OrganisationTable("orgs");
            var users         = new UserTable();

            var services = new ServiceCollection()
                           .AddRoscoeSqlServer("Server=localhost;Database=test;");

            using (var provider = services.BuildServiceProvider())
            {
                var db     = new RoscoeDb(provider);
                var schema = GraphQLSchema.Create(x => new RootQueryType(x, db));
                var result = await schema.ExecuteRequestAsync(@"query {
    Organisations {
        id: Id
        Name
        UserNames
        Users {
            Id
            Name
            Organisation {
                Name
            }
        }
    }
}", null);

                var json = JsonConvert.SerializeObject(result, Formatting.Indented);
            }
        }
示例#2
0
        public async Task TestStrongTypeQuery()
        {
            var services = new ServiceCollection()
                           .AddRoscoeSqlServer("Server=localhost;Database=test;");

            using (var provider = services.BuildServiceProvider())
            {
                var db     = new RoscoeDb(provider);
                var schema = GraphQLSchema.Create(x => new RootQueryType(x, db));

                var result = await schema.QueryAsync(x => new
                {
                    Organisations = x.Organisations()
                                    .Select(y => new
                    {
                        //Foo = y.Id().GetValue(null),
                        Id    = y.Id().Value() + "foo",
                        Name  = y.Name().Value(),
                        Type  = y.Type().Value(),
                        Users = y.Users()
                                .Select(z => new
                        {
                            Org = z.Organisation()
                                  .Select(a => new
                            {
                                Name = a.Name().Value(),
                            }),
                        }),
                    }),
                });

                /*
                 * schema.ExecuteQueryAsync((x, dr) => new
                 * {
                 *  Organisations = GraphQLSchemaOperations.Select(x.Organisations(), dr, (y, dr2) => new
                 *  {
                 *      Id = (string)y.Id.GetValue(dr2),
                 *      Name = (string)y.Name.GetValue(dr2),
                 *      Users = GraphQLSchemaOperations.Select(y.Users(), dr2, (z, dr3) => new
                 *      {
                 *          Org = GraphQLSchemaOperations.Select(z.Organisation(), dr3, (a, dr4) => new
                 *          {
                 *              Name = (string)a.Name().GetValue(dr4),
                 *          },
                 *      },
                 *  }),
                 * });
                 *
                 */

                var json = JsonConvert.SerializeObject(result, Formatting.Indented);
            }
        }
示例#3
0
        public async Task Test1()
        {
            // arrange
            var organisation = new OrganisationRecord
            {
                Id    = Guid.NewGuid(),
                Name  = "Organisation 1",
                Users = new List <UserRecord>
                {
                    new UserRecord
                    {
                        Id   = Guid.NewGuid(),
                        Name = "User 1",
                    },
                    new UserRecord
                    {
                        Id   = Guid.NewGuid(),
                        Name = "User 2",
                    },
                },
            };
            var schema = GraphQLSchema.Create(x => new RootQueryType(x));

            // act
            var result = await schema.ExecuteRequestAsync(@"query {
                Organisations {
                    id: Id
                    Name
                    Users {
                        Id
                        Name
                    }
                }
            }", null, null);

            // assert
            Assert.Equal(
                JsonConvert.SerializeObject(new
            {
                id = organisation.Id,
                organisation.Name,
                organisation.Users,
            }),
                JsonConvert.SerializeObject(result)
                );
        }
示例#4
0
        public async Task Test2()
        {
            // arrange
            var organisation = new OrganisationRecord
            {
                Id    = Guid.NewGuid(),
                Name  = "Organisation 1",
                Users = new List <UserRecord>
                {
                    new UserRecord
                    {
                        Id   = Guid.NewGuid(),
                        Name = "User 1",
                    },
                    new UserRecord
                    {
                        Id   = Guid.NewGuid(),
                        Name = "User 2",
                    },
                },
            };
            var schema = GraphQLSchema.Create(x => new RootQueryType(x));

            // act
            var result = await schema.ExecuteRequestAsync(@"query($values: [String!]!) {
                Values(values: $values)
            }",
                                                          new Dictionary <string, object>
            {
                { "values", new[] { "one", "two" } },
            },
                                                          null);

            // assert
            Assert.Equal(
                JsonConvert.SerializeObject(new
            {
                id = organisation.Id,
                organisation.Name,
                organisation.Users,
            }),
                JsonConvert.SerializeObject(result)
                );
        }