public void TestSourceWhereInIdParameter()
        {
            int[]  id_in  = new int[] { 1, 2 };
            TypeQL typeQL = new TypeQL(
                new Variables("getSources",
                              new Variable <int[]>("id_in", id_in)
                              ),
                new QueryType("source_in",
                              new Fields(
                                  new Field("id"),
                                  new Field("name"),
                                  new Field("value"),
                                  new Field("created"),
                                  new Field("active"),
                                  new Field("time")
                                  ),
                              new Arguments(
                                  new Argument(new Parameter("id_in"))
                                  )
                              )
                );
            var text = typeQL.ToBodyJson();
            IExecutionResult result = RequestExecutor.Execute(text, typeQL.Variables.ToDictionary());

            //var json = result.ToJson();
            Assert.IsNull(result.Errors);
        }
        public void TestSourceAddWithArguments()
        {
            TypeQL typeQL = new TypeQL(
                new QueryType("source_param_add",
                              new Fields(
                                  new Field("id"),
                                  new Field("name"),
                                  new Field("value"),
                                  new Field("created"),
                                  new Field("active"),
                                  new Field("time")
                                  ),
                              new Arguments(
                                  new Argument("id", 0),
                                  new Argument("name", "source 4"),
                                  new Argument("value", 1000M),
                                  new Argument("created", null),
                                  new Argument("active", true),
                                  new Argument("time", DateTime.Now)
                                  )
                              )
                );

            var text = typeQL.ToBodyJson();
            IExecutionResult result = RequestExecutor.Execute(text);

            //var json = result.ToJson();
            Assert.IsNull(result.Errors);
        }
        public void TestTypeQLMultipleQueryAndVariables()
        {
            Variables  variables  = new Variables("get", new Variable <bool>("load", true));
            IQueryType queryType0 = new QueryType("states", new Fields(
                                                      new Field("id"),
                                                      new Field("uf"),
                                                      new Field(new QueryType("contries", new Fields(
                                                                                  new Field("id"),
                                                                                  new Field("name")
                                                                                  ))))
                                                  );

            IQueryType queryType1 = new QueryType("contries", new Fields(
                                                      new Field("id"),
                                                      new Field("name")
                                                      )
                                                  );

            ITypeQL typeQL0 = new TypeQL(variables, queryType0, queryType1);

            Assert.IsTrue(typeQL0.QueryTypes.Length == 2);
            Assert.IsNotNull(typeQL0.Variables);
            Assert.IsTrue(typeQL0.Variables.Count == 1);
            string expected0 = "{\"query\":\"query get($load:Boolean){states{id,uf,contries{id,name}}contries{id,name}}\",\"variables\":{\"load\":true}}";

            Assert.AreEqual(expected0, typeQL0.ToStringJson());
        }
        public void TestCitiesList()
        {
            TypeQL typeQL = new TypeQL(
                new QueryType(
                    "cities",
                    new Fields(
                        new Field("id"),
                        new Field("name"),
                        new Field("stateId"),
                        new Field(new QueryType("state",
                                                new Fields(
                                                    new Field("id"),
                                                    new Field("name")
                                                    )
                                                ))
                        )
                    )
                );
            var text = typeQL.ToBodyJson();
            //Debug.Print(typeQL.ToStringJson());
            IExecutionResult result = RequestExecutor.Execute(text);
            var json = result.ToJson();

            Assert.IsNull(result.Errors);
        }
        public void TestConvertTimeSpan()
        {
            Source source = new Source()
            {
                Id   = 0,
                Time = DateTime.Parse("01/01/1991")
            };
            TypeQL typeQL = new TypeQL(
                new Variables("getSource",
                              new Variable <object>("input", source, "source_input")
                              ),
                new QueryType("source_add",
                              new Fields(
                                  new Field("id"),
                                  new Field("name"),
                                  new Field("value"),
                                  new Field("active"),
                                  new Field("created"),
                                  new Field("time")
                                  ),
                              new Arguments(
                                  new Argument(
                                      new Parameter("input")
                                      )
                                  )
                              )
                );

            string expected = "{\"query\":\"query getSource($input:source_input){source_add(input:$input){id,name,value,active,created,time}}\",\"variables\":{\"input\":{\"id\":0,\"name\":null,\"value\":null,\"created\":null,\"active\":null,\"time\":\"1991-01-01T00:00:00\"}}}";

            Assert.AreEqual(expected, typeQL.ToStringJson());
        }
        public void TestTypeQLMultipleQuery()
        {
            IQueryType queryType0 = new QueryType("states", new Fields(
                                                      new Field("id"),
                                                      new Field("uf"),
                                                      new Field(new QueryType("contries", new Fields(
                                                                                  new Field("id"),
                                                                                  new Field("name")
                                                                                  ))))
                                                  );

            IQueryType queryType1 = new QueryType("contries", new Fields(
                                                      new Field("id"),
                                                      new Field("name")
                                                      )
                                                  );

            ITypeQL typeQL0 = new TypeQL(queryType0, queryType1);

            Assert.IsTrue(typeQL0.QueryTypes.Length == 2);
            Assert.IsNull(typeQL0.Variables);
            string expected0 = "{\"query\":\"{states{id,uf,contries{id,name}}contries{id,name}}\"}";

            Assert.AreEqual(expected0, typeQL0.ToStringJson());
        }
        public void TestVariablesNullable()
        {
            Source source = new Source();
            TypeQL typeQL = new TypeQL(
                new Variables("getSource",
                              new Variable <object>("input", source, "source_input", format: Format.FormatClass)
                              ),
                new QueryType("source_add",
                              new Fields(
                                  new Field("id"),
                                  new Field("name"),
                                  new Field("value"),
                                  new Field("active"),
                                  new Field("created"),
                                  new Field("time")
                                  ),
                              new Arguments(
                                  new Argument(
                                      new Parameter("input")
                                      )
                                  )
                              )
                );
            string expected = "{\"query\":\"query getSource($input:source_input){source_add(input:$input){id,name,value,active,created,time}}\",\"variables\":{\"input\":{\"id\":0,\"name\":null,\"value\":null,\"created\":null,\"active\":null,\"time\":null}}}";

            Assert.AreEqual(expected, typeQL.ToStringJson());
        }
        public void TestCarAdd()
        {
            Car car = new Car()
            {
                Id       = 0,
                Title    = "Car 1",
                Purchase = DateTime.Parse("2019-08-14 23:54:18"),
                Value    = 10000.00M,
                Active   = true,
                Time     = null
            };
            TypeQL typeQL = new TypeQL(
                new QueryType(
                    "car_add",
                    new Fields(
                        new Field("id"),
                        new Field("title"),
                        new Field("purchase"),
                        new Field("value"),
                        new Field("active"),
                        new Field("time")
                        ),
                    new Arguments(new Argument("car", car))
                    )
                );
            string expect = "{\"query\":\"{car_add(car:{id:0,title:\\\"Car 1\\\",purchase:\\\"2019-08-14T23:54:18.000Z\\\",value:10000.00,active:true,time:null}){id,title,purchase,value,active,time}}\"}";

            Assert.AreEqual(expect, typeQL);
        }
        public void TestStateWithFragment()
        {
            FragmentType fragmentType = new FragmentType("fields", "state_type");
            TypeQL       typeQL       = new TypeQL(
                new Fragments(
                    new Fragment(
                        new QueryType(fragmentType,
                                      new Fields(new Field("id"), new Field("name"))
                                      )
                        )
                    ),
                new QueryType(
                    "states",
                    new Fields(
                        new Field(fragmentType)
                        )
                    )
                );
            var text = typeQL.ToBodyJson();
            //var text0 = typeQL.ToStringJson();
            IExecutionResult result = RequestExecutor.Execute(text);
            var json = result.ToJson();

            Assert.IsNull(result.Errors);
        }
        public void TestParamFullNullable()
        {
            TypeQL typeQL = new TypeQL(
                new QueryType("source_param_add",
                              new Fields(
                                  new Field("id"),
                                  new Field("name"),
                                  new Field("value"),
                                  new Field("active"),
                                  new Field("created"),
                                  new Field("time")
                                  ),
                              new Arguments(
                                  new Argument("id", null),
                                  new Argument("name", null),
                                  new Argument("value", null),
                                  new Argument("active", null),
                                  new Argument("created", null),
                                  new Argument("time", null)
                                  )
                              )
                );

            string expected = "{\"query\":\"{source_param_add(id:null,name:null,value:null,active:null,created:null,time:null){id,name,value,active,created,time}}\"}";

            Assert.AreEqual(expected, typeQL.ToStringJson());
        }
        public void TestStateAddWithFragmentWithArguments()
        {
            var    fragmentType = new FragmentType("fields", "state_type");
            TypeQL typeQL       = new TypeQL(
                new Fragments(
                    new Fragment(
                        new QueryType(fragmentType,
                                      new Fields(new Field("id"), new Field("name"))
                                      )
                        )
                    ),
                new QueryType(
                    "state_add",
                    new Fields(
                        new Field(fragmentType)
                        ),
                    new Arguments(
                        new Argument("input",
                                     new State {
                Id = 0, Name = "MINAS GERAIS", Cities = new List <City>()
            }
                                     )
                        )
                    )
                );
            var text = typeQL.ToBodyJson();
            IExecutionResult result = RequestExecutor.Execute(text);
            var json = result.ToJson();

            Assert.IsNull(result.Errors);
        }
        public void TestCarAddWithFragmentWithVariables()
        {
            Car car = new Car
            {
                Active   = true,
                Purchase = DateTime.Parse("02/01/1999"),
                Time     = TimeSpan.Parse("13:14:55"),
                Title    = "Car One",
                Value    = 10000M,
                Id       = 0
            };
            var fragmentType = new FragmentType("fields", "car_type");
            var fragments    = new Fragments(new Fragment(new QueryType(fragmentType,
                                                                        new Fields(new Field("id"), new Field("title"), new Field("active")))));
            var arguments  = new Arguments(new Argument(new Parameter("input")));
            var variables  = new Variables("getCar", new Variable <object>("input", car, "car_input"));
            var queryTypes = new QueryType("car_add", new Fields(new Field(fragmentType)), arguments);

            TypeQL typeQL = new TypeQL(variables, fragments, queryTypes);

            var text = typeQL.ToBodyJson();
            //var textComplete = typeQL.ToStringJson();
            var varDic = typeQL.Variables.ToDictionary();
            IExecutionResult result = RequestExecutor.Execute(text, varDic);
            var json = result.ToJson();

            Assert.IsNull(result.Errors);
        }
        public void TestSourceAddWithParameterComplex()
        {
            Source source = new Source
            {
                Name = "Complex Type With Parameter"
            };
            TypeQL typeQL = new TypeQL(
                new Variables("getSourceAdd",
                              new Variable <Source>("input", source, "source_input")
                              ),
                new QueryType("source_add",
                              new Fields(
                                  new Field("id"),
                                  new Field("name"),
                                  new Field("value"),
                                  new Field("created"),
                                  new Field("active"),
                                  new Field("time")
                                  ),
                              new Arguments(
                                  new Argument(new Parameter("input"))
                                  )
                              )
                );
            var text = typeQL.ToBodyJson();
            IExecutionResult result = RequestExecutor.Execute(text, typeQL.Variables.ToDictionary());

            //var json = result.ToJson();
            Assert.IsNull(result.Errors);
        }
        public void TestSourceAddWithArgumentsComplex()
        {
            Source source = new Source
            {
                Name = "Complex Type With Arguments"
            };
            TypeQL typeQL = new TypeQL(
                new QueryType("source_add",
                              new Fields(
                                  new Field("id"),
                                  new Field("name"),
                                  new Field("value"),
                                  new Field("created"),
                                  new Field("active"),
                                  new Field("time")
                                  ),
                              new Arguments(
                                  new Argument("input", source)
                                  )
                              )
                );
            var text = typeQL.ToBodyJson();
            IExecutionResult result = RequestExecutor.Execute(text);

            //var json = result.ToJson();
            Assert.IsNull(result.Errors);
        }
        public void TestSourceListFieldSimplyParamStringWithAlias()
        {
            TypeQL typeQL = new TypeQL(
                new QueryType("sources", new Fields("id,_id", "name,_name"))
                );
            var text = typeQL.ToBodyJson();
            IExecutionResult result = RequestExecutor.Execute(text);
            var json = result.ToJson();

            Assert.IsNull(result.Errors);
        }
