66using Swashbuckle . AspNetCore . SwaggerGen . DependencyInjection ;
77using Swashbuckle . AspNetCore . SwaggerGen . Test . Fixtures ;
88
9+ using MinimalApiJsonOptions = Microsoft . AspNetCore . Http . Json . JsonOptions ;
10+ using MvcJsonOptions = Microsoft . AspNetCore . Mvc . JsonOptions ;
11+
912namespace Swashbuckle . AspNetCore . SwaggerGen . Test ;
1013
1114public class SwaggerGenJsonOptionsTests
@@ -16,80 +19,60 @@ public static void Ensure_SwaggerGenJsonOptions_Uses_MinimalApi_JsonOptions_When
1619 var services = new ServiceCollection ( ) ;
1720 services . AddSingleton < IWebHostEnvironment , DummyHostEnvironment > ( ) ;
1821 services . AddSwaggerGen ( ) ;
19- services . AddMvcCore ( ) . AddJsonOptions ( o => o . JsonSerializerOptions . Converters . Add ( new DummyConverter ( ) ) ) ;
22+ services . AddMvcCore ( ) . AddJsonOptions ( o => o . JsonSerializerOptions . AllowTrailingCommas = true ) ;
2023 services . AddSwaggerGenMinimalApisJsonOptions ( ) ;
2124
2225 using var provider = services . BuildServiceProvider ( ) ;
2326
24- var swaggerGenConverters = provider . GetService < IOptions < SwaggerGenJsonOptions > > ( ) . Value . SerializerOptions . Converters ;
25-
26- Assert . Empty ( swaggerGenConverters ) ;
27+ var minimalApiJsonOptions = provider . GetService < IOptions < MinimalApiJsonOptions > > ( ) . Value . SerializerOptions ;
28+ var swaggerGenSerializerOptions = provider . GetService < IOptions < SwaggerGenJsonOptions > > ( ) . Value . SerializerOptions ;
29+ Assert . Equal ( minimalApiJsonOptions , swaggerGenSerializerOptions ) ;
2730 }
2831
2932 [ Fact ]
3033 public static void Ensure_SwaggerGenJsonOptions_Uses_Mvc_JsonOptions_When_Overridden ( )
3134 {
32- var expectedDummyConverter = new DummyConverter ( ) ;
33-
3435 var services = new ServiceCollection ( ) ;
3536 services . AddSingleton < IWebHostEnvironment , DummyHostEnvironment > ( ) ;
3637 services . AddSwaggerGen ( ) ;
37- services . ConfigureHttpJsonOptions ( o => o . SerializerOptions . Converters . Add ( new DummyConverter ( ) ) ) ;
38- services . AddMvcCore ( ) . AddJsonOptions ( o => o . JsonSerializerOptions . Converters . Add ( expectedDummyConverter ) ) ;
38+ services . ConfigureHttpJsonOptions ( o => o . SerializerOptions . AllowTrailingCommas = true ) ;
3939 services . AddSwaggerGenMvcJsonOptions ( ) ;
4040
4141 using var provider = services . BuildServiceProvider ( ) ;
4242
43- var swaggerGenDummyConverter = provider . GetService < IOptions < SwaggerGenJsonOptions > > ( ) . Value . SerializerOptions . Converters . FirstOrDefault ( ) ;
44-
45- Assert . Equal ( expectedDummyConverter , swaggerGenDummyConverter ) ;
43+ var mvcJsonOptions = provider . GetService < IOptions < MvcJsonOptions > > ( ) . Value . JsonSerializerOptions ;
44+ var swaggerGenSerializerOptions = provider . GetService < IOptions < SwaggerGenJsonOptions > > ( ) . Value . SerializerOptions ;
45+ Assert . Equal ( mvcJsonOptions , swaggerGenSerializerOptions ) ;
4646 }
4747
4848 [ Fact ]
4949 public static void Ensure_SwaggerGenJsonOptions_Uses_Mvc_JsonOptions_When_Not_Using_Minimal_Apis ( )
5050 {
51- var expectedDummyConverter = new DummyConverter ( ) ;
52-
5351 var services = new ServiceCollection ( ) ;
5452 services . AddSingleton < IWebHostEnvironment , DummyHostEnvironment > ( ) ;
5553 services . AddSwaggerGen ( ) ;
56- services . AddMvcCore ( ) . AddJsonOptions ( o => o . JsonSerializerOptions . Converters . Add ( expectedDummyConverter ) ) ;
54+ services . AddMvcCore ( ) . AddJsonOptions ( o => o . JsonSerializerOptions . AllowTrailingCommas = true ) ;
5755
5856 using var provider = services . BuildServiceProvider ( ) ;
5957
60- var swaggerGenDummyConverter = provider . GetService < IOptions < SwaggerGenJsonOptions > > ( ) . Value . SerializerOptions . Converters . FirstOrDefault ( ) ;
61-
62- Assert . Equal ( expectedDummyConverter , swaggerGenDummyConverter ) ;
58+ var mvcJsonOptions = provider . GetService < IOptions < MvcJsonOptions > > ( ) . Value . JsonSerializerOptions ;
59+ var swaggerGenSerializerOptions = provider . GetService < IOptions < SwaggerGenJsonOptions > > ( ) . Value . SerializerOptions ;
60+ Assert . Equal ( mvcJsonOptions , swaggerGenSerializerOptions ) ;
6361 }
6462
6563 [ Fact ]
6664 public static void Ensure_SwaggerGenJsonOptions_Uses_MinimalApi_JsonOptions_When_Configured ( )
6765 {
68- var expectedDummyConverter = new DummyConverter ( ) ;
69-
7066 var services = new ServiceCollection ( ) ;
7167 services . AddSingleton < IWebHostEnvironment , DummyHostEnvironment > ( ) ;
7268 services . AddSwaggerGen ( ) ;
73- services . ConfigureHttpJsonOptions ( o => o . SerializerOptions . Converters . Add ( expectedDummyConverter ) ) ;
74- services . AddMvcCore ( ) . AddJsonOptions ( o => o . JsonSerializerOptions . Converters . Add ( new DummyConverter ( ) ) ) ;
69+ services . ConfigureHttpJsonOptions ( o => o . SerializerOptions . AllowTrailingCommas = true ) ;
70+ services . AddMvcCore ( ) . AddJsonOptions ( o => o . JsonSerializerOptions . AllowTrailingCommas = true ) ;
7571
7672 using var provider = services . BuildServiceProvider ( ) ;
7773
78- var swaggerGenDummyConverter = provider . GetService < IOptions < SwaggerGenJsonOptions > > ( ) . Value . SerializerOptions . Converters . FirstOrDefault ( ) ;
79-
80- Assert . Equal ( expectedDummyConverter , swaggerGenDummyConverter ) ;
81- }
82-
83- private sealed class DummyConverter : JsonConverter < object >
84- {
85- public override object Read ( ref Utf8JsonReader reader , Type typeToConvert , JsonSerializerOptions options )
86- {
87- throw new NotImplementedException ( ) ;
88- }
89-
90- public override void Write ( Utf8JsonWriter writer , object value , JsonSerializerOptions options )
91- {
92- throw new NotImplementedException ( ) ;
93- }
74+ var minimalApiJsonOptions = provider . GetService < IOptions < MinimalApiJsonOptions > > ( ) . Value . SerializerOptions ;
75+ var swaggerGenSerializerOptions = provider . GetService < IOptions < SwaggerGenJsonOptions > > ( ) . Value . SerializerOptions ;
76+ Assert . Equal ( minimalApiJsonOptions , swaggerGenSerializerOptions ) ;
9477 }
9578}
0 commit comments