Skip to content

Commit 49234f2

Browse files
committed
Add snapshot tests
1 parent 3fe8cad commit 49234f2

10 files changed

+584
-1
lines changed

src/NSwag.CodeGeneration.CSharp.Tests/CSharpCompiler.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ static CSharpCompiler()
2121
.Append(MetadataReference.CreateFromFile(typeof(System.Collections.ObjectModel.ObservableCollection<>).Assembly.Location))
2222
.Append(MetadataReference.CreateFromFile(typeof(System.Runtime.Serialization.EnumMemberAttribute).Assembly.Location))
2323
.Append(MetadataReference.CreateFromFile(typeof(System.Text.Json.Serialization.JsonConverter).Assembly.Location))
24+
.Append(MetadataReference.CreateFromFile(typeof(System.Net.Http.Json.JsonContent).Assembly.Location))
2425
.ToList();
2526
}
2627

src/NSwag.CodeGeneration.CSharp.Tests/CodeGenerationTests.cs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,7 @@ private static OpenApiDocument CreateDocument()
359359
var document = new OpenApiDocument();
360360
var settings = new NewtonsoftJsonSchemaGeneratorSettings();
361361
var generator = new JsonSchemaGenerator(settings);
362+
var personReference = generator.Generate(typeof(Person), new OpenApiSchemaResolver(document, settings));
362363

363364
document.Paths["/Person"] = new OpenApiPathItem
364365
{
@@ -371,13 +372,38 @@ private static OpenApiDocument CreateDocument()
371372
{
372373
Schema = new JsonSchema
373374
{
374-
Reference = generator.Generate(typeof(Person), new OpenApiSchemaResolver(document, settings))
375+
Reference = personReference
375376
}
376377
}
377378
}
378379
}
379380
}
380381
};
382+
document.Paths["/CreatePerson"] = new OpenApiPathItem
383+
{
384+
[OpenApiOperationMethod.Post] = new OpenApiOperation
385+
{
386+
RequestBody = new OpenApiRequestBody
387+
{
388+
Content =
389+
{
390+
["application/json"] = new OpenApiMediaType
391+
{
392+
Schema = new JsonSchema
393+
{
394+
Reference = personReference
395+
}
396+
}
397+
}
398+
},
399+
Responses =
400+
{
401+
{
402+
"200", new OpenApiResponse()
403+
}
404+
}
405+
}
406+
};
381407
return document;
382408
}
383409
}

src/NSwag.CodeGeneration.CSharp.Tests/Snapshots/CodeGenerationTests.When_Success_Response_contains_multiple_content_types_prioritizes_json.verified.txt

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,75 @@ namespace MyNamespace
124124
}
125125
}
126126

127+
public virtual System.Threading.Tasks.Task CreatePersonAsync(Person body)
128+
{
129+
return CreatePersonAsync(body, System.Threading.CancellationToken.None);
130+
}
131+
132+
public virtual async System.Threading.Tasks.Task CreatePersonAsync(Person body, System.Threading.CancellationToken cancellationToken)
133+
{
134+
var client_ = _httpClient;
135+
var disposeClient_ = false;
136+
try
137+
{
138+
using (var request_ = new System.Net.Http.HttpRequestMessage())
139+
{
140+
var content_ = System.Net.Http.Json.JsonContent.Create(body, System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"), JsonSerializerSettings);
141+
request_.Content = content_;
142+
request_.Method = new System.Net.Http.HttpMethod("POST");
143+
144+
var urlBuilder_ = new System.Text.StringBuilder();
145+
if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl);
146+
// Operation Path: "CreatePerson"
147+
urlBuilder_.Append("CreatePerson");
148+
149+
PrepareRequest(client_, request_, urlBuilder_);
150+
151+
var url_ = urlBuilder_.ToString();
152+
request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute);
153+
154+
PrepareRequest(client_, request_, url_);
155+
156+
var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
157+
var disposeResponse_ = true;
158+
try
159+
{
160+
var headers_ = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>>();
161+
foreach (var item_ in response_.Headers)
162+
headers_[item_.Key] = item_.Value;
163+
if (response_.Content != null && response_.Content.Headers != null)
164+
{
165+
foreach (var item_ in response_.Content.Headers)
166+
headers_[item_.Key] = item_.Value;
167+
}
168+
169+
ProcessResponse(client_, response_);
170+
171+
var status_ = (int)response_.StatusCode;
172+
if (status_ == 200)
173+
{
174+
return;
175+
}
176+
else
177+
{
178+
var responseData_ = response_.Content == null ? null : await ReadAsStringAsync(response_.Content, cancellationToken).ConfigureAwait(false);
179+
throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null);
180+
}
181+
}
182+
finally
183+
{
184+
if (disposeResponse_)
185+
response_.Dispose();
186+
}
187+
}
188+
}
189+
finally
190+
{
191+
if (disposeClient_)
192+
client_.Dispose();
193+
}
194+
}
195+
127196
protected struct ObjectResponseResult<T>
128197
{
129198
public ObjectResponseResult(T responseObject, string responseText)

src/NSwag.CodeGeneration.CSharp.Tests/Snapshots/CodeGenerationTests.When_Success_Response_contains_multiple_content_types_prioritizes_wildcard.verified.txt

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,75 @@ namespace MyNamespace
124124
}
125125
}
126126