Exemplo n.º 16
0
        public async Task <T> PostAsync <T>(TypeQL typeQL)
        {
            StringContent       content = new StringContent(typeQL, Encoding.UTF8, "application/json");
            HttpResponseMessage message = await Client.PostAsync(string.Empty, content);

            if (message.StatusCode == System.Net.HttpStatusCode.OK)
            {
                string json = await message.Content.ReadAsStringAsync();

                T data = Deserialize <T>(json);
                return(data);
            }
            return(default);
Exemplo n.º 17
0
        private async Task <Car> CreateOrUpdateAsync(Car car, string name)
        {
            using TypeQL typeQL = new TypeQL(
                      new QueryType(name, "data",
                                    new Fields(
                                        new Field("id"),
                                        new Field("title"),
                                        new Field("purchase"),
                                        new Field("value"),
                                        new Field("active"),
                                        new Field("time")
                                        ),
                                    new Arguments(
                                        new Argument("input", car)
                                        )
                                    )
                      );
            var result = await PostAsync <CarRoot>(typeQL);

            return(result.Data.Data);

            #region createoraddwithvariables
            //try
            //{
            //   TypeQL typeQL = new TypeQL(
            //      new Variables("getCars",
            //         new Variable<object>("input", car, "car_input")
            //      ),
            //      new QueryType(name,
            //         new Fields(
            //            new Field("id"),
            //            new Field("title"),
            //            new Field("purchase"),
            //            new Field("value"),
            //            new Field("active"),
            //            new Field("time")
            //         ),
            //         new Arguments(
            //            new Argument(new Parameter("input"))
            //         )
            //      )
            //   );
            //   var result = await PostAsync<CarRoot>(typeQL);
            //   return result.Data.Data;
            //}
            //catch (System.Exception ex)
            //{
            //   throw ex;
            //}
            #endregion
        }
        public void TestSourceListWithAlias()
        {
            TypeQL typeQL = new TypeQL(
                new QueryType(
                    "sources", "datas",
                    new Fields(
                        new Field("id", "code"),
                        new Field("name", "source_name")
                        )
                    )
                );
            var text = typeQL.ToBodyJson();
            IExecutionResult result = RequestExecutor.Execute(text);
            var json = result.ToJson();

            Assert.IsNull(result.Errors);
        }
        public void TestCarDelete()
        {
            TypeQL typeQL = new TypeQL(
                new QueryType(
                    "car_remove",
                    new Fields(
                        new Field("description"),
                        new Field("count"),
                        new Field("status")
                        ),
                    new Arguments(new Argument("id", 1))
                    )
                );
            string expect = "{\"query\":\"{car_remove(id:1){description,count,status}}\"}";

            Assert.AreEqual(expect, typeQL);
        }
Exemplo n.º 20
0
        public async Task <IList <Car> > ToListAsync()
        {
            using TypeQL typeQL = new TypeQL(
                      new QueryType("cars",
                                    new Fields(
                                        new Field("id"),
                                        new Field("title"),
                                        new Field("purchase"),
                                        new Field("value"),
                                        new Field("active"),
                                        new Field("time")
                                        )
                                    )
                      );
            var result = await PostAsync <CarListRoot>(typeQL);

            return(result.Data.Cars);
        }
Exemplo n.º 21
0
        public async Task <DeletedTypeData> RemoveAsync(int id)
        {
            using TypeQL typeQL = new TypeQL(
                      new QueryType("car_remove", "data",
                                    new Fields(
                                        new Field("count"),
                                        new Field("status"),
                                        new Field("description")
                                        ),
                                    new Arguments(
                                        new Argument("id", id)
                                        )
                                    )
                      );
            var result = await PostAsync <DeletedTypeData>(typeQL);

            return(result);
        }
        public void TestSourceByIdWithArgument()
        {
            TypeQL typeQL = new TypeQL(
                new QueryType(
                    "source_find",
                    new Fields(
                        new Field("id"),
                        new Field("name")
                        ),
                    new Arguments(new Argument("id", 1))
                    )
                );
            var text = typeQL.ToBodyJson();
            IExecutionResult result = RequestExecutor.Execute(text);

            //var json = result.ToJson();
            Assert.IsNull(result.Errors);
        }
        public void TestMultipleGraphQLWithVariables()
        {
            TypeQL typeQL = new TypeQL(
                new Variables("getStates",
                              new Variable <int>("id", 11, true, new VariableValueDefaultInt(0))
                              ),
                new QueryType("state_find",
                              new Fields(
                                  new Field("id"),
                                  new Field("uf"),
                                  new Field(
                                      new QueryType("country",
                                                    new Fields(
                                                        new Field("id"),
                                                        new Field("name")
                                                        )
                                                    )
                                      )
                                  ),
                              new Arguments(new Argument(new Parameter("id")))
                              ),
                new QueryType("countries",
                              new Fields(
                                  new Field("id"),
                                  new Field("name"),
                                  new Field(
                                      new QueryType("state",
                                                    new Fields(
                                                        new Field("id"),
                                                        new Field("uf")
                                                        )
                                                    )
                                      )
                                  ),
                              new Arguments(
                                  new Argument("load", true)
                                  )
                              )
                );
            string expect = "{\"query\":\"query getStates($id:Int!=0){state_find(id:$id){id,uf,country{id,name}}countries(load:true){id,name,state{id,uf}}}\",\"variables\":{\"id\":11}}";

            Assert.AreEqual(expect, typeQL);
        }
        public void TestCarFind()
        {
            TypeQL typeQL = new TypeQL(
                new QueryType(
                    "car_find",
                    new Fields(
                        new Field("id"),
                        new Field("title"),
                        new Field("purchase"),
                        new Field("value"),
                        new Field("active")
                        ),
                    new Arguments(new Argument("id", 1))
                    )
                );
            string expect = "{\"query\":\"{car_find(id:1){id,title,purchase,value,active}}\"}";

            Assert.AreEqual(expect, typeQL);
        }
        public void TestSourceListWithDirectiveSkip()
        {
            TypeQL typeQL = new TypeQL(
                new Variables("getSourcesList",
                              new Variable <bool>("active", true, true, true)
                              ),
                new QueryType(
                    "sources",
                    new Fields(
                        new Field("id", new Canducci.GraphQLQuery.Interfaces.IDirective[] { new Skip("active") }),
                        new Field("name")
                        )
                    )
                );
            var text = typeQL.ToBodyJson();
            IExecutionResult result = RequestExecutor.Execute(text, typeQL.Variables.ToDictionary());
            var json = result.ToJson();

            Assert.IsNull(result.Errors);
        }
Exemplo n.º 26
0
        public async Task <Car> FindAsync(int id)
        {
            using TypeQL typeQL = new TypeQL(
                      new QueryType("car_find", "data",
                                    new Fields(
                                        new Field("id"),
                                        new Field("title"),
                                        new Field("purchase"),
                                        new Field("value"),
                                        new Field("active"),
                                        new Field("time")
                                        ),
                                    new Arguments(
                                        new Argument("id", id)
                                        )
                                    )
                      );
            var result = await PostAsync <CarRoot>(typeQL);

            return(result.Data.Data);
        }
        public void TestStateAddWithFragmentWithVariables()
        {
            var state = new State {
                Id = 0, Name = "MINAS GERAIS", Cities = new List <City>()
            };
            var fragmentType = new FragmentType("fields", "state_type");
            var fragments    = new Fragments(new Fragment(new QueryType(fragmentType, new Fields(new Field("id"), new Field("name")))));
            var arguments    = new Arguments(new Argument(new Parameter("input")));
            var variables    = new Variables("getState", new Variable <object>("input", state, "state_input"));
            var queryTypes   = new QueryType("state_add", new Fields(new Field(fragmentType)), arguments);

            TypeQL typeQL = new TypeQL(variables, fragments, queryTypes);

            var text = typeQL.ToBodyJson();
            //var textComplete = typeQL.ToStringJson();
            var varDic = typeQL.Variables.ToDictionary();
            IExecutionResult result = RequestExecutor.Execute(text, varDic);
            var json = result.ToJson();

            Assert.IsNull(result.Errors);
        }
        public void TestCarsWithDirective()
        {
            var queryType = new QueryType(
                name: "cars",
                fields: new Fields(
                    new Field("id", new IDirective[] { new Include("status") }),
                    new Field("title", new IDirective[] { new Skip("status") })
                    ),
                arguments: new Arguments(
                    new Argument(new Parameter("status"))
                    )
                );
            var typeQLTest = new TypeQL(
                new Variables("get",
                              new Variable <bool>("status", true, true, true, Format.FormatBool)
                              ),
                queryType
                );

            Assert.AreEqual("{\"query\":\"query get($status:Boolean!=true){cars(status:$status){id @include(if:$status),title @skip(if:$status)}}\",\"variables\":{\"status\":true}}", typeQLTest.ToStringJson());
        }
        public void TestSourceByIdWithParameter()
        {
            TypeQL typeQL = new TypeQL(
                new Variables("getSource",
                              new Variable <int>("id", 1)
                              ),
                new QueryType(
                    "source_find",
                    new Fields(
                        new Field("id"),
                        new Field("name")
                        ),
                    new Arguments(new Argument(new Parameter("id", "id")))
                    )
                );
            var text = typeQL.ToBodyJson();
            IExecutionResult result = RequestExecutor.Execute(text, typeQL.Variables.ToDictionary());

            //var json = result.ToJson();
            Assert.IsNull(result.Errors);
        }
        public void TestMultipleGraphQL()
        {
            TypeQL typeQL = new TypeQL(
                new QueryType("state_find",
                              new Fields(
                                  new Field("id"),
                                  new Field("uf"),
                                  new Field(
                                      new QueryType("country",
                                                    new Fields(
                                                        new Field("id"),
                                                        new Field("name")
                                                        )
                                                    )
                                      )
                                  ),
                              new Arguments(new Argument("id", 11))
                              ),
                new QueryType("state_find", "d",
                              new Fields(
                                  new Field("id"),
                                  new Field("uf"),
                                  new Field(
                                      new QueryType("country",
                                                    new Fields(
                                                        new Field("id"),
                                                        new Field("name")
                                                        )
                                                    )
                                      )
                                  ),
                              new Arguments(new Argument("id", 12))
                              )
                );
            string expect = "{\"query\":\"{state_find(id:11){id,uf,country{id,name}}d:state_find(id:12){id,uf,country{id,name}}}\"}";

            Assert.AreEqual(expect, typeQL);
        }