示例#1
0
        private ExecutionContext CreateExecutionContext(
            Schema schema, DocumentNode queryDocument, string operationName,
            Dictionary <string, IValueNode> variableValues, object initialValue)
        {
            Dictionary <string, IValueNode> vars = variableValues
                                                   ?? new Dictionary <string, IValueNode>();
            OperationDefinitionNode operation = GetOperation(
                queryDocument, operationName);
            ObjectType operationType = GetOperationType(schema, operation);

            if (initialValue == null && schema.TryGetNativeType(
                    operationType.Name, out Type nativeType))
            {
                initialValue = schema.Services.GetService(nativeType);
            }

            VariableCollection variables = new VariableCollection(
                _variableValueResolver.CoerceVariableValues(
                    schema, operation, vars));

            ExecutionContext executionContext = new ExecutionContext(
                schema, queryDocument, operation, variables, schema.Services,
                initialValue, null);

            return(executionContext);
        }
示例#2
0
        public void QueryWithNonNullVariableAndDefaultWhereValueIsNull()
        {
            // arrange
            Schema schema = CreateSchema();
            OperationDefinitionNode operation = CreateQuery(
                "query test($test: String! = \"foo\") { a }");
            Dictionary <string, IValueNode> variableValues =
                new Dictionary <string, IValueNode>();

            // act
            VariableValueResolver       resolver = new VariableValueResolver();
            Dictionary <string, object> coercedVariableValues =
                resolver.CoerceVariableValues(schema, operation, variableValues);

            // assert
            Assert.True(coercedVariableValues.ContainsKey("test"));
            Assert.IsType <string>(coercedVariableValues["test"]);
            Assert.Equal("foo", coercedVariableValues["test"]);
        }
示例#3
0
        public void QueryWithNonNullVariableAndDefaultWhereValueWasNotProvided()
        {
            // arrange
            Schema schema = CreateSchema();
            OperationDefinitionNode operation = CreateQuery(
                "query test($test: String! = \"foo\") { a }");
            Dictionary <string, IValueNode> variableValues =
                new Dictionary <string, IValueNode>();

            variableValues.Add("test", new NullValueNode(null));

            // act
            VariableValueResolver resolver = new VariableValueResolver();
            Action action = () =>
                            resolver.CoerceVariableValues(schema, operation, variableValues);

            // assert
            Assert.Throws <QueryException>(action);
        }
示例#4
0
        public void QueryWithNullableVariableAndNoDefaultWhereNoValueWasProvided()
        {
            // arrange
            Schema schema = CreateSchema();
            OperationDefinitionNode operation = CreateQuery(
                "query test($test: String) { a }");
            Dictionary <string, IValueNode> variableValues =
                new Dictionary <string, IValueNode>();

            variableValues.Add("test", new NullValueNode(null));

            // act
            VariableValueResolver       resolver = new VariableValueResolver();
            Dictionary <string, object> coercedVariableValues =
                resolver.CoerceVariableValues(schema, operation, variableValues);

            // assert
            Assert.True(coercedVariableValues.ContainsKey("test"));
            Assert.Equal(null, coercedVariableValues["test"]);
        }