示例#1
0
        public void should_parse_query_object()
        {
            var parameterDynamicRaml = new Dictionary <string, object>
            {
                { "type", "string" },
                { "displayName", "ParameterName" },
                { "description", "this is the description" }
            };

            var parameters = new Dictionary <string, object> {
                { "one", parameterDynamicRaml }
            };

            var dynamicRaml = new Dictionary <string, object> {
                { "method", "get" }, { "queryParameters", parameters }
            };

            var generatedMethod = new ClientGeneratorMethod {
                Name = "GeneratedMethod"
            };
            const string objectName       = "ObjName";
            var          queryObj         = QueryParametersParser.GetQueryObject(generatedMethod, new MethodBuilder().Build(dynamicRaml), objectName);
            var          parsedParameters = queryObj.Properties;

            Assert.AreEqual(generatedMethod.Name + objectName + "Query", queryObj.Name);
            Assert.AreEqual(1, parsedParameters.Count);
            Assert.AreEqual("string", parsedParameters.First().Type);
            Assert.AreEqual("One", parsedParameters.First().Name);
        }
示例#2
0
        public void ClientGeneratorMethodTest()
        {
            IncrementTestCount();
            var method = new ClientGeneratorMethod()
            {
                Name                = "pepe",
                ResponseType        = "string",
                ReturnType          = "string",
                OkReturnType        = "string",
                Url                 = "/",
                RequestType         = "string",
                RequestContentTypes = new string[] { "application/json" },
                Parameter           = new GeneratorParameter()
                {
                    Name = "string", Type = "string"
                }
            };

            Assert.AreEqual(0, method.UriParametersCount);
            Assert.AreEqual(false, method.RequestIsXml);
            Assert.IsNotNull(method.SimpleReturnTypeString);
            Assert.IsNotNull(method.NetHttpMethod);
            Assert.IsNotNull(method.ParameterString);
            Assert.IsNotNull(method.ParameterStringCore);
            Assert.IsNotNull(method.QualifiedParameterType);
            Assert.IsNotNull(method.SimpleParameterString);
            Assert.IsNotNull(method.XmlComment);
            Assert.IsNotNull(method.XmlSimpleComment);
        }
示例#3
0
 public static ApiObject GetHeadersObject(ClientGeneratorMethod generatedMethod, Method method, string objectName)
 {
     return(new ApiObject
     {
         Name = generatedMethod.Name + objectName + "Header",
         Properties = ParseHeaders(method)
     });
 }
示例#4
0
 public static ApiObject GetHeadersObject(ClientGeneratorMethod generatedMethod, Response response, string objectName)
 {
     return(new ApiObject
     {
         Name = generatedMethod.Name + objectName + ParserHelpers.GetStatusCode(response.Code) + "ResponseHeader",
         Properties = ParseHeaders(response)
     });
 }
示例#5
0
        public ApiObject GetQueryObject(ClientGeneratorMethod generatedMethod, Method method, string objectName)
        {
            var queryObject = new ApiObject {
                Name = generatedMethod.Name + objectName + "Query"
            };

            queryObject.Properties = ParseParameters(method);


            return(queryObject);
        }
示例#6
0
        public void Generate(Resource resource, string url, ClientGeneratorMethod clientGeneratorMethod,
                             IDictionary <string, ApiObject> uriParameterObjects, IDictionary <string, Parameter> parentUriParameters)
        {
            var parameters = GetUriParameters(resource, url, parentUriParameters).ToArray();

            clientGeneratorMethod.UriParameters = parameters;

            if (!parameters.Any())
            {
                return;
            }

            var name = NetNamingMapper.GetObjectName(url) + "UriParameters";

            clientGeneratorMethod.UriParametersType = name;
            if (uriParameterObjects.ContainsKey(name))
            {
                return;
            }

            var properties = new List <Property>();

            if (resource.BaseUriParameters != null)
            {
                properties.AddRange(QueryParametersParser.ConvertParametersToProperties(resource.BaseUriParameters));
            }

            if (resource.UriParameters != null)
            {
                properties.AddRange(QueryParametersParser.ConvertParametersToProperties(resource.UriParameters)
                                    .Where(up => properties.All(p => !String.Equals(up.Name, p.Name, StringComparison.InvariantCultureIgnoreCase))));
            }

            var urlParameters     = ExtractParametersFromUrl(url).ToArray();
            var matchedParameters = MatchParameters(parentUriParameters, urlParameters);

            foreach (var urlParameter in matchedParameters)
            {
                var property = ConvertGeneratorParamToProperty(urlParameter);
                if (properties.All(p => !String.Equals(property.Name, p.Name, StringComparison.InvariantCultureIgnoreCase)))
                {
                    properties.Add(property);
                }
            }

            var apiObject = new ApiObject
            {
                Name        = name,
                Description = "Uri Parameters for resource " + resource.RelativeUri,
                Properties  = properties
            };

            uriParameterObjects.Add(name, apiObject);
        }
        public void Should_Build_Uri_Parameters_When_Custom_Scalars()
        {
            var uriParameters = new Dictionary <string, Parameter>
            {
                {
                    "id", new Parameter
                    {
                        DisplayName = "id",
                        Type        = "CustomInt"
                    }
                }
            };

            var methods = new List <Method>
            {
                new Method
                {
                    Verb = "get"
                }
            };

            var resource = new Resource
            {
                RelativeUri   = "/abc{id}",
                Methods       = methods,
                UriParameters = uriParameters
            };

            var schemaObjects = new Dictionary <string, ApiObject>();

            schemaObjects.Add("CustomInt", new ApiObject
            {
                Type       = "CustomInt",
                Name       = "CustomInt",
                Properties = new[] { new Property {
                                         Name = "value", Type = "int"
                                     } }
            });
            var generator           = new UriParametersGenerator(schemaObjects);
            var uriParameterObjects = new Dictionary <string, ApiObject>();
            var generatorMethod     = new ClientGeneratorMethod {
                Name = "MethodOne"
            };

            generator.Generate(resource, "/movies/abc{id}", generatorMethod, uriParameterObjects, new Dictionary <string, Parameter>());

            Assert.AreEqual("CustomInt", generatorMethod.UriParameters.First().Type);
        }
        public void Should_Build_Uri_Parameters()
        {
            var uriParameters = new Dictionary <string, Parameter>
            {
                {
                    "code", new Parameter
                    {
                        DisplayName = "code",
                        Type        = "integer"
                    }
                }
            };

            var methods = new List <Method>
            {
                new Method
                {
                    Verb = "get"
                }
            };

            var resource = new Resource
            {
                RelativeUri   = "/abc{token}{code}",
                Methods       = methods,
                UriParameters = uriParameters
            };

            var generator           = new UriParametersGenerator();
            var uriParameterObjects = new Dictionary <string, ApiObject>();
            var generatorMethod     = new ClientGeneratorMethod {
                Name = "MethodOne"
            };

            generator.Generate(resource, "/movies/{bucket}/abc{token}{code}", generatorMethod, uriParameterObjects, new Dictionary <string, Parameter>());

            Assert.AreEqual(1, uriParameterObjects.Count);
            Assert.AreEqual(3, generatorMethod.UriParameters.Count());
            Assert.AreEqual(uriParameterObjects.First().Value.Name, generatorMethod.UriParametersType);
        }