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, IParameter>() }; 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); }
public void DecorateClassTest() { var method = new MockMethod() { Name = "Method", Parameters = new Dictionary<string, IParameter>() }; 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); }
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); }
/// <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(); }
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); 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); }
/// <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 (); }
/// <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(); }
public void ConstructTest() { var typeProvider = new DefaultObjectTypeProvider("Schema"); Assert.DoesNotThrow(() => new RequestConstructorDecorator(typeProvider)); }