Example #1
0
        public void Defensive()
        {
            var method = new CodeMethod {
                Name = "class",
            };

            Assert.False(method.IsOfKind((CodeMethodKind[])null));
            Assert.False(method.IsOfKind(Array.Empty <CodeMethodKind>()));
            Assert.Throws <ArgumentNullException>(() => method.AddDiscriminatorMapping(null, new CodeType {
                Name = "class"
            }));
            Assert.Throws <ArgumentNullException>(() => method.AddDiscriminatorMapping("oin", null));
            Assert.Throws <ArgumentNullException>(() => method.GetDiscriminatorMappingValue(null));
            Assert.Null(method.GetDiscriminatorMappingValue("oin"));
            Assert.Throws <ArgumentNullException>(() => method.AddErrorMapping(null, new CodeType {
                Name = "class"
            }));
            Assert.Throws <ArgumentNullException>(() => method.AddErrorMapping("oin", null));
            Assert.Throws <ArgumentNullException>(() => method.GetErrorMappingValue(null));
            Assert.Null(method.GetErrorMappingValue("oin"));
        }
Example #2
0
    public void WritesRequestExecutorBody()
    {
        method.Kind       = CodeMethodKind.RequestExecutor;
        method.HttpMethod = HttpMethod.Get;
        var error4XX = root.AddClass(new CodeClass {
            Name = "Error4XX",
        }).First();
        var error5XX = root.AddClass(new CodeClass {
            Name = "Error5XX",
        }).First();
        var error401 = root.AddClass(new CodeClass {
            Name = "Error401",
        }).First();

        method.AddErrorMapping("4XX", new CodeType {
            Name = "Error4XX", TypeDefinition = error4XX
        });
        method.AddErrorMapping("5XX", new CodeType {
            Name = "Error5XX", TypeDefinition = error5XX
        });
        method.AddErrorMapping("403", new CodeType {
            Name = "Error403", TypeDefinition = error401
        });
        AddRequestBodyParameters();
        writer.Write(method);
        var result = tw.ToString();

        Assert.Contains("var requestInfo", result);
        Assert.Contains("var errorMapping = new Dictionary<string, ParsableFactory<IParsable>>", result);
        Assert.Contains("{\"4XX\", Error4XX.CreateFromDiscriminatorValue},", result);
        Assert.Contains("{\"5XX\", Error5XX.CreateFromDiscriminatorValue},", result);
        Assert.Contains("{\"403\", Error403.CreateFromDiscriminatorValue},", result);
        Assert.Contains("SendAsync", result);
        Assert.Contains($"{ReturnTypeName}.CreateFromDiscriminatorValue", result);
        Assert.Contains(AsyncKeyword, result);
        Assert.Contains("await", result);
        Assert.Contains("cancellationToken", result);
        AssertExtensions.CurlyBracesAreClosed(result);
    }
Example #3
0
    public void WritesRequestExecutorBody()
    {
        method.Kind       = CodeMethodKind.RequestExecutor;
        method.HttpMethod = HttpMethod.Get;
        var error4XX = root.AddClass(new CodeClass {
            Name = "Error4XX",
        }).First();
        var error5XX = root.AddClass(new CodeClass {
            Name = "Error5XX",
        }).First();
        var error401 = root.AddClass(new CodeClass {
            Name = "Error401",
        }).First();

        method.AddErrorMapping("4XX", new CodeType {
            Name = "Error4XX", TypeDefinition = error4XX
        });
        method.AddErrorMapping("5XX", new CodeType {
            Name = "Error5XX", TypeDefinition = error5XX
        });
        method.AddErrorMapping("403", new CodeType {
            Name = "Error403", TypeDefinition = error401
        });
        AddRequestBodyParameters();
        writer.Write(method);
        var result = tw.ToString();

        Assert.Contains("requestInfo, err :=", result);
        Assert.Contains($"errorMapping := {AbstractionsPackageHash}.ErrorMappings", result);
        Assert.Contains($"\"4XX\": CreateError4XXFromDiscriminatorValue", result);
        Assert.Contains($"\"5XX\": CreateError5XXFromDiscriminatorValue", result);
        Assert.Contains($"\"403\": CreateError403FromDiscriminatorValue", result);
        Assert.Contains("m.requestAdapter.SendAsync", result);
        Assert.Contains("return res.(", result);
        Assert.Contains("err != nil", result);
        AssertExtensions.CurlyBracesAreClosed(result);
    }
