made Error fully immutable
All checks were successful
.NET Test / test (push) Successful in 4m16s

This commit is contained in:
2023-12-12 18:55:53 +04:00
parent bb8c2135b5
commit 9ae185342b
2 changed files with 33 additions and 37 deletions

View File

@@ -1,3 +1,5 @@
using System.Collections.Immutable;
namespace Railway.Tests.Errors;
public class Serialization
@@ -8,9 +10,8 @@ public class Serialization
// Given
Error many_errors = new ManyErrors(new Error[]{
new ExpectedError("err1", "msg1"){
ExtensionData = {
["ext"] = "ext_value"
}
ExtensionData = ImmutableDictionary<string, string>.Empty
.Add("ext", "ext_value"),
},
new ExceptionalError(new Exception("msg2")),
});
@@ -18,7 +19,7 @@ public class Serialization
var result = JsonSerializer.Serialize(many_errors);
// Then
Assert.Equal(
expected: "[{\"$$err\":0,\"Type\":\"err1\",\"Message\":\"msg1\",\"ext\":\"ext_value\"},{\"$$err\":1,\"Type\":\"Exception\",\"Message\":\"msg2\"}]",
expected: "[{\"$$err\":0,\"Type\":\"err1\",\"Message\":\"msg1\",\"ExtensionData\":{\"ext\":\"ext_value\"}},{\"$$err\":1,\"Type\":\"Exception\",\"Message\":\"msg2\"}]",
result);
}
@@ -26,7 +27,7 @@ public class Serialization
public void WhenDeserializingManyErrors()
{
// Given
var json = "[{\"$$err\":0,\"Type\":\"err1\",\"Message\":\"msg1\",\"ext\":\"ext_value\"},{\"$$err\":1,\"Type\":\"Exception\",\"Message\":\"msg2\"}]";
var json = "[{\"$$err\":0,\"Type\":\"err1\",\"Message\":\"msg1\",\"ExtensionData\":{\"ext1\":\"ext_value1\",\"ext2\":\"ext_value2\"}},{\"$$err\":1,\"Type\":\"Exception\",\"Message\":\"msg2\"}]";
// When
var result = JsonSerializer.Deserialize<Error[]>(json);
// Then
@@ -39,7 +40,10 @@ public class Serialization
result
);
Assert.Equal(
expected: "ext_value",
result[0].ExtensionData["ext"].ToString());
expected: "ext_value1",
result[0]["ext1"]);
Assert.Equal(
expected: "ext_value2",
result[0]["ext2"]);
}
}