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")); }
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); }
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); }
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); }
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); }
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); }