|
2 | 2 | // Licensed under the MIT license. |
3 | 3 |
|
4 | 4 | using System.IO; |
5 | | -using FluentAssertions; |
6 | | -using Microsoft.OpenApi.Reader.V2; |
7 | | -using Xunit; |
8 | | -using Microsoft.OpenApi.Reader.ParseNodes; |
9 | | -using Microsoft.OpenApi.Models; |
10 | | -using Microsoft.OpenApi.Extensions; |
11 | 5 | using System.Text.Json.Nodes; |
12 | | -using System.Collections.Generic; |
| 6 | +using System.Threading.Tasks; |
| 7 | +using FluentAssertions; |
13 | 8 | using FluentAssertions.Equivalency; |
| 9 | +using Microsoft.OpenApi.Extensions; |
| 10 | +using Microsoft.OpenApi.Models; |
14 | 11 | using Microsoft.OpenApi.Models.References; |
| 12 | +using Microsoft.OpenApi.Reader; |
| 13 | +using Microsoft.OpenApi.Reader.ParseNodes; |
| 14 | +using Microsoft.OpenApi.Reader.V2; |
| 15 | +using Microsoft.OpenApi.Tests; |
15 | 16 | using Microsoft.OpenApi.Writers; |
16 | | -using Microsoft.OpenApi.Models.Interfaces; |
| 17 | +using Xunit; |
17 | 18 |
|
18 | 19 | namespace Microsoft.OpenApi.Readers.Tests.V2Tests |
19 | 20 | { |
@@ -98,6 +99,7 @@ public void ParseSchemaWithEnumShouldSucceed() |
98 | 99 | .Excluding((IMemberInfo memberInfo) => |
99 | 100 | memberInfo.Path.EndsWith("Parent"))); |
100 | 101 | } |
| 102 | + |
101 | 103 | [Fact] |
102 | 104 | public void PropertiesReferenceShouldWork() |
103 | 105 | { |
@@ -152,5 +154,42 @@ public void PropertiesReferenceShouldWork() |
152 | 154 | ); |
153 | 155 | Assert.True(JsonNode.DeepEquals(JsonNode.Parse(json), expected)); |
154 | 156 | } |
| 157 | + |
| 158 | + [Fact] |
| 159 | + public async Task SerializeSchemaWithNullableShouldSucceed() |
| 160 | + { |
| 161 | + // Arrange |
| 162 | + var expected = @"type: string |
| 163 | +x-nullable: true"; |
| 164 | + |
| 165 | + var path = Path.Combine(SampleFolderPath, "schemaWithNullableExtension.yaml"); |
| 166 | + |
| 167 | + // Act |
| 168 | + var schema = await OpenApiModelFactory.LoadAsync<OpenApiSchema>(path, OpenApiSpecVersion.OpenApi2_0, new(), SettingsFixture.ReaderSettings); |
| 169 | + |
| 170 | + var writer = new StringWriter(); |
| 171 | + schema.SerializeAsV2(new OpenApiYamlWriter(writer)); |
| 172 | + var schemaString = writer.ToString(); |
| 173 | + |
| 174 | + Assert.Equal(expected.MakeLineBreaksEnvironmentNeutral(), schemaString.MakeLineBreaksEnvironmentNeutral()); |
| 175 | + } |
| 176 | + |
| 177 | + [Fact] |
| 178 | + public async Task SerializeSchemaWithOnlyNullableShouldSucceed() |
| 179 | + { |
| 180 | + // Arrange |
| 181 | + var expected = @"x-nullable: true"; |
| 182 | + |
| 183 | + var path = Path.Combine(SampleFolderPath, "schemaWithOnlyNullableExtension.yaml"); |
| 184 | + |
| 185 | + // Act |
| 186 | + var schema = await OpenApiModelFactory.LoadAsync<OpenApiSchema>(path, OpenApiSpecVersion.OpenApi2_0, new(), SettingsFixture.ReaderSettings); |
| 187 | + |
| 188 | + var writer = new StringWriter(); |
| 189 | + schema.SerializeAsV2(new OpenApiYamlWriter(writer)); |
| 190 | + var schemaString = writer.ToString(); |
| 191 | + |
| 192 | + Assert.Equal(expected.MakeLineBreaksEnvironmentNeutral(), schemaString.MakeLineBreaksEnvironmentNeutral()); |
| 193 | + } |
155 | 194 | } |
156 | 195 | } |
0 commit comments