Skip to content

Commit df0aafb

Browse files
Merge pull request #2098 from microsoft/chore/additional-reference-inlining-tests
chore/additional reference inlining tests
2 parents 817acac + 88ad997 commit df0aafb

File tree

94 files changed

+194
-286
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+194
-286
lines changed

src/Microsoft.OpenApi/Models/OpenApiReference.cs

+11-6
Original file line numberDiff line numberDiff line change
@@ -158,11 +158,12 @@ public OpenApiReference(OpenApiReference reference)
158158
/// </summary>
159159
public void SerializeAsV31(IOpenApiWriter writer)
160160
{
161-
// summary and description are in 3.1 but not in 3.0
162-
writer.WriteProperty(OpenApiConstants.Summary, Summary);
163-
writer.WriteProperty(OpenApiConstants.Description, Description);
164-
165-
SerializeInternal(writer);
161+
SerializeInternal(writer, w =>
162+
{
163+
// summary and description are in 3.1 but not in 3.0
164+
w.WriteProperty(OpenApiConstants.Summary, Summary);
165+
w.WriteProperty(OpenApiConstants.Description, Description);
166+
});
166167
}
167168

168169
/// <summary>
@@ -176,7 +177,7 @@ public void SerializeAsV3(IOpenApiWriter writer)
176177
/// <summary>
177178
/// Serialize <see cref="OpenApiReference"/>
178179
/// </summary>
179-
private void SerializeInternal(IOpenApiWriter writer)
180+
private void SerializeInternal(IOpenApiWriter writer, Action<IOpenApiWriter> callback = null)
180181
{
181182
Utils.CheckArgumentNull(writer);
182183

@@ -188,6 +189,10 @@ private void SerializeInternal(IOpenApiWriter writer)
188189
}
189190

190191
writer.WriteStartObject();
192+
if (callback is not null)
193+
{
194+
callback(writer);
195+
}
191196

192197
// $ref
193198
writer.WriteProperty(OpenApiConstants.DollarRef, ReferenceV3);

src/Microsoft.OpenApi/Models/References/BaseOpenApiReferenceHolder.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public void SerializeAsV3(IOpenApiWriter writer)
8080
}
8181
else
8282
{
83-
SerializeInternal(writer, (writer, element) => CopyReferenceAsTargetElementWithOverrides(element).SerializeAsV3(writer));
83+
SerializeInternal(writer, (writer, element) => element.SerializeAsV3(writer));
8484
}
8585
}
8686

@@ -106,7 +106,7 @@ public virtual void SerializeAsV2(IOpenApiWriter writer)
106106
}
107107
else
108108
{
109-
SerializeInternal(writer, (writer, element) => CopyReferenceAsTargetElementWithOverrides(element).SerializeAsV2(writer));
109+
SerializeInternal(writer, (writer, element) => element.SerializeAsV2(writer));
110110
}
111111
}
112112

test/Microsoft.OpenApi.Tests/Models/References/OpenApiCallbackReferenceTests.cs

+14-10
Original file line numberDiff line numberDiff line change
@@ -159,37 +159,41 @@ public void CallbackReferenceResolutionWorks()
159159
}
160160

161161
[Theory]
162-
[InlineData(true)]
163-
[InlineData(false)]
164-
public async Task SerializeCallbackReferenceAsV3JsonWorks(bool produceTerseOutput)
162+
[InlineData(true, true)]
163+
[InlineData(false, true)]
164+
[InlineData(true, false)]
165+
[InlineData(false, false)]
166+
public async Task SerializeCallbackReferenceAsV3JsonWorks(bool produceTerseOutput, bool inlineLocalReferences)
165167
{
166168
// Arrange
167169
var outputStringWriter = new StringWriter(CultureInfo.InvariantCulture);
168-
var writer = new OpenApiJsonWriter(outputStringWriter, new OpenApiJsonWriterSettings { Terse = produceTerseOutput, InlineExternalReferences = true });
170+
var writer = new OpenApiJsonWriter(outputStringWriter, new OpenApiJsonWriterSettings { Terse = produceTerseOutput, InlineExternalReferences = true, InlineLocalReferences = inlineLocalReferences });
169171

170172
// Act
171173
_externalCallbackReference.SerializeAsV3(writer);
172174
await writer.FlushAsync();
173175

174176
// Assert
175-
await Verifier.Verify(outputStringWriter).UseParameters(produceTerseOutput);
177+
await Verifier.Verify(outputStringWriter).UseParameters(produceTerseOutput, inlineLocalReferences);
176178
}
177179

