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