127+
public virtual System.Threading.Tasks.Task CreatePersonAsync(Person body)
128+
{
129+
return CreatePersonAsync(body, System.Threading.CancellationToken.None);
130+
}
131+
132+
public virtual async System.Threading.Tasks.Task CreatePersonAsync(Person body, System.Threading.CancellationToken cancellationToken)
133+
{
134+
var client_ = _httpClient;
135+
var disposeClient_ = false;
136+
try
137+
{
138+
using (var request_ = new System.Net.Http.HttpRequestMessage())
139+
{
140+
var content_ = System.Net.Http.Json.JsonContent.Create(body, System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"), JsonSerializerSettings);
141+
request_.Content = content_;
142+
request_.Method = new System.Net.Http.HttpMethod("POST");
143+
144+
var urlBuilder_ = new System.Text.StringBuilder();
145+
if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl);
146+
// Operation Path: "CreatePerson"
147+
urlBuilder_.Append("CreatePerson");
148+
149+
PrepareRequest(client_, request_, urlBuilder_);
150+
151+
var url_ = urlBuilder_.ToString();
152+
request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute);
153+
154+
PrepareRequest(client_, request_, url_);
155+
156+
var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
157+
var disposeResponse_ = true;
158+
try
159+
{
160+
var headers_ = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>>();
161+
foreach (var item_ in response_.Headers)
162+
headers_[item_.Key] = item_.Value;
163+
if (response_.Content != null && response_.Content.Headers != null)
164+
{
165+
foreach (var item_ in response_.Content.Headers)
166+
headers_[item_.Key] = item_.Value;
167+
}
168+
169+
ProcessResponse(client_, response_);
170+
171+
var status_ = (int)response_.StatusCode;
172+
if (status_ == 200)
173+
{
174+
return;
175+
}
176+
else
177+
{
178+
var responseData_ = response_.Content == null ? null : await ReadAsStringAsync(response_.Content, cancellationToken).ConfigureAwait(false);
179+
throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null);
180+
}
181+
}
182+
finally
183+
{
184+
if (disposeResponse_)
185+
response_.Dispose();
186+
}
187+
}
188+
}
189+
finally
190+
{
191+
if (disposeClient_)
192+
client_.Dispose();
193+
}
194+
}
195+
127196
protected struct ObjectResponseResult<T>
128197
{
129198
public ObjectResponseResult(T responseObject, string responseText)

src/NSwag.CodeGeneration.CSharp.Tests/Snapshots/CodeGenerationTests.When_generating_CSharp_code_then_output_contains_expected_classes.verified.txt

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,77 @@ namespace MyNamespace
124124
}
125125
}
126126

