public void converts_string_to_string_value() { var result = new StringGraphType().ToAST("test"); result.ShouldNotBeNull(); result.ShouldBeOfType <StringValue>().Value.ShouldBe("test"); }
public void converts_null_to_null() { object value = null; var result = new StringGraphType().ToAST(value); result.ShouldBeOfType <NullValue>(); }
public ObjectGraphType CreateOrderType() { var tableType = new ObjectGraphType(); tableType.Name = "Order"; var columnType = new StringGraphType(); tableType.Field("col1", columnType, description: "", resolve: ctx => { var resolver = (ReadonlyResolveFieldContext)ctx; return(((Row)resolver.Source).Col1); }); return(tableType); }
private IGraphTypeOfGraphQLNet Convert(IGraphType graphType, bool input, ISchema root) { try { //Union if (graphType.OtherTypes.Any() && !input) { var list = new List <IObjectGraphType>(); var convertedGraphType = (IObjectGraphType)Convert(_graphTypeProvider.GetGraphType(graphType.Type, false, false), false, root); convertedGraphType.IsTypeOf = _ => true; root.RegisterType(convertedGraphType); list.Add(convertedGraphType); foreach (var type in graphType.OtherTypes) { convertedGraphType = (IObjectGraphType)Convert(_graphTypeProvider.GetGraphType(type, false, false), false, root); convertedGraphType.IsTypeOf = _ => true; root.RegisterType(convertedGraphType); list.Add(convertedGraphType); } var unionType = new UnionGraphType { PossibleTypes = list }; root.RegisterType(unionType); return(unionType); } //Enumerable if (graphType.IsEnumerable) { var elementGraphType = _graphTypeProvider.GetGraphType(graphType.Type, false, false); var listGraphType = new ListGraphType(Convert(elementGraphType, input, root)); return(graphType.IsRequired ? new NonNullGraphType(listGraphType) : (IGraphTypeOfGraphQLNet)listGraphType); } //Scalar if (!graphType.Fields.Any()) { if (graphType.IsEnum) { var enumGraphType = typeof(EnumerationGraphType <>).MakeGenericType(graphType.Type); enumGraphType = graphType.IsRequired ? typeof(NonNullGraphType <>).MakeGenericType(enumGraphType) : enumGraphType; return((IGraphTypeOfGraphQLNet)Activator.CreateInstance(enumGraphType)); } if (graphType.Type == typeof(string)) { var stringType = new StringGraphType(); return(graphType.IsRequired ? (IGraphTypeOfGraphQLNet) new NonNullGraphType(stringType) : stringType); } var scalarType = graphType.Type.IsGenericType && graphType.Type.GetGenericTypeDefinition() == typeof(Nullable <>) ? GraphTypeTypeRegistry.Get(graphType.Type.GenericTypeArguments[0]) : GraphTypeTypeRegistry.Get(graphType.Type); if (null != scalarType) { var resolvedGraphType = (IGraphTypeOfGraphQLNet)Activator.CreateInstance(scalarType); return(graphType.IsRequired ? new NonNullGraphType(resolvedGraphType) : resolvedGraphType); } throw new GraphException($"Unknown GraphType '{graphType.Name}'"); } //Complex var objectGraphType = input ? (IComplexGraphType) new InputObjectGraphType { Name = $"{graphType.Name}Input" } : new ObjectGraphType { Name = graphType.Name }; foreach (var field in graphType.Fields.Values) { var fieldType = new FieldType { Name = field.Name, ResolvedType = Convert(field.GraphType, input, root) }; if (field.Arguments.Any()) { fieldType.Arguments = new QueryArguments(); } foreach (var argument in field.Arguments.Values) { var queryArgument = new QueryArgument(Convert(argument.GraphType, input, root)) { Name = argument.Name }; fieldType.Arguments.Add(queryArgument); } objectGraphType.AddField(fieldType); } return(graphType.IsRequired ? (IGraphTypeOfGraphQLNet) new NonNullGraphType(objectGraphType) : objectGraphType); } catch (Exception ex) { throw; } }
private IGraphTypeOfGraphQLNet Convert(IGraphType graphType) { try { //Enumerable if (graphType.IsEnumerable) { var elementGraphType = _graphTypeProvider.GetGraphType(graphType.Type, false, false); var listGraphType = new ListGraphType(Convert(elementGraphType)); return(graphType.IsRequired ? new NonNullGraphType(listGraphType) : (IGraphTypeOfGraphQLNet)listGraphType); } //Scalar if (!graphType.Fields.Any()) { if (graphType.IsEnum) { var enumGraphType = typeof(EnumerationGraphType <>).MakeGenericType(graphType.Type); enumGraphType = graphType.IsRequired ? typeof(NonNullGraphType <>).MakeGenericType(enumGraphType) : enumGraphType; return((IGraphTypeOfGraphQLNet)Activator.CreateInstance(enumGraphType)); } if (graphType.Type == typeof(string)) { var stringType = new StringGraphType(); return(graphType.IsRequired ? (IGraphTypeOfGraphQLNet) new NonNullGraphType(stringType) : stringType); } var scalarType = graphType.Type.IsGenericType && graphType.Type.GetGenericTypeDefinition() == typeof(Nullable <>) ? GraphTypeTypeRegistry.Get(graphType.Type.GenericTypeArguments[0]) : GraphTypeTypeRegistry.Get(graphType.Type); if (null != scalarType) { var resolvedGraphType = (IGraphTypeOfGraphQLNet)Activator.CreateInstance(scalarType); return(graphType.IsRequired ? new NonNullGraphType(resolvedGraphType) : resolvedGraphType); } throw new GraphException($"Unknown GraphType '{graphType.Name}'"); } //Complex var objectGraphType = new ObjectGraphType { Name = graphType.Name }; foreach (var field in graphType.Fields.Values) { var fieldType = new FieldType { Name = field.Name, ResolvedType = Convert(field.GraphType) }; if (field.Arguments.Any()) { fieldType.Arguments = new QueryArguments(); } foreach (var argument in field.Arguments.Values) { var queryArgument = new QueryArgument(Convert(argument.GraphType)) { Name = argument.Name }; fieldType.Arguments.Add(queryArgument); } objectGraphType.AddField(fieldType); } return(graphType.IsRequired ? (IGraphTypeOfGraphQLNet) new NonNullGraphType(objectGraphType) : objectGraphType); } catch (Exception ex) { throw; } }
public StringGraphTypeTests() { _type = new StringGraphType(); }