Skip to content

Commit e442a71

Browse files
committed
Tests
1 parent d9cc3c3 commit e442a71

File tree

1 file changed

+145
-49
lines changed

1 file changed

+145
-49
lines changed
Lines changed: 145 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,36 @@
11
using System.IO;
2+
using System.Threading;
23
using System.Threading.Tasks;
34
using Xunit;
45

56
namespace Microsoft.OpenApi.Tests.Extensions;
67

78
public class OpenApiSerializableExtensionsTests
89
{
9-
[Fact]
10-
public async Task UsesTheTerseOutputInformationFromSettingsTrue()
10+
private const string TerseOutput = "{\"name\":\"param1\",\"in\":\"query\",\"description\":\"A sample parameter\",\"schema\":{\"type\":\"string\"}}";
11+
private const string PrettyOutput = "{\n \"name\": \"param1\",\n \"in\": \"query\",\n \"description\": \"A sample parameter\",\n \"schema\": {\n \"type\": \"string\"\n }\n}";
12+
13+
private static OpenApiParameter CreateParameter() => new()
1114
{
12-
var parameter = new OpenApiParameter
13-
{
14-
Name = "param1",
15-
In = ParameterLocation.Query,
16-
Description = "A sample parameter",
17-
Required = false,
18-
Schema = new OpenApiSchema
19-
{
20-
Type = JsonSchemaType.String
21-
}
22-
};
23-
24-
var settings = new OpenApiJsonWriterSettings
15+
Name = "param1",
16+
In = ParameterLocation.Query,
17+
Description = "A sample parameter",
18+
Required = false,
19+
Schema = new OpenApiSchema
2520
{
26-
Terse = true
27-
};
21+
Type = JsonSchemaType.String
22+
}
23+
};
24+
25+
// ——————————————————————————————————————————————————————————
26+
// SerializeAsync to Stream with format and settings
27+
// ——————————————————————————————————————————————————————————
28+
29+
[Fact]
30+
public async Task SerializeAsV31JsonToStreamWithTerseSettingsWorks()
31+
{
32+
var parameter = CreateParameter();
33+
var settings = new OpenApiJsonWriterSettings { Terse = true };
2834

2935
using var stream = new MemoryStream();
3036
await parameter.SerializeAsync(stream, OpenApiSpecVersion.OpenApi3_1, OpenApiConstants.Json, settings);
@@ -33,28 +39,14 @@ public async Task UsesTheTerseOutputInformationFromSettingsTrue()
3339
using var reader = new StreamReader(stream);
3440
var output = await reader.ReadToEndAsync();
3541

36-
Assert.Equal("{\"name\":\"param1\",\"in\":\"query\",\"description\":\"A sample parameter\",\"schema\":{\"type\":\"string\"}}", output);
42+
Assert.Equal(TerseOutput, output);
3743
}
3844

3945
[Fact]
40-
public async Task UsesTheTerseOutputInformationFromSettingsFalse()
46+
public async Task SerializeAsV31JsonToStreamWithNonTerseSettingsWorks()
4147
{
42-
var parameter = new OpenApiParameter
43-
{
44-
Name = "param1",
45-
In = ParameterLocation.Query,
46-
Description = "A sample parameter",
47-
Required = false,
48-
Schema = new OpenApiSchema
49-
{
50-
Type = JsonSchemaType.String
51-
}
52-
};
53-
54-
var settings = new OpenApiJsonWriterSettings
55-
{
56-
Terse = false
57-
};
48+
var parameter = CreateParameter();
49+
var settings = new OpenApiJsonWriterSettings { Terse = false };
5850

5951
using var stream = new MemoryStream();
6052
await parameter.SerializeAsync(stream, OpenApiSpecVersion.OpenApi3_1, OpenApiConstants.Json, settings);
@@ -63,23 +55,13 @@ public async Task UsesTheTerseOutputInformationFromSettingsFalse()
6355
using var reader = new StreamReader(stream);
6456
var output = await reader.ReadToEndAsync();
6557

66-
Assert.Equal("{\n \"name\": \"param1\",\n \"in\": \"query\",\n \"description\": \"A sample parameter\",\n \"schema\": {\n \"type\": \"string\"\n }\n}", output);
58+
Assert.Equal(PrettyOutput, output);
6759
}
6860

