Skip to content

Commit bcc2529

Browse files
committed
Clean up tests
1 parent 0d91665 commit bcc2529

File tree

3 files changed

+79
-48
lines changed

3 files changed

+79
-48
lines changed

src/Http/Http.Abstractions/test/ValidatableInfoResolverTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
using Microsoft.Extensions.DependencyInjection;
88
using Moq;
99

10-
namespace Microsoft.AspNetCore.Http.Tests;
10+
namespace Microsoft.AspNetCore.Http.Validation.Tests;
1111

1212
public class ValidatableInfoResolverTests
1313
{

src/Http/Http.Abstractions/test/ValidatableParameterInfoTests.cs

Lines changed: 21 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,11 @@
11
// Licensed to the .NET Foundation under one or more agreements.
22
// The .NET Foundation licenses this file to you under the MIT license.
33

4-
using System;
5-
using System.Collections.Generic;
64
using System.ComponentModel.DataAnnotations;
7-
using System.Linq;
85
using System.Reflection;
9-
using System.Threading.Tasks;
106
using Microsoft.Extensions.DependencyInjection;
11-
using Moq;
12-
using Xunit;
137

14-
namespace Microsoft.AspNetCore.Http.Validation;
8+
namespace Microsoft.AspNetCore.Http.Validation.Tests;
159

1610
public class ValidatableParameterInfoTests
1711
{
@@ -36,9 +30,9 @@ public async Task Validate_RequiredParameter_AddsErrorWhenNull()
3630
// Assert
3731
var errors = context.ValidationErrors;
3832
Assert.NotNull(errors);
39-
Assert.Single(errors);
40-
Assert.True(errors.ContainsKey("testParam"));
41-
Assert.Contains("is required", errors["testParam"][0], StringComparison.OrdinalIgnoreCase);
33+
var error = Assert.Single(errors);
34+
Assert.Equal("testParam", error.Key);
35+
Assert.Equal("The Test Parameter field is required.", error.Value.First());
4236
}
4337

4438
[Fact]
@@ -85,9 +79,9 @@ public async Task Validate_WithRangeAttribute_ValidatesCorrectly()
8579
// Assert
8680
var errors = context.ValidationErrors;
8781
Assert.NotNull(errors);
88-
Assert.Single(errors);
89-
Assert.True(errors.ContainsKey("testParam"));
90-
Assert.Contains("must be between 10 and 100", errors["testParam"][0], StringComparison.OrdinalIgnoreCase);
82+
var error = Assert.Single(errors);
83+
Assert.Equal("testParam", error.Key);
84+
Assert.Equal("The field Test Parameter must be between 10 and 100.", error.Value.First());
9185
}
9286

9387
[Fact]
@@ -111,11 +105,10 @@ public async Task Validate_WithDisplayNameAttribute_UsesDisplayNameInErrorMessag
111105
// Assert
112106
var errors = context.ValidationErrors;
113107
Assert.NotNull(errors);
114-
Assert.Single(errors);
115-
Assert.True(errors.ContainsKey("testParam"));
116-
108+
var error = Assert.Single(errors);
109+
Assert.Equal("testParam", error.Key);
117110
// The error message should use the display name
118-
Assert.Contains("Custom Display Name", errors["testParam"][0], StringComparison.OrdinalIgnoreCase);
111+
Assert.Equal("The Custom Display Name field is required.", error.Value.First());
119112
}
120113

121114
[Fact]
@@ -243,11 +236,11 @@ public async Task Validate_MultipleErrorsOnSameParameter_CollectsAllErrors()
243236
// Assert
244237
var errors = context.ValidationErrors;
245238
Assert.NotNull(errors);
246-
Assert.Single(errors);
247-
Assert.True(errors.ContainsKey("testParam"));
248-
Assert.Equal(2, errors["testParam"].Length);
249-
Assert.Contains("Range error", errors["testParam"]);
250-
Assert.Contains("Custom error", errors["testParam"]);
239+
var error = Assert.Single(errors);
240+
Assert.Equal("testParam", error.Key);
241+
Assert.Collection(error.Value,
242+
e => Assert.Equal("Range error", e),
243+
e => Assert.Equal("Custom error", e));
251244
}
252245

253246
[Fact]
@@ -272,8 +265,9 @@ public async Task Validate_WithContextPrefix_AddsErrorsWithCorrectPrefix()
272265
// Assert
273266
var errors = context.ValidationErrors;
274267
Assert.NotNull(errors);
275-
Assert.Single(errors);
276-
Assert.True(errors.ContainsKey("parent.testParam"));
268+
var error = Assert.Single(errors);
269+
Assert.Equal("parent.testParam", error.Key);
270+
Assert.Equal("The field Test Parameter must be between 10 and 100.", error.Value.First());
277271
}
278272

279273
[Fact]
@@ -297,13 +291,11 @@ public async Task Validate_ExceptionDuringValidation_CapturesExceptionAsError()
297291
// Assert
298292
var errors = context.ValidationErrors;
299293
Assert.NotNull(errors);
300-
Assert.Single(errors);
301-
Assert.True(errors.ContainsKey("testParam"));
302-
Assert.Contains("Test exception", errors["testParam"][0]);
294+
var error = Assert.Single(errors);
295+
Assert.Equal("testParam", error.Key);
296+
Assert.Equal("Test exception", error.Value.First());
303297
}
304298

