public void DefaultFactory_NoSchema_YieldsNoMaker() { var factory = new DefaultGraphTypeMakerProvider(); var instance = factory.CreateTypeMaker(null, TypeKind.OBJECT); Assert.IsNull(instance); }
public void DefaultFactory_UnknownTypeKInd_YieldsNoMaker() { var schema = new GraphSchema(); var factory = new DefaultGraphTypeMakerProvider(); var instance = factory.CreateTypeMaker(schema, TypeKind.LIST); Assert.IsNull(instance); }
public void Parse_FromInterface_CreateGraphType_PropertyCheck() { var server = new TestServerBuilder().Build(); var template = TemplateHelper.CreateInterfaceTemplate <ISimpleInterface>(); var typeMaker = new DefaultGraphTypeMakerProvider(); var graphType = typeMaker.CreateTypeMaker(server.Schema, TypeKind.INTERFACE) .CreateGraphType(typeof(ISimpleInterface)).GraphType as IInterfaceGraphType; Assert.IsNotNull(graphType); Assert.AreEqual(template.Name, graphType.Name); Assert.AreEqual(TypeKind.INTERFACE, graphType.Kind); // Property1, Property2, __typename Assert.AreEqual(3, graphType.Fields.Count()); }
private GraphTypeCreationResult MakeGraphType(Type type, TypeKind kind, TemplateDeclarationRequirements?requirements = null) { var builder = new TestServerBuilder(TestOptions.UseCodeDeclaredNames); if (requirements.HasValue) { builder.AddGraphQL(o => { o.DeclarationOptions.FieldDeclarationRequirements = requirements.Value; }); } var typeMaker = new DefaultGraphTypeMakerProvider(); var testServer = builder.Build(); var maker = typeMaker.CreateTypeMaker(testServer.Schema, kind); return(maker.CreateGraphType(type)); }
public void Interface_CreateGraphType_ParsesCorrectly() { var server = new TestServerBuilder(TestOptions.UseCodeDeclaredNames).Build(); var template = TemplateHelper.CreateGraphTypeTemplate <TypeCreationItem>(); var typeMaker = new DefaultGraphTypeMakerProvider(); var objectGraphType = typeMaker.CreateTypeMaker(server.Schema, TypeKind.OBJECT).CreateGraphType(typeof(TypeCreationItem)).GraphType as IObjectGraphType; Assert.IsNotNull(objectGraphType); Assert.AreEqual(nameof(TypeCreationItem), objectGraphType.Name); Assert.AreEqual(template.Description, objectGraphType.Description); Assert.AreEqual(TypeKind.OBJECT, objectGraphType.Kind); // __typename, Method1, Method2, Prop1 Assert.AreEqual(4, objectGraphType.Fields.Count); var method1 = objectGraphType.Fields.FirstOrDefault(x => x.Name == nameof(TypeCreationItem.Method1)); Assert.IsNotNull(method1); CollectionAssert.AreEqual(TypeExpressions.IsNotNull.ToTypeWrapperSet(), method1.TypeExpression.Wrappers); // double cant return as null Assert.AreEqual(Constants.ScalarNames.DOUBLE, method1.TypeExpression.TypeName); Assert.AreEqual(3, method1.Arguments.Count); var arg1 = method1.Arguments["arg1"]; var arg2 = method1.Arguments["arg2"]; var arg3 = method1.Arguments["arg3"]; Assert.IsNotNull(arg1); Assert.AreEqual(typeof(string), arg1.ObjectType); Assert.IsEmpty(arg1.TypeExpression.Wrappers); Assert.AreEqual(null, arg1.DefaultValue); Assert.IsNotNull(arg2); Assert.AreEqual(typeof(int), arg2.ObjectType); CollectionAssert.AreEqual(GraphTypeExpression.RequiredSingleItem, arg2.TypeExpression.Wrappers); Assert.AreEqual(null, arg2.DefaultValue); // arg3 has a default value therefore can be null on request even though the type is not nullable Assert.IsNotNull(arg3); Assert.AreEqual(typeof(int), arg3.ObjectType); CollectionAssert.AreEqual(GraphTypeExpression.SingleItem, arg3.TypeExpression.Wrappers); Assert.AreEqual(5, arg3.DefaultValue); var method2 = objectGraphType.Fields.FirstOrDefault(x => x.Name == nameof(TypeCreationItem.Method2)); Assert.IsNotNull(method2); Assert.IsEmpty(method2.TypeExpression.Wrappers); Assert.AreEqual(nameof(TwoPropertyObject), method2.TypeExpression.TypeName); arg1 = method2.Arguments["arg1"]; arg2 = method2.Arguments["arg2"]; Assert.IsNotNull(arg1); Assert.AreEqual(typeof(long), arg1.ObjectType); CollectionAssert.AreEqual(TypeExpressions.IsNotNull.ToTypeWrapperSet(), arg1.TypeExpression.Wrappers); Assert.AreEqual(null, arg1.DefaultValue); // is a nullable<T> type therefor can be null even without a supplied value Assert.IsNotNull(arg2); Assert.AreEqual(typeof(decimal), arg2.ObjectType); Assert.IsEmpty(arg2.TypeExpression.Wrappers); Assert.AreEqual(null, arg2.DefaultValue); var prop1 = objectGraphType.Fields.FirstOrDefault(x => x.Name == nameof(TypeCreationItem.Prop1)); Assert.IsNotNull(prop1); Assert.IsEmpty(prop1.TypeExpression.Wrappers); Assert.AreEqual(Constants.ScalarNames.STRING, prop1.TypeExpression.TypeName); }