/
Andru196
/
NSwagClone
Обзор
Документация
Войти
/
Andru196
/
NSwagClone
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
1
Аналитика
Безопасность
master
src/NSwag.CodeGeneration.TypeScript.Tests/AxiosTests.cs
186 строк
6 KB
Marko Lahma
Remove unused usings (#5051)
23 ноя 2024, 12:43
Не верифицирован
23 ноя 2024, 12:43
c062ed8
Код
Авторство
О чём код?
using Xunit; using NSwag.Generation.WebApi; using Microsoft.AspNetCore.Mvc; using NJsonSchema; using NJsonSchema.NewtonsoftJson.Generation; namespace NSwag.CodeGeneration.TypeScript.Tests { public class AxiosTests { public class Foo { public string Bar { get; set; } } public class DiscussionController : Controller { [HttpPost] public void AddMessage([FromBody] Foo message) { } } public class UrlEncodedRequestConsumingController : Controller { [HttpPost] [Consumes("application/x-www-form-urlencoded")] public void AddMessage([FromForm] Foo message, [FromForm] string messageId) { } } [Fact] public async Task When_export_types_is_true_then_add_export_before_classes() { // Arrange var generator = new WebApiOpenApiDocumentGenerator(new WebApiOpenApiDocumentGeneratorSettings { SchemaSettings = new NewtonsoftJsonSchemaGeneratorSettings { SchemaType = SchemaType.Swagger2 } }); var document = await generator.GenerateForControllerAsync<DiscussionController>(); var json = document.ToJson(); Assert.NotNull(json); // Act var codeGen = new TypeScriptClientGenerator(document, new TypeScriptClientGeneratorSettings { Template = TypeScriptTemplate.Axios, GenerateClientInterfaces = true, TypeScriptGeneratorSettings = { TypeScriptVersion = 2.0m, ExportTypes = true } }); var code = codeGen.GenerateFile(); // Assert Assert.Contains("export class DiscussionClient", code); Assert.Contains("export interface IDiscussionClient", code); } [Fact] public async Task When_export_types_is_false_then_dont_add_export_before_classes() { // Arrange var generator = new WebApiOpenApiDocumentGenerator(new WebApiOpenApiDocumentGeneratorSettings { SchemaSettings = new NewtonsoftJsonSchemaGeneratorSettings { SchemaType = SchemaType.Swagger2 } }); var document = await generator.GenerateForControllerAsync<DiscussionController>(); var json = document.ToJson(); Assert.NotNull(json); // Act var codeGen = new TypeScriptClientGenerator(document, new TypeScriptClientGeneratorSettings { Template = TypeScriptTemplate.Axios, GenerateClientInterfaces = true, TypeScriptGeneratorSettings = { TypeScriptVersion = 2.0m, ExportTypes = false } }); var code = codeGen.GenerateFile(); // Assert Assert.DoesNotContain("export class DiscussionClient", code); Assert.DoesNotContain("export interface IDiscussionClient", code); } [Fact] public async Task When_consumes_is_url_encoded_then_construct_url_encoded_request() { // Arrange var generator = new WebApiOpenApiDocumentGenerator(new WebApiOpenApiDocumentGeneratorSettings { SchemaSettings = new NewtonsoftJsonSchemaGeneratorSettings { SchemaType = SchemaType.Swagger2 } }); var document = await generator.GenerateForControllerAsync<UrlEncodedRequestConsumingController>(); var json = document.ToJson(); Assert.NotNull(json); // Act var codeGen = new TypeScriptClientGenerator(document, new TypeScriptClientGeneratorSettings { Template = TypeScriptTemplate.Axios, TypeScriptGeneratorSettings = { TypeScriptVersion = 2.0m } }); var code = codeGen.GenerateFile(); // Assert Assert.Contains("content_", code); Assert.DoesNotContain("FormData", code); Assert.Contains("\"Content-Type\": \"application/x-www-form-urlencoded\"", code); } [Fact] public async Task Add_cancel_token_to_every_call() { // Arrange var generator = new WebApiOpenApiDocumentGenerator(new WebApiOpenApiDocumentGeneratorSettings { SchemaSettings = new NewtonsoftJsonSchemaGeneratorSettings { SchemaType = SchemaType.Swagger2 } }); var document = await generator.GenerateForControllerAsync<UrlEncodedRequestConsumingController>(); var json = document.ToJson(); Assert.NotNull(json); // Act var codeGen = new TypeScriptClientGenerator(document, new TypeScriptClientGeneratorSettings { Template = TypeScriptTemplate.Axios, UseAbortSignal = false, TypeScriptGeneratorSettings = { TypeScriptVersion = 2.0m } }); var code = codeGen.GenerateFile(); // Assert Assert.Contains("cancelToken?: CancelToken", code); } [Fact] public async Task When_abort_signal() { // Arrange var generator = new WebApiOpenApiDocumentGenerator(new WebApiOpenApiDocumentGeneratorSettings { SchemaSettings = new NewtonsoftJsonSchemaGeneratorSettings { SchemaType = SchemaType.OpenApi3 } }); var document = await generator.GenerateForControllerAsync<UrlEncodedRequestConsumingController>(); var json = document.ToJson(); Assert.NotNull(json); // Act var codeGen = new TypeScriptClientGenerator(document, new TypeScriptClientGeneratorSettings { Template = TypeScriptTemplate.Axios, UseAbortSignal = true, TypeScriptGeneratorSettings = { TypeScriptVersion = 2.0m } }); var code = codeGen.GenerateFile(); // Assert Assert.Contains("signal?: AbortSignal", code); } } }