Exemplo n.º 1
0
        public void DefaultFactory_NoSchema_YieldsNoMaker()
        {
            var factory  = new DefaultGraphTypeMakerProvider();
            var instance = factory.CreateTypeMaker(null, TypeKind.OBJECT);

            Assert.IsNull(instance);
        }
Exemplo n.º 2
0
        public void DefaultFactory_UnknownTypeKInd_YieldsNoMaker()
        {
            var schema   = new GraphSchema();
            var factory  = new DefaultGraphTypeMakerProvider();
            var instance = factory.CreateTypeMaker(schema, TypeKind.LIST);

            Assert.IsNull(instance);
        }
Exemplo n.º 3
0
        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());
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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);
        }