178180
[Theory]
179-
[InlineData(true)]
180-
[InlineData(false)]
181-
public async Task SerializeCallbackReferenceAsV31JsonWorks(bool produceTerseOutput)
181+
[InlineData(true, true)]
182+
[InlineData(false, true)]
183+
[InlineData(true, false)]
184+
[InlineData(false, false)]
185+
public async Task SerializeCallbackReferenceAsV31JsonWorks(bool produceTerseOutput, bool inlineLocalReferences)
182186
{
183187
// Arrange
184188
var outputStringWriter = new StringWriter(CultureInfo.InvariantCulture);
185-
var writer = new OpenApiJsonWriter(outputStringWriter, new OpenApiJsonWriterSettings { Terse = produceTerseOutput, InlineExternalReferences = true });
189+
var writer = new OpenApiJsonWriter(outputStringWriter, new OpenApiJsonWriterSettings { Terse = produceTerseOutput, InlineExternalReferences = true, InlineLocalReferences = inlineLocalReferences});
186190

187191
// Act
188192
_externalCallbackReference.SerializeAsV31(writer);
189193
await writer.FlushAsync();
190194

191195
// Assert
192-
await Verifier.Verify(outputStringWriter).UseParameters(produceTerseOutput);
196+
await Verifier.Verify(outputStringWriter).UseParameters(produceTerseOutput, inlineLocalReferences);
193197
}
194198
}
195199
}

test/Microsoft.OpenApi.Tests/Models/References/OpenApiExampleReferenceTests.SerializeCallbackReferenceAsV3JsonWorks_produceTerseOutput=False.verified.txt

-10
This file was deleted.

test/Microsoft.OpenApi.Tests/Models/References/OpenApiExampleReferenceTests.SerializeCallbackReferenceAsV3JsonWorks_produceTerseOutput=True.verified.txt

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
{
22
"summary": "Example of a local user",
33
"description": "This is an example of a local user",
4-
"value": [
5-
{
6-
"id": 1,
7-
"name": "John Doe"
8-
}
9-
]
4+
"$ref": "#/components/examples/UserExample"
105
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"summary":"Example of a local user","description":"This is an example of a local user","$ref":"#/components/examples/UserExample"}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"$ref": "#/components/examples/UserExample"
3+
}
+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"description": "This is is an example of a user",
44
"value": [
55
{
6-
"id": "1",
6+
"id": 1,
77
"name": "John Doe"
88
}
99
]

test/Microsoft.OpenApi.Tests/Models/References/OpenApiExampleReferenceTests.SerializeExampleReferenceAsV3JsonWorks_produceTerseOutput=True.verified.txt

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"$ref":"#/components/examples/UserExample"}
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"summary":"Example of a user","description":"This is is an example of a user","value":[{"id":"1","name":"John Doe"}]}
1+
{"summary":"Example of a user","description":"This is is an example of a user","value":[{"id":1,"name":"John Doe"}]}

test/Microsoft.OpenApi.Tests/Models/References/OpenApiExampleReferenceTests.cs

+14-10
Original file line numberDiff line numberDiff line change
@@ -150,37 +150,41 @@ public void ExampleReferenceResolutionWorks()
150150
}
151151

152152
[Theory]
153-
[InlineData(true)]
154-
[InlineData(false)]
155-
public async Task SerializeExampleReferenceAsV3JsonWorks(bool produceTerseOutput)
153+
[InlineData(true, true)]
154+
[InlineData(false, true)]
155+
[InlineData(true, false)]
156+
[InlineData(false, false)]
157+
public async Task SerializeExampleReferenceAsV3JsonWorks(bool produceTerseOutput, bool inlineLocalReferences)
156158
{
157159
// Arrange
158160
var outputStringWriter = new StringWriter(CultureInfo.InvariantCulture);
159-
var writer = new OpenApiJsonWriter(outputStringWriter, new OpenApiJsonWriterSettings { Terse = produceTerseOutput, InlineLocalReferences = true });
161+
var writer = new OpenApiJsonWriter(outputStringWriter, new OpenApiJsonWriterSettings { Terse = produceTerseOutput, InlineLocalReferences = inlineLocalReferences });
160162

161163
// Act
162164
_localExampleReference.SerializeAsV3(writer);
163165
await writer.FlushAsync();
164166

165167
// Assert
166-
await Verifier.Verify(outputStringWriter).UseParameters(produceTerseOutput);
168+
await Verifier.Verify(outputStringWriter).UseParameters(produceTerseOutput, inlineLocalReferences);
167169
}
168170

