Skip to content

Commit fcfcdd6

Browse files
Apply IDE refactoring suggestions
Cherry-pick code refactoring/modernisation from #3252.
1 parent bafd6d6 commit fcfcdd6

File tree

34 files changed

+694
-686
lines changed

34 files changed

+694
-686
lines changed

src/Swashbuckle.AspNetCore.Annotations/AnnotationsOperationFilter.cs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ public class AnnotationsOperationFilter : IOperationFilter
1010
{
1111
public void Apply(OpenApiOperation operation, OperationFilterContext context)
1212
{
13-
IEnumerable<object> controllerAttributes = Array.Empty<object>();
14-
IEnumerable<object> actionAttributes = Array.Empty<object>();
15-
IEnumerable<object> metadataAttributes = Array.Empty<object>();
13+
IEnumerable<object> controllerAttributes = [];
14+
IEnumerable<object> actionAttributes = [];
15+
IEnumerable<object> metadataAttributes = [];
1616

1717
if (context.MethodInfo != null)
1818
{
@@ -86,7 +86,7 @@ public static void ApplySwaggerOperationFilterAttributes(
8686
}
8787
}
8888

89-
private void ApplySwaggerResponseAttributes(
89+
private static void ApplySwaggerResponseAttributes(
9090
OpenApiOperation operation,
9191
OperationFilterContext context,
9292
IEnumerable<object> controllerAndActionAttributes)
@@ -97,10 +97,7 @@ private void ApplySwaggerResponseAttributes(
9797
{
9898
var statusCode = swaggerResponseAttribute.StatusCode.ToString();
9999

100-
if (operation.Responses == null)
101-
{
102-
operation.Responses = new OpenApiResponses();
103-
}
100+
operation.Responses ??= [];
104101

105102
if (!operation.Responses.TryGetValue(statusCode, out OpenApiResponse response))
106103
{

src/Swashbuckle.AspNetCore.ApiTesting/ApiTestRunnerOptionsExtensions.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
1-
using Microsoft.OpenApi.Models;
2-
using Microsoft.OpenApi.Readers;
3-
using System;
1+
using System;
42
using System.IO;
3+
using Microsoft.OpenApi.Models;
4+
using Microsoft.OpenApi.Readers;
55

66
namespace Swashbuckle.AspNetCore.ApiTesting
77
{
88
public static class ApiTestRunnerOptionsExtensions
99
{
1010
public static void AddOpenApiFile(this ApiTestRunnerOptions options, string documentName, string filePath)
1111
{
12-
using (var fileStream = File.OpenRead(filePath))
13-
{
14-
var openApiDocument = new OpenApiStreamReader().Read(fileStream, out OpenApiDiagnostic diagnostic);
15-
options.OpenApiDocs.Add(documentName, openApiDocument);
16-
}
12+
using var fileStream = File.OpenRead(filePath);
13+
14+
var openApiDocument = new OpenApiStreamReader().Read(fileStream, out var diagnostic);
15+
options.OpenApiDocs.Add(documentName, openApiDocument);
1716
}
1817

1918
public static OpenApiDocument GetOpenApiDocument(this ApiTestRunnerOptions options, string documentName)
2019
{
2120
if (!options.OpenApiDocs.TryGetValue(documentName, out OpenApiDocument document))
21+
{
2222
throw new InvalidOperationException($"Document with name '{documentName}' not found");
23+
}
2324

2425
return document;
2526
}

src/Swashbuckle.AspNetCore.ApiTesting/JsonContentValidator.cs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,22 @@ namespace Swashbuckle.AspNetCore.ApiTesting
88
{
99
public class JsonContentValidator : IContentValidator
1010
{
11-
private readonly JsonValidator _jsonValidator;
11+
private readonly JsonValidator _jsonValidator = new();
1212

13-
public JsonContentValidator()
14-
{
15-
_jsonValidator = new JsonValidator();
16-
}
17-
18-
public bool CanValidate(string mediaType)
19-
{
20-
return mediaType.Contains("json");
21-
}
13+
public bool CanValidate(string mediaType) => mediaType.Contains("json");
2214

2315
public void Validate(OpenApiMediaType mediaTypeSpec, OpenApiDocument openApiDocument, HttpContent content)
2416
{
25-
if (mediaTypeSpec?.Schema == null) return;
17+
if (mediaTypeSpec?.Schema == null)
18+
{
19+
return;
20+
}
2621

2722
var instance = JToken.Parse(content.ReadAsStringAsync().Result);
2823
if (!_jsonValidator.Validate(mediaTypeSpec.Schema, openApiDocument, instance, out IEnumerable<string> errorMessages))
24+
{
2925
throw new ContentDoesNotMatchSpecException(string.Join(Environment.NewLine, errorMessages));
26+
}
3027
}
3128
}
3229
}

src/Swashbuckle.AspNetCore.ApiTesting/JsonValidation/JsonAllOfValidator.cs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,9 @@
55

66
namespace Swashbuckle.AspNetCore.ApiTesting
77
{
8-
public class JsonAllOfValidator : IJsonValidator
8+
public class JsonAllOfValidator(JsonValidator jsonValidator) : IJsonValidator
99
{
10-
private JsonValidator _jsonValidator;
11-
12-
public JsonAllOfValidator(JsonValidator jsonValidator)
13-
{
14-
_jsonValidator = jsonValidator;
15-
}
10+
private JsonValidator _jsonValidator = jsonValidator;
1611

1712
public bool CanValidate(OpenApiSchema schema) => schema.AllOf != null && schema.AllOf.Any();
1813

@@ -26,14 +21,16 @@ public bool Validate(
2621

2722
var allOfArray = schema.AllOf.ToArray();
2823

29-
for (int i=0;i<allOfArray.Length;i++)
24+
for (int i = 0; i < allOfArray.Length; i++)
3025
{
3126
if (!_jsonValidator.Validate(allOfArray[i], openApiDocument, instance, out IEnumerable<string> subErrorMessages))
27+
{
3228
errorMessagesList.AddRange(subErrorMessages.Select(msg => $"{msg} (allOf[{i}])"));
29+
}
3330
}
3431

3532
errorMessages = errorMessagesList;
3633
return !errorMessages.Any();
3734
}
3835
}
39-
}
36+
}
Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
1-
using System.Linq;
21
using System.Collections.Generic;
2+
using System.Linq;
33
using Microsoft.OpenApi.Models;
44
using Newtonsoft.Json.Linq;
55

66
namespace Swashbuckle.AspNetCore.ApiTesting
77
{
8-
public class JsonAnyOfValidator : IJsonValidator
8+
public class JsonAnyOfValidator(JsonValidator jsonValidator) : IJsonValidator
99
{
10-
private JsonValidator _jsonValidator;
11-
12-
public JsonAnyOfValidator(JsonValidator jsonValidator)
13-
{
14-
_jsonValidator = jsonValidator;
15-
}
10+
private JsonValidator _jsonValidator = jsonValidator;
1611

1712
public bool CanValidate(OpenApiSchema schema) => schema.AnyOf != null && schema.AnyOf.Any();
1813

@@ -26,11 +21,11 @@ public bool Validate(
2621

2722
var anyOfArray = schema.AnyOf.ToArray();
2823

29-
for (int i=0;i<anyOfArray.Length;i++)
24+
for (int i = 0; i < anyOfArray.Length; i++)
3025
{
3126
if (_jsonValidator.Validate(anyOfArray[i], openApiDocument, instance, out IEnumerable<string> subErrorMessages))
3227
{
33-
errorMessages = Enumerable.Empty<string>();
28+
errorMessages = [];
3429
return true;
3530
}
3631

@@ -41,4 +36,4 @@ public bool Validate(
4136
return !errorMessages.Any();
4237
}
4338
}
44-
}
39+
}
Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
1-
using System;
2-
using System.Linq;
31
using System.Collections.Generic;
2+
using System.Linq;
43
using Microsoft.OpenApi.Models;
54
using Newtonsoft.Json.Linq;
65

76
namespace Swashbuckle.AspNetCore.ApiTesting
87
{
9-
public class JsonArrayValidator : IJsonValidator
8+
public class JsonArrayValidator(IJsonValidator jsonValidator) : IJsonValidator
109
{
11-
private readonly IJsonValidator _jsonValidator;
12-
13-
public JsonArrayValidator(IJsonValidator jsonValidator)
14-
{
15-
_jsonValidator = jsonValidator;
16-
}
10+
private readonly IJsonValidator _jsonValidator = jsonValidator;
1711

1812
public bool CanValidate(OpenApiSchema schema) => schema.Type == "array";
1913

@@ -25,7 +19,7 @@ public bool Validate(
2519
{
2620
if (instance.Type != JTokenType.Array)
2721
{
28-
errorMessages = new[] { $"Path: {instance.Path}. Instance is not of type 'array'" };
22+
errorMessages = [$"Path: {instance.Path}. Instance is not of type 'array'"];
2923
return false;
3024
}
3125

@@ -38,24 +32,32 @@ public bool Validate(
3832
foreach (var itemInstance in arrayInstance)
3933
{
4034
if (!_jsonValidator.Validate(schema.Items, openApiDocument, itemInstance, out IEnumerable<string> itemErrorMessages))
35+
{
4136
errorMessagesList.AddRange(itemErrorMessages);
37+
}
4238
}
4339
}
4440

4541
// maxItems
46-
if (schema.MaxItems.HasValue && (arrayInstance.Count() > schema.MaxItems.Value))
42+
if (schema.MaxItems.HasValue && (arrayInstance.Count > schema.MaxItems.Value))
43+
{
4744
errorMessagesList.Add($"Path: {instance.Path}. Array size is greater than maxItems");
45+
}
4846

4947
// minItems
50-
if (schema.MinItems.HasValue && (arrayInstance.Count() < schema.MinItems.Value))
48+
if (schema.MinItems.HasValue && (arrayInstance.Count < schema.MinItems.Value))
49+
{
5150
errorMessagesList.Add($"Path: {instance.Path}. Array size is less than minItems");
51+
}
5252

5353
// uniqueItems
54-
if (schema.UniqueItems.HasValue && (arrayInstance.Count() != arrayInstance.Distinct().Count()))
54+
if (schema.UniqueItems.HasValue && (arrayInstance.Count != arrayInstance.Distinct().Count()))
55+
{
5556
errorMessagesList.Add($"Path: {instance.Path}. Array does not contain uniqueItems");
57+
}
5658

5759
errorMessages = errorMessagesList;
5860
return !errorMessages.Any();
5961
}
6062
}
61-
}
63+
}

src/Swashbuckle.AspNetCore.ApiTesting/JsonValidation/JsonBooleanValidator.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System.Collections.Generic;
2-
using System.Linq;
32
using Microsoft.OpenApi.Models;
43
using Newtonsoft.Json.Linq;
54

@@ -17,12 +16,12 @@ public bool Validate(
1716
{
1817
if (instance.Type != JTokenType.Boolean)
1918
{
20-
errorMessages = new[] { $"Path: {instance.Path}. Instance is not of type 'boolean'" };
19+
errorMessages = [$"Path: {instance.Path}. Instance is not of type 'boolean'"];
2120
return false;
2221
}
2322

24-
errorMessages = Enumerable.Empty<string>();
23+
errorMessages = [];
2524
return true;
2625
}
2726
}
28-
}
27+
}

src/Swashbuckle.AspNetCore.ApiTesting/JsonValidation/JsonNullValidator.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System.Collections.Generic;
2-
using System.Linq;
32
using Microsoft.OpenApi.Models;
43
using Newtonsoft.Json.Linq;
54

@@ -17,12 +16,12 @@ public bool Validate(
1716
{
1817
if (instance.Type != JTokenType.Null)
1918
{
20-
errorMessages = new[] { $"Path: {instance.Path}. Instance is not of type 'null'" };
19+
errorMessages = [$"Path: {instance.Path}. Instance is not of type 'null'"];
2120
return false;
2221
}
2322

24-
errorMessages = Enumerable.Empty<string>();
23+
errorMessages = [];
2524
return true;
2625
}
2726
}
28-
}
27+
}

src/Swashbuckle.AspNetCore.ApiTesting/JsonValidation/JsonNumberValidator.cs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
using System.Linq;
21
using System.Collections.Generic;
2+
using System.Linq;
33
using Microsoft.OpenApi.Models;
44
using Newtonsoft.Json.Linq;
55

@@ -15,9 +15,9 @@ public bool Validate(
1515
JToken instance,
1616
out IEnumerable<string> errorMessages)
1717
{
18-
if (!new[] { JTokenType.Float, JTokenType.Integer }.Contains(instance.Type))
18+
if (instance.Type is not JTokenType.Float and not JTokenType.Integer)
1919
{
20-
errorMessages = new[] { $"Path: {instance.Path}. Instance is not of type 'number'" };
20+
errorMessages = [$"Path: {instance.Path}. Instance is not of type 'number'"];
2121
return false;
2222
}
2323

@@ -26,32 +26,42 @@ public bool Validate(
2626

2727
// multipleOf
2828
if (schema.MultipleOf.HasValue && ((numberValue % schema.MultipleOf.Value) != 0))
29+
{
2930
errorMessagesList.Add($"Path: {instance.Path}. Number is not evenly divisible by multipleOf");
31+
}
3032

3133
// maximum & exclusiveMaximum
3234
if (schema.Maximum.HasValue)
3335
{
34-
var exclusiveMaximum = schema.ExclusiveMaximum.HasValue ? schema.ExclusiveMaximum.Value : false;
36+
var exclusiveMaximum = schema.ExclusiveMaximum ?? false;
3537

3638
if (exclusiveMaximum && (numberValue >= schema.Maximum.Value))
39+
{
3740
errorMessagesList.Add($"Path: {instance.Path}. Number is greater than, or equal to, maximum");
41+
}
3842
else if (numberValue > schema.Maximum.Value)
43+
{
3944
errorMessagesList.Add($"Path: {instance.Path}. Number is greater than maximum");
45+
}
4046
}
4147

4248
// minimum & exclusiveMinimum
4349
if (schema.Minimum.HasValue)
4450
{
45-
var exclusiveMinimum = schema.ExclusiveMinimum.HasValue ? schema.ExclusiveMinimum.Value : false;
51+
var exclusiveMinimum = schema.ExclusiveMinimum ?? false;
4652

4753
if (exclusiveMinimum && (numberValue <= schema.Minimum.Value))
54+
{
4855
errorMessagesList.Add($"Path: {instance.Path}. Number is less than, or equal to, minimum");
56+
}
4957
else if (numberValue < schema.Minimum.Value)
58+
{
5059
errorMessagesList.Add($"Path: {instance.Path}. Number is less than minimum");
60+
}
5161
}
5262

5363
errorMessages = errorMessagesList;
5464
return !errorMessages.Any();
5565
}
5666
}
57-
}
67+
}

0 commit comments

Comments
 (0)