Exemple #1
0
        public void AddBodyParameterTest()
        {
            var method = new MockMethod()
            {
                Name = "Method", Parameters = new Dictionary <string, IParameter>()
            };
            var typeProvider = new DefaultObjectTypeProvider("Schema");

            // Confirm that no body parameter is added.
            var             decorator   = new RequestConstructorDecorator(typeProvider);
            CodeConstructor constructor = new CodeConstructor();

            method.HasBody = false;
            decorator.AddBodyParameter(constructor, method);

            Assert.AreEqual(0, constructor.Parameters.Count);
            Assert.AreEqual(0, constructor.Statements.Count);

            // Confirm that a required body parameter is added.
            method.RequestType = "MySchema";
            method.HasBody     = true;
            constructor        = new CodeConstructor();
            decorator.AddBodyParameter(constructor, method);

            Assert.AreEqual(1, constructor.Parameters.Count);
            Assert.AreEqual("body", constructor.Parameters[0].Name);
            Assert.AreEqual("Schema.MySchema", constructor.Parameters[0].Type.BaseType);
            Assert.AreEqual(1, constructor.Statements.Count);
        }
Exemple #2
0
        public void CreateConstructorTest()
        {
            var parameter = new MockParameter()
            {
                Name = "Param", IsRequired = true
            };
            var method = new MockMethod()
            {
                Name = "Method", Parameters = new Dictionary <string, IParameter>()
            };

            method.Parameters.Add("Param", parameter);
            var resource = new MockResource();

            resource.Methods.Add("Method", method);
            var resourceDecl = new CodeTypeDeclaration();
            var typeProvider = new DefaultObjectTypeProvider("Schema");

            // Confirm that the "service" parameter is added.
            var             decorator   = new RequestConstructorDecorator(typeProvider);
            CodeConstructor constructor = decorator.CreateRequiredConstructor(resourceDecl, method, false);

            Assert.AreEqual(2, constructor.Parameters.Count);
            Assert.AreEqual("service", constructor.Parameters[0].Name);
            Assert.AreEqual(1, constructor.BaseConstructorArgs.Count);
        }
        public void CreateMethodTest()
        {
            const string className      = "TestClass";
            var          typeProvider   = new DefaultObjectTypeProvider("Schema");
            var          commentCreator = new DefaultEnglishCommentCreator();
            var          generator      = new RequestMethodResourceDecorator.ResourceGenerator(
                className, typeProvider, commentCreator);

            // Generate a method.
            var decl     = new CodeTypeDeclaration();
            var resource = new MockResource();
            var method   = new MockMethod()
            {
                Name = "Test", Parameters = new Dictionary <string, IParameter>()
            };

            method.Parameters.Add(
                "a", new MockParameter()
            {
                Name = "a", ParameterType = "string", IsRequired = false
            });
            method.Parameters.Add(
                "b", new MockParameter()
            {
                Name = "b", ParameterType = "string", IsRequired = true
            });
            CodeMemberMethod generatedMethod = generator.CreateMethod(decl, resource, method, true,
                                                                      RequestMethodResourceDecorator.MethodType.Request);

            Assert.AreEqual("Test", generatedMethod.Name);
            Assert.AreEqual(2, generatedMethod.Parameters.Count); // two parameters defined.
            Assert.AreEqual(1, generatedMethod.Statements.Count); // one "new ...Request()" statement.
            Assert.AreEqual("TestRequest", generatedMethod.ReturnType.BaseType);
        }
Exemple #4
0
        /// <summary>
        /// List of all upload class decorators
        /// </summary>
        public static IList <IRequestDecorator> GetSchemaAwareUploadDecorators(
            string schemaNamespace, IService service)
        {
            var typeProvider = new DefaultObjectTypeProvider(schemaNamespace);

            return((new List <IRequestDecorator>
            {
                new ResumableUploadInheritanceDecorator(typeProvider),
                new UploadConstructorDecorator(typeProvider),
            }).AsReadOnly());
        }
Exemple #5
0
        /// <summary>
        /// List of all request class decorators
        /// </summary>
        public static IList <IRequestDecorator> GetSchemaAwareCommonRequestDecorators(
            string schemaNamespace, IService service)
        {
            var typeProvider = new DefaultObjectTypeProvider(schemaNamespace);

            return((new List <IRequestDecorator>
            {
                new CommonParameterRequestDecorator(service.Parameters),
                new ParameterPropertyDecorator(),
            }).AsReadOnly());
        }
        /// <summary>
        /// List of all request class decorators
        /// </summary>
        public static IList <IRequestDecorator> GetSchemaAwareRequestDecorators(
            string schemaNamespace, IService service)
        {
            var typeProvider = new DefaultObjectTypeProvider(schemaNamespace);

            return((new List <IRequestDecorator>()
            {
                new ServiceRequestInheritanceDecorator(typeProvider),
                new BodyPropertyDecorator(typeProvider),
                new RequestConstructorDecorator(typeProvider)
                {
                    CreateOptionalConstructor = false
                },
                new ServiceRequestFieldDecorator(),
            }).AsReadOnly());
        }
