/
Andru196
/
NSwagClone
Обзор
Документация
Войти
/
Andru196
/
NSwagClone
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
1
Аналитика
Безопасность
master
src/NSwag.CodeGeneration.TypeScript.Tests/TypeScriptOperationParameterTests.cs
146 строк
5 KB
Marko Lahma
Fix some code formatting issues (#5054)
23 ноя 2024, 21:51
Не верифицирован
23 ноя 2024, 21:51
29eef8f
Код
Авторство
О чём код?
using Microsoft.AspNetCore.Mvc; using NJsonSchema; using NJsonSchema.CodeGeneration.TypeScript; using NJsonSchema.NewtonsoftJson.Generation; using NSwag.Generation.WebApi; using Xunit; namespace NSwag.CodeGeneration.TypeScript.Tests { public class TypeScriptOperationParameterTests { public class NullableParameterController { [Route("foo")] public string Test(int a, int? b) { return null; } } public class NullableOptionalParameterController { [Route("foo")] public string Test(int a, int? b = null) { return null; } } [Fact] public async Task When_parameter_is_nullable_and_ts20_then_it_is_a_union_type_with_undefined() { // Arrange var generator = new WebApiOpenApiDocumentGenerator(new WebApiOpenApiDocumentGeneratorSettings { SchemaSettings = new NewtonsoftJsonSchemaGeneratorSettings { SchemaType = SchemaType.Swagger2 } }); var document = await generator.GenerateForControllerAsync<NullableParameterController>(); var clientGenerator = new TypeScriptClientGenerator(document, new TypeScriptClientGeneratorSettings { TypeScriptGeneratorSettings = { TypeScriptVersion = 2.0m, NullValue = TypeScriptNullValue.Undefined } }); var json = document.ToJson(); Assert.NotNull(json); // Act var code = clientGenerator.GenerateFile(); // Assert Assert.Contains("test(a: number, b: number | null)", code); } [Fact] public async Task When_parameter_is_nullable_and_ts20_then_it_is_not_included_in_query_string() { // Arrange var generator = new WebApiOpenApiDocumentGenerator(new WebApiOpenApiDocumentGeneratorSettings { SchemaSettings = new NewtonsoftJsonSchemaGeneratorSettings { SchemaType = SchemaType.Swagger2 } }); var document = await generator.GenerateForControllerAsync<NullableParameterController>(); var clientGenerator = new TypeScriptClientGenerator(document, new TypeScriptClientGeneratorSettings { TypeScriptGeneratorSettings = { TypeScriptVersion = 2.0m, NullValue = TypeScriptNullValue.Undefined } }); var json = document.ToJson(); Assert.NotNull(json); // Act var code = clientGenerator.GenerateFile(); // Assert Assert.Contains("else if(b !== null)", code); } [Fact] public async Task When_parameter_is_nullable_optional_and_ts20_then_it_is_a_union_type_with_undefined() { // Arrange var generator = new WebApiOpenApiDocumentGenerator(new WebApiOpenApiDocumentGeneratorSettings { SchemaSettings = new NewtonsoftJsonSchemaGeneratorSettings { SchemaType = SchemaType.Swagger2 } }); var document = await generator.GenerateForControllerAsync<NullableOptionalParameterController>(); var clientGenerator = new TypeScriptClientGenerator(document, new TypeScriptClientGeneratorSettings { TypeScriptGeneratorSettings = { TypeScriptVersion = 2.0m, NullValue = TypeScriptNullValue.Undefined } }); var json = document.ToJson(); Assert.NotNull(json); // Act var code = clientGenerator.GenerateFile(); // Assert Assert.Contains("test(a: number, b: number | null | undefined)", code); } [Fact] public async Task When_parameter_is_nullable_optional_and_ts20_then_it_is_not_included_in_query_string() { // Arrange var generator = new WebApiOpenApiDocumentGenerator(new WebApiOpenApiDocumentGeneratorSettings { SchemaSettings = new NewtonsoftJsonSchemaGeneratorSettings { SchemaType = SchemaType.Swagger2 } }); var document = await generator.GenerateForControllerAsync<NullableOptionalParameterController>(); var clientGenerator = new TypeScriptClientGenerator(document, new TypeScriptClientGeneratorSettings { TypeScriptGeneratorSettings = { TypeScriptVersion = 2.0m, NullValue = TypeScriptNullValue.Undefined } }); var json = document.ToJson(); Assert.NotNull(json); // Act var code = clientGenerator.GenerateFile(); // Assert Assert.Contains("if (b !== undefined && b !== null)", code); } } }