Example #4
0
    public void WritesRequestExecutorBody()
    {
        method.Kind       = CodeMethodKind.RequestExecutor;
        method.HttpMethod = HttpMethod.Get;
        var error4XX = root.AddClass(new CodeClass {
            Name = "Error4XX",
        }).First();
        var error5XX = root.AddClass(new CodeClass {
            Name = "Error5XX",
        }).First();
        var error401 = root.AddClass(new CodeClass {
            Name = "Error401",
        }).First();

        method.AddErrorMapping("4XX", new CodeType {
            Name = "Error4XX", TypeDefinition = error4XX
        });
        method.AddErrorMapping("5XX", new CodeType {
            Name = "Error5XX", TypeDefinition = error5XX
        });
        method.AddErrorMapping("403", new CodeType {
            Name = "Error403", TypeDefinition = error401
        });
        AddRequestBodyParameters();
        writer.Write(method);
        var result = tw.ToString();

        Assert.Contains("final RequestInformation requestInfo", result);
        Assert.Contains("final HashMap<String, ParsableFactory<? extends Parsable>> errorMapping = new HashMap<>", result);
        Assert.Contains("put(\"4XX\", Error4XX::createFromDiscriminatorValue);", result);
        Assert.Contains("put(\"5XX\", Error5XX::createFromDiscriminatorValue);", result);
        Assert.Contains("put(\"403\", Error403::createFromDiscriminatorValue);", result);
        Assert.Contains("sendAsync", result);
        Assert.Contains("CompletableFuture.failedFuture(ex)", result);
        AssertExtensions.CurlyBracesAreClosed(result);
    }
Example #5
0
    public void WritesRequestExecutorBody()
    {
        method.Kind       = CodeMethodKind.RequestExecutor;
        method.HttpMethod = HttpMethod.Get;
        var error4XX = root.AddClass(new CodeClass {
            Name = "Error4XX",
        }).First();
        var error5XX = root.AddClass(new CodeClass {
            Name = "Error5XX",
        }).First();
        var error401 = root.AddClass(new CodeClass {
            Name = "Error401",
        }).First();

        method.AddErrorMapping("4XX", new CodeType {
            Name = "Error4XX", TypeDefinition = error4XX
        });
        method.AddErrorMapping("5XX", new CodeType {
            Name = "Error5XX", TypeDefinition = error5XX
        });
        method.AddErrorMapping("403", new CodeType {
            Name = "Error403", TypeDefinition = error401
        });
        AddRequestBodyParameters();
        writer.Write(method);
        var result = tw.ToString();

        Assert.Contains("const requestInfo", result);
        Assert.Contains("const errorMapping: Record<string, ParsableFactory<Parsable>> =", result);
        Assert.Contains("\"4XX\": createError4XXFromDiscriminatorValue,", result);
        Assert.Contains("\"5XX\": createError5XXFromDiscriminatorValue,", result);
        Assert.Contains("\"403\": createError403FromDiscriminatorValue,", result);
        Assert.Contains("sendAsync", result);
        Assert.Contains("Promise.reject", result);
        AssertExtensions.CurlyBracesAreClosed(result);
    }
Example #6
0
        public void WriteRequestExecutor()
        {
            CodeProperty[] properties =
            {
                new CodeProperty {
                    Kind = CodePropertyKind.RequestAdapter, Name = "requestAdapter"
                },
                new CodeProperty {
                    Kind = CodePropertyKind.UrlTemplate, Name = "urlTemplate"
                },
                new CodeProperty {
                    Kind = CodePropertyKind.PathParameters, Name = "pathParameters"
                },
            };
            parentClass.AddProperty(properties);
            var codeMethod = new CodeMethod()
            {
                Name       = "post",
                HttpMethod = HttpMethod.Post,
                ReturnType = new CodeType()
                {
                    IsExternal = true,
                    Name       = "StreamInterface"
                },
                Description = "This will send a POST request",
                Kind        = CodeMethodKind.RequestExecutor
            };

            codeMethod.AddParameter(new CodeParameter
            {
                Name     = "ResponseHandler",
                Kind     = CodeParameterKind.ResponseHandler,
                Optional = true,
                Type     = new CodeType
                {
                    Name       = "ResponseHandler",
                    IsNullable = true
                }
            });
            var codeMethodRequestGenerator = new CodeMethod()
            {
                Kind       = CodeMethodKind.RequestGenerator,
                HttpMethod = HttpMethod.Post,
                Name       = "createPostRequestInformation",
                ReturnType = new CodeType()
                {
                    Name = "RequestInformation"
                }
            };

            parentClass.AddMethod(codeMethod);
            parentClass.AddMethod(codeMethodRequestGenerator);
            var error4XX = root.AddClass(new CodeClass {
                Name = "Error4XX",
            }).First();
            var error5XX = root.AddClass(new CodeClass {
                Name = "Error5XX",
            }).First();
            var error401 = root.AddClass(new CodeClass {
                Name = "Error401",
            }).First();

            codeMethod.AddErrorMapping("4XX", new CodeType {
                Name = "Error4XX", TypeDefinition = error4XX
            });
            codeMethod.AddErrorMapping("5XX", new CodeType {
                Name = "Error5XX", TypeDefinition = error5XX
            });
            codeMethod.AddErrorMapping("403", new CodeType {
                Name = "Error403", TypeDefinition = error401
            });
            _codeMethodWriter.WriteCodeElement(codeMethod, languageWriter);
            var result = stringWriter.ToString();

            Assert.Contains("Promise", result);
            Assert.Contains("$requestInfo = $this->createPostRequestInformation();", result);
            Assert.Contains("RejectedPromise", result);
            Assert.Contains("catch(Exception $ex)", result);
            Assert.Contains("'403' => array(Error403::class, 'createFromDiscriminatorValue')", result);
            Assert.Contains("return $this->requestAdapter->sendPrimitiveAsync($requestInfo, StreamInterface::class, $responseHandler, $errorMappings);", result);
        }