Exemple #7
0
        /// <summary>
        /// Returns a list of all schema aware resource decorators
        /// </summary>
        public static IList <IResourceDecorator> GetSchemaAwareResourceDecorators(string schemaNamespace)
        {
            var typeProvider = new DefaultObjectTypeProvider(schemaNamespace);

            return
                ((new List <IResourceDecorator>
            {
                new SubresourceClassDecorator(),
                new EnumResourceDecorator(),
                new StandardServiceFieldResourceDecorator(),
                new StandardResourceNameResourceDecorator(),
                new StandardConstructorResourceDecorator(),
                new RequestMethodResourceDecorator(typeProvider)
                {
                    AddOptionalParameters = false
                },
            }).AsReadOnly
                     ());
        }
Exemple #8
0
        public void AddRequiredParametersTest()
        {
            var parameterA = new MockParameter()
            {
                Name = "ParamA", IsRequired = false
            };
            var parameterB = new MockParameter()
            {
                Name = "ParamB", IsRequired = true
            };
            var method = new MockMethod()
            {
                Name       = "Method",
                Parameters = new Dictionary <string, IDiscoveryParameter>()
            };

            method.Parameters.Add("ParamA", parameterA);
            method.Parameters.Add("ParamB", parameterB);
            var resource = new MockResource();

            resource.Methods.Add("Method", method);
            var resourceDecl = new CodeTypeDeclaration();
            var typeProvider = new DefaultObjectTypeProvider("Schema");

            // Confirm that the "service" parameter is added.
            var             decorator   = new RequestConstructorDecorator(typeProvider);
            CodeConstructor constructor = new CodeConstructor();

            decorator.AddRequestParameters(resourceDecl, method, constructor, false);

            Assert.AreEqual(1, constructor.Parameters.Count);
            Assert.AreEqual("paramB", constructor.Parameters[0].Name);
            Assert.AreEqual(1, constructor.Statements.Count);

            // Check that optional parameters are added when the appropriate flag is set.
            constructor = new CodeConstructor();
            decorator.AddRequestParameters(resourceDecl, method, constructor, true);

            Assert.AreEqual(2, constructor.Parameters.Count);
            Assert.AreEqual("paramB", constructor.Parameters[0].Name);
            Assert.AreEqual("paramA", constructor.Parameters[1].Name);
            Assert.AreEqual(2, constructor.Statements.Count);
        }
Exemple #9
0
        public void DecorateClassTest()
        {
            var method = new MockMethod()
            {
                Name       = "Method",
                Parameters = new Dictionary <string, IDiscoveryParameter>()
            };

            method.Parameters.Add("Param", new MockParameter()
            {
                Name = "Param"
            });
            var resource = new MockResource();

            resource.Methods.Add("Method", method);
            var resourceDecl = new CodeTypeDeclaration();
            var requestDecl  = new CodeTypeDeclaration();
            var typeProvider = new DefaultObjectTypeProvider("Schema");

            // Confirm that the decorator has run correctly.
            var decorator = new RequestConstructorDecorator(typeProvider)
            {
                CreateOptionalConstructor = true
            };

            decorator.DecorateClass(resource, method, requestDecl, resourceDecl);
            Assert.AreEqual(2, requestDecl.Members.Count); // 2 Constructors.
            Assert.IsInstanceOf <CodeConstructor>(requestDecl.Members[0]);
            Assert.AreEqual(0, resourceDecl.Members.Count);

            // Test the decorator without optional parameters.
            requestDecl = new CodeTypeDeclaration();
            decorator.CreateOptionalConstructor = false;
            decorator.DecorateClass(resource, method, requestDecl, resourceDecl);
            Assert.AreEqual(1, requestDecl.Members.Count); // 1 Constructor.
            Assert.IsInstanceOf <CodeConstructor>(requestDecl.Members[0]);
            Assert.AreEqual(0, resourceDecl.Members.Count);
        }
Exemple #10
0
        public void ConstructTest()
        {
            var typeProvider = new DefaultObjectTypeProvider("Schema");

            Assert.DoesNotThrow(() => new RequestConstructorDecorator(typeProvider));
        }