Ejemplo n.º 1
0
        public void GraphQLQueryGeneratorFromFields_Should_Throw_When_No_Matching_Argument_Found_Two_Arguments()
        {
            // Arrange
            var fieldGenerator = new GraphQLFieldBuilder();
            var queryGenerator = new GraphQLQueryGeneratorFromFields();

            var argument1 = new GraphQLQueryArgument("hello1Argument", "Value1");
            var argument2 = new GraphQLQueryArgument("hello2Argument", "Value2");

            // Act / Assert
            var exception = Assert.Throws <GraphQLArgumentVariableNotFoundException>(() =>
            {
                // Get the query
                var query = queryGenerator.GetQuery(fieldGenerator.GetFields(typeof(SampleQuery)),
                                                    argument1, argument2);
            });

            // Assert
            // Should contain two element
            Assert.Equal(2, exception.Arguments.Count());

            // Argument should contain helloArgument and value
            Assert.Contains(argument1, exception.Arguments);
            Assert.Contains(argument2, exception.Arguments);
        }
Ejemplo n.º 2
0
        public void Check_Simple_Query_Nested_Field()
        {
            var fieldBuilderMock = A.Fake <IGraphQLFieldBuilder>(x => x.Strict());

            A.CallTo(() => fieldBuilderMock.GenerateSelectionSet(typeof(string)))
            .Returns(new GraphQLField[]
            {
                new GraphQLField(
                    alias: "alias",
                    field: "field",
                    fields: new []
                {
                    new GraphQLField(
                        alias: "alias2",
                        field: "field2",
                        fields: null,
                        arguments: null
                        ),
                },
                    arguments: null
                    ),
            });

            var queryGenerator = new GraphQLQueryGeneratorFromFields();
            var expected       = "{\"query\":\"query{alias:field{alias2:field2}}\"}";

            var actual = queryGenerator.GetQuery <string>(fieldBuilderMock);

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 3
0
        public void Check_Simple_Query_Nested_Field()
        {
            var fields = new[]
            {
                new GraphQLField(
                    alias: "alias",
                    field: "field",
                    fields: new []
                {
                    new GraphQLField(
                        alias: "alias2",
                        field: "field2",
                        fields: null,
                        arguments: null
                        ),
                },
                    arguments: null),
            };
            var fieldBuilder   = new FieldBuilderMock(fields);
            var queryGenerator = new GraphQLQueryGeneratorFromFields();
            var expected       = "{\"query\":\"query{alias:field{alias2:field2}}\"}";

            var actual = queryGenerator.GetQuery <string>(fieldBuilder); // Typeparameter is ignored since it just returns the fields

            Assert.Equal(expected, actual);
        }
        public void Test_Single_Other_Possible_Type_With_Extra_Field()
        {
            var fields = new GraphQLField[]
            {
                new GraphQLField("alias", "field", null, null, null,
                                 new Dictionary <string, GraphQLTargetType>
                {
                    {
                        "interfaceConcreteType",
                        new GraphQLTargetType
                        (
                            typeof(string),
                            new List <GraphQLField>
                        {
                            new GraphQLField("alias", "field", null, null),
                            new GraphQLField("alias2", "field2", null, null)
                        }
                        )
                    }
                }),
            };
            var queryGenerator = new GraphQLQueryGeneratorFromFields();
            var expected       = "{\"query\":\"query{alias:field ... on interfaceConcreteType{alias:field alias2:field2}}\"}";

            var actual = queryGenerator.GenerateQuery(GraphQLOperationType.Query, fields);

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 5
0
        public void Check_Simple_Mutation_Single_Field()
        {
            var fields = new[]
            {
                new GraphQLField("alias", "field", null, null),
            };
            var fieldBuilder   = new FieldBuilderMock(fields);
            var queryGenerator = new GraphQLQueryGeneratorFromFields();
            var expected       = "{\"query\":\"mutation{alias:field}\"}";

            var actual = queryGenerator.GetMutation <string>(fieldBuilder); // Typeparameter is ignored since it just returns the fields

            Assert.Equal(expected, actual);
        }
        public void TestCaseInsensitiveAliasField()
        {
            var fields = new[]
            {
                new GraphQLField("Field", "field", null, null),
            };
            var fieldBuilder   = new FieldBuilderMock(fields);
            var queryGenerator = new GraphQLQueryGeneratorFromFields();
            var expected       = "{\"query\":\"query{field}\"}";

            var actual = queryGenerator.GetQuery <string>(fieldBuilder); // Type parameter is ignored since it just returns the fields

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 7
0
        public void Test_Case_Hero()
        {
            // Arrange
            var expected     = "{\"query\":\"query{hero{friends{name} name}}\"}";
            var fieldBuilder = new GraphQLFieldBuilder();
            var queryBuilder = new GraphQLQueryGeneratorFromFields();

            // Act
            // Get fields
            var fields =
                fieldBuilder.GetFields(typeof(Query_Test_Case_Hero));
            var actual = queryBuilder.GetQuery(fields);

            // Assert
            Assert.Equal(expected, actual);
        }
Ejemplo n.º 8
0
        public void Test_Single_Field_Should_Not_Generate_Seperate_Field_And_Alias()
        {
            // Arrange
            var expected     = "{\"query\":\"query{field}\"}";
            var fieldBuilder = new GraphQLFieldBuilder();
            var queryBuilder = new GraphQLQueryGeneratorFromFields();

            // Act
            // Get fields
            var fields =
                fieldBuilder.GetFields(typeof(Query_Test_Single_Field_Should_Not_Generate_Seperate_Field_And_Alias));
            var actual = queryBuilder.GetQuery(fields);

            // Assert
            Assert.Equal(expected, actual);
        }
Ejemplo n.º 9
0
        public void Check_Simple_Mutation_Single_Field()
        {
            var fieldBuilderMock = A.Fake <IGraphQLFieldBuilder>(x => x.Strict());

            A.CallTo(() => fieldBuilderMock.GenerateSelectionSet(typeof(string)))
            .Returns(new GraphQLField[]
            {
                new GraphQLField("alias", "field", null, null),
            });
            var queryGenerator = new GraphQLQueryGeneratorFromFields();
            var expected       = "{\"query\":\"mutation{alias:field}\"}";

            var actual = queryGenerator.GetMutation <string>(fieldBuilderMock);

            Assert.Equal(expected, actual);
        }
Ejemplo n.º 10
0
        public void Test_Variable_Complex_Dynamic_Type()
        {
            // Arrange
            var expected     = "{\"query\":\"query($variableName:Type!){field(argumentName:$variableName)}\",\"variables\":{\"variableName\":{\"field1\":\"value1\",\"field2\":\"value2\"}}}";
            var fieldBuilder = new GraphQLFieldBuilder();
            var queryBuilder = new GraphQLQueryGeneratorFromFields();

            // Act
            // Get fields
            var fields =
                fieldBuilder.GenerateSelectionSet(typeof(Query));
            var actual = queryBuilder.GenerateQuery(GraphQLOperationType.Query, fields,
                                                    new GraphQLQueryArgument("variableName", new { field1 = "value1", field2 = "value2" }));

            // Assert
            Assert.Equal(expected, actual);
        }
Ejemplo n.º 11
0
        public void GraphQLQueryGeneratorFromFields_Should_Throw_When_No_Matching_Argument_Found_And_Only_One_Of_2_Arguments_Found()
        {
            // Arrange
            var fieldGenerator = new GraphQLFieldBuilder();
            var queryGenerator = new GraphQLQueryGeneratorFromFields();

            // Act / Assert
            var exception = Assert.Throws <GraphQLArgumentVariableNotFoundException>(() =>
            {
                // Get the query
                var query = queryGenerator.GetQuery(fieldGenerator.GetFields(typeof(SampleQuery2)),
                                                    new GraphQLQueryArgument("hello1Argument", "Value1"), new GraphQLQueryArgument("hello2Argument", "Value2"));
            });

            // Assert
            // Should contain one element
            Assert.Equal(1, exception.Arguments.Count());

            // Argument should contain helloArgument and value
            Assert.Equal("hello2Argument", exception.Arguments.First().VariableName);
            Assert.Equal("Value2", exception.Arguments.First().ArgumentValue);
        }