-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathOperationErrorTests.cs
115 lines (102 loc) · 4.29 KB
/
OperationErrorTests.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
using System.ComponentModel.DataAnnotations;
namespace Deveel
{
public static class OperationErrorTests
{
[Fact]
public static void OperationError_NoDetails()
{
var error = new OperationError("err.1", "biz");
Assert.Equal("err.1", error.Code);
Assert.Equal("biz", error.Domain);
Assert.Null(error.Message);
Assert.Null(error.InnerError);
}
[Fact]
public static void OperationError_WithMessage()
{
var error = new OperationError("err.1", "biz", "An error occurred");
Assert.Equal("err.1", error.Code);
Assert.Equal("biz", error.Domain);
Assert.Equal("An error occurred", error.Message);
Assert.Null(error.InnerError);
}
[Fact]
public static void OperationError_WithInner()
{
var inner = new OperationError("err.2", "biz");
var error = new OperationError("err.1", "biz", innerError: inner);
Assert.Equal("err.1", error.Code);
Assert.Equal("biz", error.Domain);
Assert.Null(error.Message);
Assert.NotNull(error.InnerError);
Assert.Equal("err.2", error.InnerError.Code);
Assert.Equal("biz", error.InnerError.Domain);
}
[Fact]
public static void OperationError_WithMessageAndInner()
{
var inner = new OperationError("err.2", "biz");
var error = new OperationError("err.1", "biz", "An error occurred", innerError: inner);
Assert.Equal("err.1", error.Code);
Assert.Equal("biz", error.Domain);
Assert.Equal("An error occurred", error.Message);
Assert.NotNull(error.InnerError);
Assert.Equal("err.2", error.InnerError.Code);
Assert.Equal("biz", error.InnerError.Domain);
}
[Fact]
public static void OperationError_WithNullCode()
{
Assert.Throws<ArgumentNullException>(() => new OperationError(null, "biz"));
}
[Fact]
public static void OperationError_WithNullDomain()
{
Assert.Throws<ArgumentNullException>(() => new OperationError("err.1", null));
}
[Fact]
public static void OperationException_NoDetails()
{
var exception = new OperationException("err.1", "biz", "An error occurred");
Assert.Equal("err.1", exception.ErrorCode);
Assert.Equal("biz", exception.ErrorDomain);
Assert.Equal("An error occurred", exception.Message);
Assert.Null(exception.InnerException);
}
[Fact]
public static void OperationException_WithMessage()
{
var exception = new OperationException("err.1", "biz", "An error has occurred");
Assert.Equal("err.1", exception.ErrorCode);
Assert.Equal("biz", exception.ErrorDomain);
Assert.Equal( "An error has occurred", exception.Message);
Assert.Null(exception.InnerException);
}
[Fact]
public static void OperationException_WithMessageAndInner()
{
var inner = new OperationException("err.2", "biz");
var exception = new OperationException("err.1", "biz", "An error has occurred", inner);
Assert.Equal("err.1", exception.ErrorCode);
Assert.Equal("biz", exception.ErrorDomain);
Assert.Equal("An error has occurred", exception.Message);
Assert.NotNull(exception.InnerException);
var innerError = Assert.IsAssignableFrom<IOperationError>(exception.InnerException);
Assert.Equal("err.2", innerError.Code);
Assert.Equal("biz", innerError.Domain);
}
[Fact]
public static void ValidationError_WithResults()
{
var results = new[] {
new ValidationResult("First error of the validation", new []{ "Member1" }),
new ValidationResult("Second error of the validation", new []{"Member2"})
};
var error = new OperationValidationError("err.1", "biz", results);
Assert.Equal("err.1", error.Code);
Assert.Equal("biz", error.Domain);
Assert.Same(results, error.ValidationResults);
}
}
}