305-
// Helper methods and test classes
306-
307299
private TestValidatableParameterInfo CreateTestParameterInfo(
308300
string name,
309301
string displayName,

src/Http/Http.Abstractions/test/ValidatableTypeInfoTests.cs

Lines changed: 57 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using System.ComponentModel.DataAnnotations;
5-
using Microsoft.AspNetCore.Http.Validation;
6-
using System.Collections.Generic;
75
using System.Reflection;
86

9-
namespace Microsoft.AspNetCore.Http.Tests;
7+
namespace Microsoft.AspNetCore.Http.Validation.Tests;
108

119
public class ValidatableTypeInfoTests
1210
{
@@ -61,11 +59,27 @@ [new RequiredAttribute()])
6159

6260
// Assert
6361
Assert.NotNull(context.ValidationErrors);
64-
Assert.Equal(4, context.ValidationErrors.Count);
65-
Assert.Contains("Name", context.ValidationErrors.Keys);
66-
Assert.Contains("Age", context.ValidationErrors.Keys);
67-
Assert.Contains("Address.Street", context.ValidationErrors.Keys);
68-
Assert.Contains("Address.City", context.ValidationErrors.Keys);
62+
Assert.Collection(context.ValidationErrors,
63+
kvp =>
64+
{
65+
Assert.Equal("Name", kvp.Key);
66+
Assert.Equal("The Name field is required.", kvp.Value.First());
67+
},
68+
kvp =>
69+
{
70+
Assert.Equal("Age", kvp.Key);
71+
Assert.Equal("The field Age must be between 0 and 120.", kvp.Value.First());
72+
},
73+
kvp =>
74+
{
75+
Assert.Equal("Address.Street", kvp.Key);
76+
Assert.Equal("The Street field is required.", kvp.Value.First());
77+
},
78+
kvp =>
79+
{
80+
Assert.Equal("Address.City", kvp.Key);
81+
Assert.Equal("The City field is required.", kvp.Value.First());
82+
});
6983
}
7084

7185
[Fact]
@@ -106,8 +120,9 @@ [new RequiredAttribute()]),
106120

107121
// Assert
108122
Assert.NotNull(context.ValidationErrors);
109-
Assert.Contains("Salary", context.ValidationErrors.Keys);
110-
Assert.Equal("Salary must be a positive value.", context.ValidationErrors["Salary"].First());
123+
var error = Assert.Single(context.ValidationErrors);
124+
Assert.Equal("Salary", error.Key);
125+
Assert.Equal("Salary must be a positive value.", error.Value.First());
111126
}
112127

113128
[Fact]
@@ -156,10 +171,22 @@ [new RangeAttribute(2, 5)])
156171

157172
// Assert
158173
Assert.NotNull(context.ValidationErrors);
159-
Assert.Equal(3, context.ValidationErrors.Count);
160-
Assert.Contains("Make", context.ValidationErrors.Keys);
161-
Assert.Contains("Model", context.ValidationErrors.Keys);
162-
Assert.Contains("Doors", context.ValidationErrors.Keys);
174+
Assert.Collection(context.ValidationErrors,
175+
kvp =>
176+
{
177+
Assert.Equal("Doors", kvp.Key);
178+
Assert.Equal("The field Doors must be between 2 and 5.", kvp.Value.First());
179+
},
180+
kvp =>
181+
{
182+
Assert.Equal("Make", kvp.Key);
183+
Assert.Equal("The Make field is required.", kvp.Value.First());
184+
},
185+
kvp =>
186+
{
187+
Assert.Equal("Model", kvp.Key);
188+
Assert.Equal("The Model field is required.", kvp.Value.First());
189+
});
163190
}
164191

165192
[Fact]
@@ -214,10 +241,22 @@ [new RequiredAttribute()]),
214241

215242
// Assert
216243
Assert.NotNull(context.ValidationErrors);
217-
Assert.Equal(3, context.ValidationErrors.Count);
218-
Assert.Contains("Items[1].ProductName", context.ValidationErrors.Keys);
219-
Assert.Contains("Items[1].Quantity", context.ValidationErrors.Keys);
220-
Assert.Contains("Items[2].Quantity", context.ValidationErrors.Keys);
244+
Assert.Collection(context.ValidationErrors,
245+
kvp =>
246+
{
247+
Assert.Equal("Items[1].ProductName", kvp.Key);
248+
Assert.Equal("The ProductName field is required.", kvp.Value.First());
249+
},
250+
kvp =>
251+
{
252+
Assert.Equal("Items[1].Quantity", kvp.Key);
253+
Assert.Equal("The field Quantity must be between 1 and 100.", kvp.Value.First());
254+
},
255+
kvp =>
256+
{
257+
Assert.Equal("Items[2].Quantity", kvp.Key);
258+
Assert.Equal("The field Quantity must be between 1 and 100.", kvp.Value.First());
259+
});
221260
}
222261

223262
[Fact]

0 commit comments

Comments
 (0)