169171
[Theory]
170-
[InlineData(true)]
171-
[InlineData(false)]
172-
public async Task SerializeExampleReferenceAsV31JsonWorks(bool produceTerseOutput)
172+
[InlineData(true, true)]
173+
[InlineData(false, true)]
174+
[InlineData(true, false)]
175+
[InlineData(false, false)]
176+
public async Task SerializeExampleReferenceAsV31JsonWorks(bool produceTerseOutput, bool inlineLocalReferences)
173177
{
174178
// Arrange
175179
var outputStringWriter = new StringWriter(CultureInfo.InvariantCulture);
176-
var writer = new OpenApiJsonWriter(outputStringWriter, new OpenApiJsonWriterSettings { Terse = produceTerseOutput, InlineLocalReferences = true });
180+
var writer = new OpenApiJsonWriter(outputStringWriter, new OpenApiJsonWriterSettings { Terse = produceTerseOutput, InlineLocalReferences = inlineLocalReferences });
177181

178182
// Act
179183
_localExampleReference.SerializeAsV31(writer);
180184
await writer.FlushAsync();
181185

182186
// Assert
183-
await Verifier.Verify(outputStringWriter).UseParameters(produceTerseOutput);
187+
await Verifier.Verify(outputStringWriter).UseParameters(produceTerseOutput, inlineLocalReferences);
184188
}
185189
}
186190
}

test/Microsoft.OpenApi.Tests/Models/References/OpenApiHeaderReferenceTests.SerializeCallbackReferenceAsV3JsonWorks_produceTerseOutput=True.verified.txt

-1
This file was deleted.

test/Microsoft.OpenApi.Tests/Models/References/OpenApiHeaderReferenceTests.SerializeHeaderReferenceAsV2JsonWorksAsync_produceTerseOutput=False.verified.txt

-4
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"$ref": "#/headers/LocationHeader"
3+
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
{
22
"description": "The URL of the newly created post",
3-
"schema": {
4-
"type": "string"
5-
}
3+
"type": "string"
64
}

test/Microsoft.OpenApi.Tests/Models/References/OpenApiHeaderReferenceTests.SerializeHeaderReferenceAsV2JsonWorksAsync_produceTerseOutput=True.verified.txt

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"$ref":"#/headers/LocationHeader"}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"description":"The URL of the newly created post","type":"string"}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
{
22
"description": "Location of the locally referenced post",
3-
"schema": {
4-
"type": "string"
5-
}
3+
"$ref": "#/components/headers/LocationHeader"
64
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"description":"Location of the locally referenced post","$ref":"#/components/headers/LocationHeader"}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"$ref": "#/components/headers/LocationHeader"
3+
}

test/Microsoft.OpenApi.Tests/Models/References/OpenApiHeaderReferenceTests.SerializeHeaderReferenceAsV3JsonWorks_produceTerseOutput=True.verified.txt

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"$ref":"#/components/headers/LocationHeader"}

test/Microsoft.OpenApi.Tests/Models/References/OpenApiHeaderReferenceTests.SerializeParameterReferenceAsV2JsonWorksAsync_produceTerseOutput=False.verified.txt

-4
This file was deleted.

test/Microsoft.OpenApi.Tests/Models/References/OpenApiHeaderReferenceTests.SerializeParameterReferenceAsV2JsonWorksAsync_produceTerseOutput=True.verified.txt

-1
This file was deleted.

test/Microsoft.OpenApi.Tests/Models/References/OpenApiHeaderReferenceTests.cs

+21-15
Original file line numberDiff line numberDiff line change
@@ -109,54 +109,60 @@ public void HeaderReferenceResolutionWorks()
109109
}
110110

111111
[Theory]
112-
[InlineData(true)]
113-
[InlineData(false)]
114-
public async Task SerializeHeaderReferenceAsV3JsonWorks(bool produceTerseOutput)
112+
[InlineData(true, true)]
113+
[InlineData(false, true)]
114+
[InlineData(true, false)]
115+
[InlineData(false, false)]
116+
public async Task SerializeHeaderReferenceAsV3JsonWorks(bool produceTerseOutput, bool inlineLocalReferences)
115117
{
116118
// Arrange
117119
var outputStringWriter = new StringWriter(CultureInfo.InvariantCulture);
118-
var writer = new OpenApiJsonWriter(outputStringWriter, new OpenApiJsonWriterSettings { Terse = produceTerseOutput, InlineLocalReferences = true });
120+
var writer = new OpenApiJsonWriter(outputStringWriter, new OpenApiJsonWriterSettings { Terse = produceTerseOutput, InlineLocalReferences = inlineLocalReferences });
119121

120122
// Act
121123
_localHeaderReference.SerializeAsV3(writer);
122124
await writer.FlushAsync();
123125

124126
// Assert
125-
await Verifier.Verify(outputStringWriter).UseParameters(produceTerseOutput);
127+
await Verifier.Verify(outputStringWriter).UseParameters(produceTerseOutput, inlineLocalReferences);
126128
}
127129

