Skip to content

Commit 9e9ff78

Browse files
committed
Add tests to validate
1 parent 9d9fb6a commit 9e9ff78

File tree

4 files changed

+89
-2
lines changed

4 files changed

+89
-2
lines changed

test/Microsoft.OpenApi.Readers.Tests/V31Tests/OpenApiSchemaTests.cs

Lines changed: 82 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
// Copyright (c) Microsoft Corporation. All rights reserved.
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT license.
33

44
using System.Collections.Generic;
5+
using System.IO;
56
using System.Text.Json.Nodes;
67
using FluentAssertions;
78
using FluentAssertions.Equivalency;
8-
using Microsoft.OpenApi.Any;
99
using Microsoft.OpenApi.Models;
1010
using Microsoft.OpenApi.Reader;
11+
using Microsoft.OpenApi.Tests;
12+
using Microsoft.OpenApi.Writers;
1113
using Xunit;
1214

1315
namespace Microsoft.OpenApi.Readers.Tests.V31Tests
@@ -289,5 +291,83 @@ public void CloningSchemaWithExamplesAndEnumsShouldSucceed()
289291
clone.Examples.Should().NotBeEquivalentTo(schema.Examples);
290292
clone.Default.Should().NotBeEquivalentTo(schema.Default);
291293
}
294+
295+
[Fact]
296+
public void SerializeV31SchemaWithMultipleTypesAsV3Works()
297+
{
298+
// Arrange
299+
var expected = @"type: string
300+
nullable: true";
301+
302+
var path = Path.Combine(SampleFolderPath, "schemaWithTypeArray.yaml");
303+
304+
// Act
305+
var schema = OpenApiModelFactory.Load<OpenApiSchema>(path, OpenApiSpecVersion.OpenApi3_1, out _);
306+
307+
var writer = new StringWriter();
308+
schema.SerializeAsV3(new OpenApiYamlWriter(writer));
309+
var schema1String = writer.ToString();
310+
311+
schema1String.MakeLineBreaksEnvironmentNeutral().Should().Be(expected.MakeLineBreaksEnvironmentNeutral());
312+
}
313+
314+
[Fact]
315+
public void SerializeV31SchemaWithMultipleTypesAsV2Works()
316+
{
317+
// Arrange
318+
var expected = @"type: string
319+
x-nullable: true";
320+
321+
var path = Path.Combine(SampleFolderPath, "schemaWithTypeArray.yaml");
322+
323+
// Act
324+
var schema = OpenApiModelFactory.Load<OpenApiSchema>(path, OpenApiSpecVersion.OpenApi3_1, out _);
325+
326+
var writer = new StringWriter();
327+
schema.SerializeAsV2(new OpenApiYamlWriter(writer));
328+
var schema1String = writer.ToString();
329+
330+
schema1String.MakeLineBreaksEnvironmentNeutral().Should().Be(expected.MakeLineBreaksEnvironmentNeutral());
331+
}
332+
333+
[Fact]
334+
public void SerializeV3SchemaWithNullableAsV31Works()
335+
{
336+
// Arrange
337+
var expected = @"type:
338+
- string
339+
- null";
340+
341+
var path = Path.Combine(SampleFolderPath, "schemaWithNullable.yaml");
342+
343+
// Act
344+
var schema = OpenApiModelFactory.Load<OpenApiSchema>(path, OpenApiSpecVersion.OpenApi3_0, out _);
345+
346+
var writer = new StringWriter();
347+
schema.SerializeAsV31(new OpenApiYamlWriter(writer));
348+
var schemaString = writer.ToString();
349+
350+
schemaString.MakeLineBreaksEnvironmentNeutral().Should().Be(expected.MakeLineBreaksEnvironmentNeutral());
351+
}
352+
353+
[Fact]
354+
public void SerializeV2SchemaWithNullableExtensionAsV31Works()
355+
{
356+
// Arrange
357+
var expected = @"type:
358+
- string
359+
- null";
360+
361+
var path = Path.Combine(SampleFolderPath, "schemaWithNullableExtension.yaml");
362+
363+
// Act
364+
var schema = OpenApiModelFactory.Load<OpenApiSchema>(path, OpenApiSpecVersion.OpenApi2_0, out _);
365+
366+
var writer = new StringWriter();
367+
schema.SerializeAsV31(new OpenApiYamlWriter(writer));
368+
var schemaString = writer.ToString();
369+
370+
schemaString.MakeLineBreaksEnvironmentNeutral().Should().Be(expected.MakeLineBreaksEnvironmentNeutral());
371+
}
292372
}
293373
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
type: string
2+
nullable: true
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
type: string
2+
x-nullable: true
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
type:
2+
- "string"
3+
- "null"

0 commit comments

Comments
 (0)