5
5
using System . Globalization ;
6
6
using System . IO ;
7
7
using FluentAssertions ;
8
+ using Microsoft . OpenApi . Any ;
8
9
using Microsoft . OpenApi . Extensions ;
9
10
using Microsoft . OpenApi . Models ;
10
11
using Microsoft . OpenApi . Writers ;
@@ -58,6 +59,50 @@ public class OpenApiParameterTests
58
59
}
59
60
} ;
60
61
62
+ public static OpenApiParameter ParameterWithFormStyleAndExplodeFalse = new OpenApiParameter
63
+ {
64
+ Name = "name1" ,
65
+ In = ParameterLocation . Query ,
66
+ Description = "description1" ,
67
+ Style = ParameterStyle . Form ,
68
+ Explode = false ,
69
+ Schema = new OpenApiSchema
70
+ {
71
+ Type = "array" ,
72
+ Items = new OpenApiSchema
73
+ {
74
+ Enum = new List < IOpenApiAny >
75
+ {
76
+ new OpenApiString ( "value1" ) ,
77
+ new OpenApiString ( "value2" )
78
+ }
79
+ }
80
+ }
81
+
82
+ } ;
83
+
84
+ public static OpenApiParameter ParameterWithFormStyleAndExplodeTrue = new OpenApiParameter
85
+ {
86
+ Name = "name1" ,
87
+ In = ParameterLocation . Query ,
88
+ Description = "description1" ,
89
+ Style = ParameterStyle . Form ,
90
+ Explode = true ,
91
+ Schema = new OpenApiSchema
92
+ {
93
+ Type = "array" ,
94
+ Items = new OpenApiSchema
95
+ {
96
+ Enum = new List < IOpenApiAny >
97
+ {
98
+ new OpenApiString ( "value1" ) ,
99
+ new OpenApiString ( "value2" )
100
+ }
101
+ }
102
+ }
103
+
104
+ } ;
105
+
61
106
public static OpenApiParameter AdvancedHeaderParameterWithSchemaReference = new OpenApiParameter
62
107
{
63
108
Name = "name1" ,
@@ -309,5 +354,74 @@ public void SerializeParameterWithSchemaTypeObjectAsV2JsonWorks()
309
354
expected = expected . MakeLineBreaksEnvironmentNeutral ( ) ;
310
355
actual . Should ( ) . Be ( expected ) ;
311
356
}
357
+
358
+ [ Fact ]
359
+ public void SerializeParameterWithFormStyleAndExplodeFalseWorks ( )
360
+ {
361
+ // Arrange
362
+ var outputStringWriter = new StringWriter ( CultureInfo . InvariantCulture ) ;
363
+ var writer = new OpenApiJsonWriter ( outputStringWriter ) ;
364
+ var expected =
365
+ @"{
366
+ ""name"": ""name1"",
367
+ ""in"": ""query"",
368
+ ""description"": ""description1"",
369
+ ""style"": ""form"",
370
+ ""explode"": false,
371
+ ""schema"": {
372
+ ""type"": ""array"",
373
+ ""items"": {
374
+ ""enum"": [
375
+ ""value1"",
376
+ ""value2""
377
+ ]
378
+ }
379
+ }
380
+ }" ;
381
+
382
+ // Act
383
+ ParameterWithFormStyleAndExplodeFalse . SerializeAsV3WithoutReference ( writer ) ;
384
+ writer . Flush ( ) ;
385
+ var actual = outputStringWriter . GetStringBuilder ( ) . ToString ( ) ;
386
+
387
+ // Assert
388
+ actual = actual . MakeLineBreaksEnvironmentNeutral ( ) ;
389
+ expected = expected . MakeLineBreaksEnvironmentNeutral ( ) ;
390
+ actual . Should ( ) . Be ( expected ) ;
391
+ }
392
+
393
+ [ Fact ]
394
+ public void SerializeParameterWithFormStyleAndExplodeTrueWorks ( )
395
+ {
396
+ // Arrange
397
+ var outputStringWriter = new StringWriter ( CultureInfo . InvariantCulture ) ;
398
+ var writer = new OpenApiJsonWriter ( outputStringWriter ) ;
399
+ var expected =
400
+ @"{
401
+ ""name"": ""name1"",
402
+ ""in"": ""query"",
403
+ ""description"": ""description1"",
404
+ ""style"": ""form"",
405
+ ""schema"": {
406
+ ""type"": ""array"",
407
+ ""items"": {
408
+ ""enum"": [
409
+ ""value1"",
410
+ ""value2""
411
+ ]
412
+ }
413
+ }
414
+ }" ;
415
+
416
+ // Act
417
+ ParameterWithFormStyleAndExplodeTrue . SerializeAsV3WithoutReference ( writer ) ;
418
+ writer . Flush ( ) ;
419
+ var actual = outputStringWriter . GetStringBuilder ( ) . ToString ( ) ;
420
+
421
+ // Assert
422
+ actual = actual . MakeLineBreaksEnvironmentNeutral ( ) ;
423
+ expected = expected . MakeLineBreaksEnvironmentNeutral ( ) ;
424
+ actual . Should ( ) . Be ( expected ) ;
425
+ }
312
426
}
313
427
}
0 commit comments