128130
[Theory]
129-
[InlineData(true)]
130-
[InlineData(false)]
131-
public async Task SerializeHeaderReferenceAsV31JsonWorks(bool produceTerseOutput)
131+
[InlineData(true, true)]
132+
[InlineData(false, true)]
133+
[InlineData(true, false)]
134+
[InlineData(false, false)]
135+
public async Task SerializeHeaderReferenceAsV31JsonWorks(bool produceTerseOutput, bool inlineLocalReferences)
132136
{
133137
// Arrange
134138
var outputStringWriter = new StringWriter(CultureInfo.InvariantCulture);
135-
var writer = new OpenApiJsonWriter(outputStringWriter, new OpenApiJsonWriterSettings { Terse = produceTerseOutput, InlineLocalReferences = true });
139+
var writer = new OpenApiJsonWriter(outputStringWriter, new OpenApiJsonWriterSettings { Terse = produceTerseOutput, InlineLocalReferences = inlineLocalReferences });
136140

137141
// Act
138142
_localHeaderReference.SerializeAsV31(writer);
139143
await writer.FlushAsync();
140144

141145
// Assert
142-
await Verifier.Verify(outputStringWriter).UseParameters(produceTerseOutput);
146+
await Verifier.Verify(outputStringWriter).UseParameters(produceTerseOutput, inlineLocalReferences);
143147
}
144148

145149
[Theory]
146-
[InlineData(true)]
147-
[InlineData(false)]
148-
public async Task SerializeHeaderReferenceAsV2JsonWorksAsync(bool produceTerseOutput)
150+
[InlineData(true, true)]
151+
[InlineData(false, true)]
152+
[InlineData(true, false)]
153+
[InlineData(false, false)]
154+
public async Task SerializeHeaderReferenceAsV2JsonWorksAsync(bool produceTerseOutput, bool inlineLocalReferences)
149155
{
150156
// Arrange
151157
var outputStringWriter = new StringWriter(CultureInfo.InvariantCulture);
152-
var writer = new OpenApiJsonWriter(outputStringWriter, new OpenApiJsonWriterSettings { Terse = produceTerseOutput, InlineLocalReferences = true });
158+
var writer = new OpenApiJsonWriter(outputStringWriter, new OpenApiJsonWriterSettings { Terse = produceTerseOutput, InlineLocalReferences = inlineLocalReferences });
153159

154160
// Act
155161
_localHeaderReference.SerializeAsV2(writer);
156162
await writer.FlushAsync();
157163

158164
// Assert
159-
await Verifier.Verify(outputStringWriter).UseParameters(produceTerseOutput);
165+
await Verifier.Verify(outputStringWriter).UseParameters(produceTerseOutput, inlineLocalReferences);
160166
}
161167

162168
[Fact]

test/Microsoft.OpenApi.Tests/Models/References/OpenApiLinkReferenceTests.SerializeCallbackReferenceAsV3JsonWorks_produceTerseOutput=False.verified.txt

-7
This file was deleted.

test/Microsoft.OpenApi.Tests/Models/References/OpenApiLinkReferenceTests.SerializeCallbackReferenceAsV3JsonWorks_produceTerseOutput=True.verified.txt

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"description": "Use the id returned as the userId in `GET /users/{userId}`",
3+
"$ref": "#/components/links/GetUserByUserId"
4+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"description":"Use the id returned as the userId in `GET /users/{userId}`","$ref":"#/components/links/GetUserByUserId"}

test/Microsoft.OpenApi.Tests/Models/References/OpenApiLinkReferenceTests.SerializeLinkReferenceAsV3JsonWorks_produceTerseOutput=False.verified.txt

-7
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"$ref": "#/components/links/GetUserByUserId"
3+
}

test/Microsoft.OpenApi.Tests/Models/References/OpenApiLinkReferenceTests.SerializeLinkReferenceAsV3JsonWorks_produceTerseOutput=True.verified.txt

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"$ref":"#/components/links/GetUserByUserId"}

0 commit comments

Comments
 (0)