127+
public virtual System.Threading.Tasks.Task CreatePersonAsync(Person body)
128+
{
129+
return CreatePersonAsync(body, System.Threading.CancellationToken.None);
130+
}
131+
132+
public virtual async System.Threading.Tasks.Task CreatePersonAsync(Person body, System.Threading.CancellationToken cancellationToken)
133+
{
134+
var client_ = _httpClient;
135+
var disposeClient_ = false;
136+
try
137+
{
138+
using (var request_ = new System.Net.Http.HttpRequestMessage())
139+
{
140+
var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, JsonSerializerSettings);
141+
var content_ = new System.Net.Http.StringContent(json_);
142+
content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json");
143+
request_.Content = content_;
144+
request_.Method = new System.Net.Http.HttpMethod("POST");
145+
146+
var urlBuilder_ = new System.Text.StringBuilder();
147+
if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl);
148+
// Operation Path: "CreatePerson"
149+
urlBuilder_.Append("CreatePerson");
150+
151+
PrepareRequest(client_, request_, urlBuilder_);
152+
153+
var url_ = urlBuilder_.ToString();
154+
request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute);
155+
156+
PrepareRequest(client_, request_, url_);
157+
158+
var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
159+
var disposeResponse_ = true;
160+
try
161+
{
162+
var headers_ = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>>();
163+
foreach (var item_ in response_.Headers)
164+
headers_[item_.Key] = item_.Value;
165+
if (response_.Content != null && response_.Content.Headers != null)
166+
{
167+
foreach (var item_ in response_.Content.Headers)
168+
headers_[item_.Key] = item_.Value;
169+
}
170+
171+
ProcessResponse(client_, response_);
172+
173+
var status_ = (int)response_.StatusCode;
174+
if (status_ == 200)
175+
{
176+
return;
177+
}
178+
else
179+
{
180+
var responseData_ = response_.Content == null ? null : await ReadAsStringAsync(response_.Content, cancellationToken).ConfigureAwait(false);
181+
throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null);
182+
}
183+
}
184+
finally
185+
{
186+
if (disposeResponse_)
187+
response_.Dispose();
188+
}
189+
}
190+
}
191+
finally
192+
{
193+
if (disposeClient_)
194+
client_.Dispose();
195+
}
196+
}
197+
127198
protected struct ObjectResponseResult<T>
128199
{
129200
public ObjectResponseResult(T responseObject, string responseText)

src/NSwag.CodeGeneration.CSharp.Tests/Snapshots/CodeGenerationTests.When_generating_CSharp_code_with_NewtonsoftJson_and_JsonSerializerSettingsTransformationMethod_then_output_contains_expected_code.verified.txt

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,77 @@ namespace MyNamespace
124124
}
125125
}
126126

127+
public virtual System.Threading.Tasks.Task CreatePersonAsync(Person body)
128+
{
129+
return CreatePersonAsync(body, System.Threading.CancellationToken.None);
130+
}
131+
132+
public virtual async System.Threading.Tasks.Task CreatePersonAsync(Person body, System.Threading.CancellationToken cancellationToken)
133+
{
134+
var client_ = _httpClient;
135+
var disposeClient_ = false;
136+
try
137+
{
138+
using (var request_ = new System.Net.Http.HttpRequestMessage())
139+
{
140+
var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, JsonSerializerSettings);
141+
var content_ = new System.Net.Http.StringContent(json_);
142+
content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json");
143+
request_.Content = content_;
144+
request_.Method = new System.Net.Http.HttpMethod("POST");
145+
146+
var urlBuilder_ = new System.Text.StringBuilder();
147+
if (!string.IsNullOrEmpty(_baseUrl)) urlBuilder_.Append(_baseUrl);
148+
// Operation Path: "CreatePerson"
149+
urlBuilder_.Append("CreatePerson");
150+
151+
PrepareRequest(client_, request_, urlBuilder_);
152+
153+
var url_ = urlBuilder_.ToString();
154+
request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute);
155+
156+
PrepareRequest(client_, request_, url_);
157+
158+
var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
159+
var disposeResponse_ = true;
160+
try
161+
{
162+
var headers_ = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>>();
163+
foreach (var item_ in response_.Headers)
164+
headers_[item_.Key] = item_.Value;
165+
if (response_.Content != null && response_.Content.Headers != null)
166+
{
167+
foreach (var item_ in response_.Content.Headers)
168+
headers_[item_.Key] = item_.Value;
169+
}
170+
171+
ProcessResponse(client_, response_);
172+
173+
var status_ = (int)response_.StatusCode;
174+
if (status_ == 200)
175+
{
176+
return;
177+
}
178+
else
179+
{
180+
var responseData_ = response_.Content == null ? null : await ReadAsStringAsync(response_.Content, cancellationToken).ConfigureAwait(false);
181+
throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null);
182+
}
183+
}
184+
finally
185+
{
186+
if (disposeResponse_)
187+
response_.Dispose();
188+
}
189+
}
190+
}
191+
finally
192+
{
193+
if (disposeClient_)
194+
client_.Dispose();
195+
}
196+
}
197+
127198
protected struct ObjectResponseResult<T>
128199
{
129200
public ObjectResponseResult(T responseObject, string responseText)

0 commit comments

Comments
 (0)