6961
[Fact]
70-
public async Task UsesTheTerseOutputInformationFromSettingsNoSettings()
62+
public async Task SerializeAsV31JsonToStreamWithoutSettingsWorks()
7163
{
72-
var parameter = new OpenApiParameter
73-
{
74-
Name = "param1",
75-
In = ParameterLocation.Query,
76-
Description = "A sample parameter",
77-
Required = false,
78-
Schema = new OpenApiSchema
79-
{
80-
Type = JsonSchemaType.String
81-
}
82-
};
64+
var parameter = CreateParameter();
8365

8466
using var stream = new MemoryStream();
8567
await parameter.SerializeAsync(stream, OpenApiSpecVersion.OpenApi3_1, OpenApiConstants.Json, null);
@@ -88,6 +70,120 @@ public async Task UsesTheTerseOutputInformationFromSettingsNoSettings()
8870
using var reader = new StreamReader(stream);
8971
var output = await reader.ReadToEndAsync();
9072

91-
Assert.Equal("{\n \"name\": \"param1\",\n \"in\": \"query\",\n \"description\": \"A sample parameter\",\n \"schema\": {\n \"type\": \"string\"\n }\n}", output);
73+
Assert.Equal(PrettyOutput, output);
74+
}
75+
76+
// ——————————————————————————————————————————————————————————
77+
// SerializeAsJsonAsync to Stream with settings
78+
// ——————————————————————————————————————————————————————————
79+
80+
[Fact]
81+
public async Task SerializeAsJsonAsyncToStreamWithTerseSettingsWorks()
82+
{
83+
var parameter = CreateParameter();
84+
var settings = new OpenApiJsonWriterSettings { Terse = true };
85+
86+
using var stream = new MemoryStream();
87+
await parameter.SerializeAsJsonAsync(stream, OpenApiSpecVersion.OpenApi3_1, settings);
88+
89+
stream.Position = 0;
90+
using var reader = new StreamReader(stream);
91+
var output = await reader.ReadToEndAsync();
92+
93+
Assert.Equal(TerseOutput, output);
94+
}
95+
96+
[Fact]
97+
public async Task SerializeAsJsonAsyncToStreamWithNonTerseSettingsWorks()
98+
{
99+
var parameter = CreateParameter();
100+
var settings = new OpenApiJsonWriterSettings { Terse = false };
101+
102+
using var stream = new MemoryStream();
103+
await parameter.SerializeAsJsonAsync(stream, OpenApiSpecVersion.OpenApi3_1, settings);
104+
105+
stream.Position = 0;
106+
using var reader = new StreamReader(stream);
107+
var output = await reader.ReadToEndAsync();
108+
109+
Assert.Equal(PrettyOutput, output);
110+
}
111+
112+
[Fact]
113+
public async Task SerializeAsJsonAsyncToStreamWithoutSettingsWorks()
114+
{
115+
var parameter = CreateParameter();
116+
117+
using var stream = new MemoryStream();
118+
await parameter.SerializeAsJsonAsync(stream, OpenApiSpecVersion.OpenApi3_1, null);
119+
120+
stream.Position = 0;
121+
using var reader = new StreamReader(stream);
122+
var output = await reader.ReadToEndAsync();
123+
124+
Assert.Equal(PrettyOutput, output);
125+
}
126+
127+
// ——————————————————————————————————————————————————————————
128+
// SerializeAsJsonAsync to string with settings
129+
// ——————————————————————————————————————————————————————————
130+
131+
[Fact]
132+
public async Task SerializeAsJsonAsyncToStringWithTerseSettingsWorks()
133+
{
134+
var parameter = CreateParameter();
135+
var settings = new OpenApiJsonWriterSettings { Terse = true };
136+
137+
var output = await parameter.SerializeAsJsonAsync(OpenApiSpecVersion.OpenApi3_1, settings, CancellationToken.None);
138+
139+
Assert.Equal(TerseOutput, output);
140+
}
141+
142+
[Fact]
143+
public async Task SerializeAsJsonAsyncToStringWithNonTerseSettingsWorks()
144+
{
145+
var parameter = CreateParameter();
146+
var settings = new OpenApiJsonWriterSettings { Terse = false };
147+
148+
var output = await parameter.SerializeAsJsonAsync(OpenApiSpecVersion.OpenApi3_1, settings, CancellationToken.None);
149+
150+
Assert.Equal(PrettyOutput, output);
151+
}
152+
153+
// ——————————————————————————————————————————————————————————
154+
// SerializeAsync to string with format and settings
155+
// ——————————————————————————————————————————————————————————
156+
157+
[Fact]
158+
public async Task SerializeAsV31JsonToStringWithTerseSettingsWorks()
159+
{
160+
var parameter = CreateParameter();
161+
var settings = new OpenApiJsonWriterSettings { Terse = true };
162+
163+
var output = await parameter.SerializeAsync(OpenApiSpecVersion.OpenApi3_1, OpenApiConstants.Json, settings, CancellationToken.None);
164+
165+
Assert.Equal(TerseOutput, output);
166+
}
167+
168+
[Fact]
169+
public async Task SerializeAsV31JsonToStringWithNonTerseSettingsWorks()
170+
{
171+
var parameter = CreateParameter();
172+
var settings = new OpenApiJsonWriterSettings { Terse = false };
173+
174+
var output = await parameter.SerializeAsync(OpenApiSpecVersion.OpenApi3_1, OpenApiConstants.Json, settings, CancellationToken.None);
175+
176+
Assert.Equal(PrettyOutput, output);
177+
}
178+
179+
[Fact]
180+
public async Task SerializeAsV31JsonToStringWithDefaultWriterSettingsWorks()
181+
{
182+
var parameter = CreateParameter();
183+
var settings = new OpenApiWriterSettings();
184+
185+
var output = await parameter.SerializeAsync(OpenApiSpecVersion.OpenApi3_1, OpenApiConstants.Json, settings, CancellationToken.None);
186+
187+
Assert.Equal(PrettyOutput, output);
92188
}
93189
}

0 commit comments

Comments
 (0)