-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
JsonSerializationTests.cs
51 lines (38 loc) · 1.82 KB
/
JsonSerializationTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
namespace FluentValidation.Tests;
using System.Text.Json;
using Results;
using Xunit;
public class JsonSerializationTests {
[Fact]
public void SystemTextJson_deserialization_should_be_consistent_with_newtonsoft() {
var validationResult = new ValidationResult {
Errors = {
new ValidationFailure("MyProperty1", "Invalid MyProperty1"),
new ValidationFailure("MyProperty2", "Invalid MyProperty2"),
},
RuleSetsExecuted = new[] { "Test1" }
};
// System.Text.Json
var serialized1 = JsonSerializer.Serialize(validationResult);
var deserialized1 = JsonSerializer.Deserialize<ValidationResult>(serialized1);
// Newtonsoft.Json
var serialized2 = Newtonsoft.Json.JsonConvert.SerializeObject(validationResult);
var deserialized2 = Newtonsoft.Json.JsonConvert.DeserializeObject<ValidationResult>(serialized2);
deserialized1.IsValid.ShouldBeFalse();
deserialized2.IsValid.ShouldBeFalse();
deserialized1.Errors.Count.ShouldEqual(2);
deserialized2.Errors.Count.ShouldEqual(2);
deserialized1.Errors[0].PropertyName.ShouldEqual("MyProperty1");
deserialized2.Errors[0].PropertyName.ShouldEqual("MyProperty1");
deserialized1.Errors[1].PropertyName.ShouldEqual("MyProperty2");
deserialized2.Errors[1].PropertyName.ShouldEqual("MyProperty2");
deserialized1.Errors[0].ErrorMessage.ShouldEqual("Invalid MyProperty1");
deserialized2.Errors[0].ErrorMessage.ShouldEqual("Invalid MyProperty1");
deserialized1.Errors[1].ErrorMessage.ShouldEqual("Invalid MyProperty2");
deserialized2.Errors[1].ErrorMessage.ShouldEqual("Invalid MyProperty2");
deserialized1.RuleSetsExecuted.Length.ShouldEqual(1);
deserialized2.RuleSetsExecuted.Length.ShouldEqual(1);
deserialized1.RuleSetsExecuted[0].ShouldEqual("Test1");
deserialized2.RuleSetsExecuted[0].ShouldEqual("Test1");
}
}