From d40f361531aeb8649528625ee443919913d1465b Mon Sep 17 00:00:00 2001 From: Sindre Kroknes Date: Thu, 19 Mar 2020 23:59:52 +0100 Subject: [PATCH 1/6] Read System.Text.Json options --- .../Generation/OpenApiGeneratorCommandBase.cs | 2 +- .../AspNetCoreOpenApiDocumentGenerator.cs | 30 +++++++++++++++++-- .../NSwag.Generation.AspNetCore.csproj | 4 +++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/NSwag.Commands/Commands/Generation/OpenApiGeneratorCommandBase.cs b/src/NSwag.Commands/Commands/Generation/OpenApiGeneratorCommandBase.cs index 1e240509c9..8a52e6b764 100644 --- a/src/NSwag.Commands/Commands/Generation/OpenApiGeneratorCommandBase.cs +++ b/src/NSwag.Commands/Commands/Generation/OpenApiGeneratorCommandBase.cs @@ -229,7 +229,7 @@ public async Task CreateSettingsAsync(AssemblyLoader.AssemblyLoader a } catch { - serializerSettings = AspNetCoreOpenApiDocumentGenerator.GetSystemTextJsonSettings(); + serializerSettings = AspNetCoreOpenApiDocumentGenerator.GetSystemTextJsonSettings(serviceProvider); } #else var mvcJsonOptions = serviceProvider?.GetRequiredService>(); diff --git a/src/NSwag.Generation.AspNetCore/AspNetCoreOpenApiDocumentGenerator.cs b/src/NSwag.Generation.AspNetCore/AspNetCoreOpenApiDocumentGenerator.cs index 9af45b7f72..e881d8c423 100644 --- a/src/NSwag.Generation.AspNetCore/AspNetCoreOpenApiDocumentGenerator.cs +++ b/src/NSwag.Generation.AspNetCore/AspNetCoreOpenApiDocumentGenerator.cs @@ -47,7 +47,7 @@ public async Task GenerateAsync(object serviceProvider) var typedServiceProvider = (IServiceProvider)serviceProvider; var mvcOptions = typedServiceProvider.GetRequiredService>(); - var settings = GetJsonSerializerSettings(typedServiceProvider) ?? GetSystemTextJsonSettings(); + var settings = GetJsonSerializerSettings(typedServiceProvider) ?? GetSystemTextJsonSettings(typedServiceProvider); Settings.ApplySettings(settings, mvcOptions.Value); @@ -127,15 +127,39 @@ public async Task GenerateAsync(ApiDescriptionGroupCollection a /// Gets the default serializer settings representing System.Text.Json. /// The settings. - public static JsonSerializerSettings GetSystemTextJsonSettings() + public static JsonSerializerSettings GetSystemTextJsonSettings(IServiceProvider serviceProvider) { // If the ASP.NET Core website does not use Newtonsoft.JSON we need to provide a // contract resolver which reflects best the System.Text.Json behavior. // See https://github.com/RicoSuter/NSwag/issues/2243 - return new JsonSerializerSettings + JsonSerializerSettings settings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; +#if NETSTANDARD2_0 + if (serviceProvider == null) return settings; + dynamic options = null; + try + { + var optionsAssembly = Assembly.Load(new AssemblyName("Microsoft.AspNetCore.Mvc.Core")); + var optionsType = typeof(IOptions<>).MakeGenericType(optionsAssembly.GetType("Microsoft.AspNetCore.Mvc.JsonOptions", true)); + options = serviceProvider?.GetService(optionsType) as dynamic; + } + catch + {} + + if (!(options?.Value?.JsonSerializerOptions is System.Text.Json.JsonSerializerOptions jsonOptions)) + return settings; + + // StringEnumConverter + if (jsonOptions.Converters.Any(c => c.GetType() == typeof(System.Text.Json.Serialization.JsonStringEnumConverter))) + settings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter()); + + if (jsonOptions.PropertyNamingPolicy == null) + // PocoCase + settings.ContractResolver = new DefaultContractResolver(); +#endif + return settings; } private List GenerateForControllers( diff --git a/src/NSwag.Generation.AspNetCore/NSwag.Generation.AspNetCore.csproj b/src/NSwag.Generation.AspNetCore/NSwag.Generation.AspNetCore.csproj index 877c4f82aa..4b2f5cf132 100644 --- a/src/NSwag.Generation.AspNetCore/NSwag.Generation.AspNetCore.csproj +++ b/src/NSwag.Generation.AspNetCore/NSwag.Generation.AspNetCore.csproj @@ -31,6 +31,9 @@ + + + - \ No newline at end of file diff --git a/src/NSwag.Generation.WebApi.Tests/NSwag.Generation.WebApi.Tests.csproj b/src/NSwag.Generation.WebApi.Tests/NSwag.Generation.WebApi.Tests.csproj index 50c291ba8d..44d6e8fbe5 100644 --- a/src/NSwag.Generation.WebApi.Tests/NSwag.Generation.WebApi.Tests.csproj +++ b/src/NSwag.Generation.WebApi.Tests/NSwag.Generation.WebApi.Tests.csproj @@ -46,21 +46,21 @@ ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll True - - ..\packages\Namotion.Reflection.1.0.10\lib\net45\Namotion.Reflection.dll + + ..\packages\Namotion.Reflection.1.0.11\lib\net45\Namotion.Reflection.dll ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll True - - ..\packages\NJsonSchema.10.1.7\lib\net45\NJsonSchema.dll + + ..\packages\NJsonSchema.10.1.14\lib\net45\NJsonSchema.dll - - ..\packages\NJsonSchema.CodeGeneration.10.1.7\lib\net451\NJsonSchema.CodeGeneration.dll + + ..\packages\NJsonSchema.CodeGeneration.10.1.14\lib\net451\NJsonSchema.CodeGeneration.dll - - ..\packages\NJsonSchema.CodeGeneration.TypeScript.10.1.7\lib\net451\NJsonSchema.CodeGeneration.TypeScript.dll + + ..\packages\NJsonSchema.CodeGeneration.TypeScript.10.1.14\lib\net451\NJsonSchema.CodeGeneration.TypeScript.dll ..\packages\Swashbuckle.Core.5.5.3\lib\net40\Swashbuckle.Core.dll diff --git a/src/NSwag.Generation.WebApi.Tests/packages.config b/src/NSwag.Generation.WebApi.Tests/packages.config index 2d50c7d323..77f4a1020e 100644 --- a/src/NSwag.Generation.WebApi.Tests/packages.config +++ b/src/NSwag.Generation.WebApi.Tests/packages.config @@ -11,11 +11,11 @@ - + - - - + + + diff --git a/src/NSwag.Generation.WebApi/NSwag.Generation.WebApi.csproj b/src/NSwag.Generation.WebApi/NSwag.Generation.WebApi.csproj index 2048cd88b5..5ee2dc8552 100644 --- a/src/NSwag.Generation.WebApi/NSwag.Generation.WebApi.csproj +++ b/src/NSwag.Generation.WebApi/NSwag.Generation.WebApi.csproj @@ -24,7 +24,7 @@ - + diff --git a/src/NSwag.Generation/NSwag.Generation.csproj b/src/NSwag.Generation/NSwag.Generation.csproj index 23b68042f5..dba2bd9bb6 100644 --- a/src/NSwag.Generation/NSwag.Generation.csproj +++ b/src/NSwag.Generation/NSwag.Generation.csproj @@ -24,7 +24,7 @@ - + diff --git a/src/NSwag.Integration.WebAPI/NSwag.Integration.WebAPI.csproj b/src/NSwag.Integration.WebAPI/NSwag.Integration.WebAPI.csproj index 2fd873b5c3..a6b8136a63 100644 --- a/src/NSwag.Integration.WebAPI/NSwag.Integration.WebAPI.csproj +++ b/src/NSwag.Integration.WebAPI/NSwag.Integration.WebAPI.csproj @@ -58,15 +58,15 @@ ..\packages\Microsoft.Owin.Host.SystemWeb.3.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll - - ..\packages\Namotion.Reflection.1.0.10\lib\net45\Namotion.Reflection.dll + + ..\packages\Namotion.Reflection.1.0.11\lib\net45\Namotion.Reflection.dll ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll True - - ..\packages\NJsonSchema.10.1.7\lib\net45\NJsonSchema.dll + + ..\packages\NJsonSchema.10.1.14\lib\net45\NJsonSchema.dll ..\packages\Owin.1.0\lib\net40\Owin.dll diff --git a/src/NSwag.Integration.WebAPI/packages.config b/src/NSwag.Integration.WebAPI/packages.config index 3527299389..6114aa38b0 100644 --- a/src/NSwag.Integration.WebAPI/packages.config +++ b/src/NSwag.Integration.WebAPI/packages.config @@ -9,8 +9,8 @@ - + - + \ No newline at end of file diff --git a/src/NSwag.Sample.NetGlobalAsax/NSwag.Sample.NetGlobalAsax.csproj b/src/NSwag.Sample.NetGlobalAsax/NSwag.Sample.NetGlobalAsax.csproj index e82c0ef690..ebb68ead81 100644 --- a/src/NSwag.Sample.NetGlobalAsax/NSwag.Sample.NetGlobalAsax.csproj +++ b/src/NSwag.Sample.NetGlobalAsax/NSwag.Sample.NetGlobalAsax.csproj @@ -56,14 +56,14 @@ ..\packages\Microsoft.Owin.Host.SystemWeb.3.1.0\lib\net45\Microsoft.Owin.Host.SystemWeb.dll - - ..\packages\Namotion.Reflection.1.0.10\lib\net45\Namotion.Reflection.dll + + ..\packages\Namotion.Reflection.1.0.11\lib\net45\Namotion.Reflection.dll ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll - - ..\packages\NJsonSchema.10.1.7\lib\net45\NJsonSchema.dll + + ..\packages\NJsonSchema.10.1.14\lib\net45\NJsonSchema.dll ..\packages\Owin.1.0\lib\net40\Owin.dll diff --git a/src/NSwag.Sample.NetGlobalAsax/packages.config b/src/NSwag.Sample.NetGlobalAsax/packages.config index 3c338d6ab0..f8362c8fe5 100644 --- a/src/NSwag.Sample.NetGlobalAsax/packages.config +++ b/src/NSwag.Sample.NetGlobalAsax/packages.config @@ -26,9 +26,9 @@ - + - + diff --git a/src/NSwag.sln b/src/NSwag.sln index 495f6fdf0a..7f3862da22 100644 --- a/src/NSwag.sln +++ b/src/NSwag.sln @@ -164,7 +164,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NSwag.Sample.NETCore30", "N EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NSwag.Sample.NETCore31", "NSwag.Sample.NETCore31\NSwag.Sample.NETCore31.csproj", "{4BCF42CE-A289-4B6D-92DB-ED95F8ED4B19}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NSwag.Generation.AspNetCore3.Tests", "NSwag.Generation.AspNetCore3.Tests\NSwag.Generation.AspNetCore3.Tests.csproj", "{9FA007B6-CBB0-4D88-B9A3-5D8AF7E02E79}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NSwag.Generation.AspNetCore3.Tests", "NSwag.Generation.AspNetCore3.Tests\NSwag.Generation.AspNetCore3.Tests.csproj", "{9FA007B6-CBB0-4D88-B9A3-5D8AF7E02E79}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -1131,6 +1131,7 @@ Global {F237A592-2D74-4C38-B222-2C91029B87F8} = {634E4ABD-29EC-4EB2-81EF-7E41D6D6F6E0} {2A50783A-1FF9-4DCE-A67E-508A654587D5} = {D8CC0D1C-8DAC-49FE-AA78-C028DC124DD5} {4BCF42CE-A289-4B6D-92DB-ED95F8ED4B19} = {D8CC0D1C-8DAC-49FE-AA78-C028DC124DD5} + {9FA007B6-CBB0-4D88-B9A3-5D8AF7E02E79} = {634E4ABD-29EC-4EB2-81EF-7E41D6D6F6E0} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {98FCEEE2-A45C-41E7-B2ED-1B14755E9067} diff --git a/src/NSwagStudio/NSwagStudio.csproj b/src/NSwagStudio/NSwagStudio.csproj index fa4a616cfa..5ca1b6eb24 100644 --- a/src/NSwagStudio/NSwagStudio.csproj +++ b/src/NSwagStudio/NSwagStudio.csproj @@ -87,8 +87,8 @@ ..\packages\MyToolkit.Extended.2.5.16\lib\net45\MyToolkit.Extended.dll - - ..\packages\Namotion.Reflection.1.0.10\lib\net45\Namotion.Reflection.dll + + ..\packages\Namotion.Reflection.1.0.11\lib\net45\Namotion.Reflection.dll ..\packages\NConsole.3.9.6519.30868\lib\net45\NConsole.dll @@ -96,17 +96,17 @@ ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll - - ..\packages\NJsonSchema.10.1.7\lib\net45\NJsonSchema.dll + + ..\packages\NJsonSchema.10.1.14\lib\net45\NJsonSchema.dll - - ..\packages\NJsonSchema.CodeGeneration.10.1.7\lib\net451\NJsonSchema.CodeGeneration.dll + + ..\packages\NJsonSchema.CodeGeneration.10.1.14\lib\net451\NJsonSchema.CodeGeneration.dll - - ..\packages\NJsonSchema.CodeGeneration.CSharp.10.1.7\lib\net451\NJsonSchema.CodeGeneration.CSharp.dll + + ..\packages\NJsonSchema.CodeGeneration.CSharp.10.1.14\lib\net451\NJsonSchema.CodeGeneration.CSharp.dll - - ..\packages\NJsonSchema.CodeGeneration.TypeScript.10.1.7\lib\net451\NJsonSchema.CodeGeneration.TypeScript.dll + + ..\packages\NJsonSchema.CodeGeneration.TypeScript.10.1.14\lib\net451\NJsonSchema.CodeGeneration.TypeScript.dll diff --git a/src/NSwagStudio/packages.config b/src/NSwagStudio/packages.config index 18268c78cb..0ce8f536b1 100644 --- a/src/NSwagStudio/packages.config +++ b/src/NSwagStudio/packages.config @@ -8,13 +8,13 @@ - + - - - - + + + + From 855a94d0f14a5a5d474ec60f78d6b3f3223c99b6 Mon Sep 17 00:00:00 2001 From: Rico Suter Date: Thu, 7 May 2020 13:49:52 +0200 Subject: [PATCH 5/6] Fix version --- src/NSwag.AspNet.Owin/NSwag.AspNet.Owin.csproj | 2 +- src/NSwag.AspNet.WebApi/NSwag.AspNet.WebApi.csproj | 2 +- src/NSwag.AssemblyLoader/NSwag.AssemblyLoader.csproj | 2 +- .../NSwag.CodeGeneration.CSharp.csproj | 2 +- .../NSwag.CodeGeneration.TypeScript.csproj | 2 +- src/NSwag.CodeGeneration/NSwag.CodeGeneration.csproj | 2 +- src/NSwag.Commands/NSwag.Commands.csproj | 2 +- src/NSwag.Core.Yaml/NSwag.Core.Yaml.csproj | 2 +- src/NSwag.Core/NSwag.Core.csproj | 2 +- .../NSwag.Generation.AspNetCore.csproj | 2 +- src/NSwag.Generation.WebApi/NSwag.Generation.WebApi.csproj | 2 +- src/NSwag.Generation/NSwag.Generation.csproj | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/NSwag.AspNet.Owin/NSwag.AspNet.Owin.csproj b/src/NSwag.AspNet.Owin/NSwag.AspNet.Owin.csproj index 0146adcc2f..b036274222 100644 --- a/src/NSwag.AspNet.Owin/NSwag.AspNet.Owin.csproj +++ b/src/NSwag.AspNet.Owin/NSwag.AspNet.Owin.csproj @@ -2,7 +2,7 @@ net45 NSwag: The OpenAPI/Swagger API toolchain for .NET and TypeScript - 13.2.5 + 13.4.2 OpenAPI Swagger AspNetCore Documentation CodeGen TypeScript WebApi AspNet Copyright © Rico Suter, 2020 MIT diff --git a/src/NSwag.AspNet.WebApi/NSwag.AspNet.WebApi.csproj b/src/NSwag.AspNet.WebApi/NSwag.AspNet.WebApi.csproj index 43d4f12747..a60fb72168 100644 --- a/src/NSwag.AspNet.WebApi/NSwag.AspNet.WebApi.csproj +++ b/src/NSwag.AspNet.WebApi/NSwag.AspNet.WebApi.csproj @@ -2,7 +2,7 @@ net45 NSwag: The OpenAPI/Swagger API toolchain for .NET and TypeScript - 13.2.5 + 13.4.2 OpenAPI Swagger AspNetCore Documentation CodeGen TypeScript WebApi AspNet Copyright © Rico Suter, 2020 MIT diff --git a/src/NSwag.AssemblyLoader/NSwag.AssemblyLoader.csproj b/src/NSwag.AssemblyLoader/NSwag.AssemblyLoader.csproj index 88d20b0cbc..afb1b583ec 100644 --- a/src/NSwag.AssemblyLoader/NSwag.AssemblyLoader.csproj +++ b/src/NSwag.AssemblyLoader/NSwag.AssemblyLoader.csproj @@ -2,7 +2,7 @@ netstandard1.6;net451;netstandard2.0 NSwag: The OpenAPI/Swagger API toolchain for .NET and TypeScript - 13.2.5 + 13.4.2 OpenAPI Swagger AspNetCore Documentation CodeGen TypeScript WebApi AspNet Copyright © Rico Suter, 2020 MIT diff --git a/src/NSwag.CodeGeneration.CSharp/NSwag.CodeGeneration.CSharp.csproj b/src/NSwag.CodeGeneration.CSharp/NSwag.CodeGeneration.CSharp.csproj index dde811ce91..cf2d288283 100644 --- a/src/NSwag.CodeGeneration.CSharp/NSwag.CodeGeneration.CSharp.csproj +++ b/src/NSwag.CodeGeneration.CSharp/NSwag.CodeGeneration.CSharp.csproj @@ -2,7 +2,7 @@ netstandard1.3;net451;netstandard2.0 NSwag: The OpenAPI/Swagger API toolchain for .NET and TypeScript - 13.2.5 + 13.4.2 OpenAPI Swagger AspNetCore Documentation CodeGen TypeScript WebApi AspNet Copyright © Rico Suter, 2020 MIT diff --git a/src/NSwag.CodeGeneration.TypeScript/NSwag.CodeGeneration.TypeScript.csproj b/src/NSwag.CodeGeneration.TypeScript/NSwag.CodeGeneration.TypeScript.csproj index 044e0ec1a4..528e6be83b 100644 --- a/src/NSwag.CodeGeneration.TypeScript/NSwag.CodeGeneration.TypeScript.csproj +++ b/src/NSwag.CodeGeneration.TypeScript/NSwag.CodeGeneration.TypeScript.csproj @@ -2,7 +2,7 @@ netstandard1.3;net451;netstandard2.0 NSwag: The OpenAPI/Swagger API toolchain for .NET and TypeScript - 13.2.5 + 13.4.2 OpenAPI Swagger AspNetCore Documentation CodeGen TypeScript WebApi AspNet Copyright © Rico Suter, 2020 MIT diff --git a/src/NSwag.CodeGeneration/NSwag.CodeGeneration.csproj b/src/NSwag.CodeGeneration/NSwag.CodeGeneration.csproj index ae2a624e18..c04c948b26 100644 --- a/src/NSwag.CodeGeneration/NSwag.CodeGeneration.csproj +++ b/src/NSwag.CodeGeneration/NSwag.CodeGeneration.csproj @@ -2,7 +2,7 @@ netstandard1.3;net451;netstandard2.0 NSwag: The OpenAPI/Swagger API toolchain for .NET and TypeScript - 13.2.5 + 13.4.2 OpenAPI Swagger AspNetCore Documentation CodeGen TypeScript WebApi AspNet Copyright © Rico Suter, 2020 MIT diff --git a/src/NSwag.Commands/NSwag.Commands.csproj b/src/NSwag.Commands/NSwag.Commands.csproj index 6f76769ee5..59994e2917 100644 --- a/src/NSwag.Commands/NSwag.Commands.csproj +++ b/src/NSwag.Commands/NSwag.Commands.csproj @@ -2,7 +2,7 @@ netcoreapp1.0;netcoreapp1.1;netcoreapp2.0;netcoreapp2.1;netcoreapp2.2;netcoreapp3.0;net461 NSwag: The OpenAPI/Swagger API toolchain for .NET and TypeScript - 13.2.5 + 13.4.2 OpenAPI Swagger AspNetCore Documentation CodeGen TypeScript WebApi AspNet Copyright © Rico Suter, 2020 MIT diff --git a/src/NSwag.Core.Yaml/NSwag.Core.Yaml.csproj b/src/NSwag.Core.Yaml/NSwag.Core.Yaml.csproj index 9fb271ce16..9c232ba734 100644 --- a/src/NSwag.Core.Yaml/NSwag.Core.Yaml.csproj +++ b/src/NSwag.Core.Yaml/NSwag.Core.Yaml.csproj @@ -2,7 +2,7 @@ netstandard1.3;net45;netstandard2.0 NSwag: The OpenAPI/Swagger API toolchain for .NET and TypeScript - 13.2.5 + 13.4.2 OpenAPI Swagger AspNetCore Documentation CodeGen TypeScript WebApi AspNet Copyright © Rico Suter, 2020 MIT diff --git a/src/NSwag.Core/NSwag.Core.csproj b/src/NSwag.Core/NSwag.Core.csproj index d455e19ca3..7fbf9754f5 100644 --- a/src/NSwag.Core/NSwag.Core.csproj +++ b/src/NSwag.Core/NSwag.Core.csproj @@ -2,7 +2,7 @@ netstandard1.0;net45;netstandard2.0 NSwag: The OpenAPI/Swagger API toolchain for .NET and TypeScript - 13.2.5 + 13.4.2 OpenAPI Swagger AspNetCore Documentation CodeGen TypeScript WebApi AspNet Copyright © Rico Suter, 2020 MIT diff --git a/src/NSwag.Generation.AspNetCore/NSwag.Generation.AspNetCore.csproj b/src/NSwag.Generation.AspNetCore/NSwag.Generation.AspNetCore.csproj index 3e7856532b..7e95f5a4d4 100644 --- a/src/NSwag.Generation.AspNetCore/NSwag.Generation.AspNetCore.csproj +++ b/src/NSwag.Generation.AspNetCore/NSwag.Generation.AspNetCore.csproj @@ -2,7 +2,7 @@ netstandard1.6;net451;netstandard2.0 NSwag: The OpenAPI/Swagger API toolchain for .NET and TypeScript - 13.2.5 + 13.4.2 Swagger Documentation AspNetCore Copyright © Rico Suter, 2020 MIT diff --git a/src/NSwag.Generation.WebApi/NSwag.Generation.WebApi.csproj b/src/NSwag.Generation.WebApi/NSwag.Generation.WebApi.csproj index 5ee2dc8552..ee4f97f18d 100644 --- a/src/NSwag.Generation.WebApi/NSwag.Generation.WebApi.csproj +++ b/src/NSwag.Generation.WebApi/NSwag.Generation.WebApi.csproj @@ -2,7 +2,7 @@ netstandard1.0;net45;netstandard2.0 NSwag: The OpenAPI/Swagger API toolchain for .NET and TypeScript - 13.2.5 + 13.4.2 OpenAPI Swagger AspNetCore Documentation CodeGen TypeScript WebApi AspNet Copyright © Rico Suter, 2020 MIT diff --git a/src/NSwag.Generation/NSwag.Generation.csproj b/src/NSwag.Generation/NSwag.Generation.csproj index dba2bd9bb6..11bcf3bd96 100644 --- a/src/NSwag.Generation/NSwag.Generation.csproj +++ b/src/NSwag.Generation/NSwag.Generation.csproj @@ -2,7 +2,7 @@ netstandard1.0;net45;netstandard2.0 NSwag: The OpenAPI/Swagger API toolchain for .NET and TypeScript - 13.2.5 + 13.4.2 OpenAPI Swagger AspNetCore Documentation CodeGen TypeScript WebApi AspNet Copyright © Rico Suter, 2020 MIT From f4fee422badd05c78d63f08d8d0fe9beaf487cf9 Mon Sep 17 00:00:00 2001 From: Rico Suter Date: Thu, 7 May 2020 15:44:41 +0200 Subject: [PATCH 6/6] Clean up tests --- .../SystemTextJsonTests.cs | 53 +++++++++++-------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/src/NSwag.Generation.AspNetCore3.Tests/SystemTextJsonTests.cs b/src/NSwag.Generation.AspNetCore3.Tests/SystemTextJsonTests.cs index 5e9b670713..026b575387 100644 --- a/src/NSwag.Generation.AspNetCore3.Tests/SystemTextJsonTests.cs +++ b/src/NSwag.Generation.AspNetCore3.Tests/SystemTextJsonTests.cs @@ -16,55 +16,66 @@ public class SystemTextJsonTests [Fact] public async Task SystemTextJsonEnumOptionIsRead() { + // Arrange var services = new ServiceCollection() .AddLogging(); - + services.AddControllers() .AddJsonOptions(opt => opt.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter())); + services.AddOpenApiDocument(); - var sp = services.BuildServiceProvider(); - - var generator = sp.GetRequiredService(); - await generator.Generator.GenerateAsync(sp); - var settings = generator.Generator.Settings; + var serviceProvider = services.BuildServiceProvider(); + + // Act + var generator = serviceProvider.GetRequiredService(); + await generator.Generator.GenerateAsync(serviceProvider); + var settings = generator.Generator.Settings; - Assert.Contains(settings.SerializerSettings.Converters,c => c is StringEnumConverter); + // Assert + Assert.Contains(settings.SerializerSettings.Converters, c => c is StringEnumConverter); } - + [Fact] public async Task SystemTextJsonCaseOptionIsRead() { + // Arrange var services = new ServiceCollection() .AddLogging(); - + services.AddControllers() .AddJsonOptions(opt => opt.JsonSerializerOptions.PropertyNamingPolicy = null); + services.AddOpenApiDocument(); - var sp = services.BuildServiceProvider(); - - var generator = sp.GetRequiredService(); - await generator.Generator.GenerateAsync(sp); - var settings = generator.Generator.Settings; + var serviceProvider = services.BuildServiceProvider(); + + // Act + var generator = serviceProvider.GetRequiredService(); + await generator.Generator.GenerateAsync(serviceProvider); + var settings = generator.Generator.Settings; + // Assert Assert.IsType(settings.SerializerSettings.ContractResolver); } - + [Fact] public async Task SystemTextJsonOptionDefaultsWhenNotSet() { + // Arrange var services = new ServiceCollection() .AddLogging(); services.AddControllers(); services.AddOpenApiDocument(); - var sp = services.BuildServiceProvider(); - - var generator = sp.GetRequiredService(); - await generator.Generator.GenerateAsync(sp); - var settings = generator.Generator.Settings; + var serviceProvider = services.BuildServiceProvider(); + + // Act + var generator = serviceProvider.GetRequiredService(); + await generator.Generator.GenerateAsync(serviceProvider); + var settings = generator.Generator.Settings; + // Assert Assert.IsType(settings.SerializerSettings.ContractResolver); - Assert.DoesNotContain(settings.SerializerSettings.Converters,c => c is StringEnumConverter); + Assert.DoesNotContain(settings.SerializerSettings.Converters, c => c is StringEnumConverter); } } }