Skip to content

Commit 39acabb

Browse files
author
James Blair
committed
Add unit tests for Result factory methods.
1 parent e98c8cc commit 39acabb

File tree

1 file changed

+170
-0
lines changed

1 file changed

+170
-0
lines changed
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
using F23.Kernel.Results;
2+
3+
namespace F23.Kernel.Tests;
4+
5+
public class ResultFactoryMethodTests
6+
{
7+
[Fact]
8+
public void Success_ReturnsSuccessResult()
9+
{
10+
// Act
11+
var result = Result.Success();
12+
13+
// Assert
14+
Assert.IsType<SuccessResult>(result);
15+
}
16+
17+
[Fact]
18+
public void SuccessT_ReturnsSuccessResult()
19+
{
20+
// Arrange
21+
var value = new TestResultContent();
22+
23+
// Act
24+
var result = Result<TestResultContent>.Success(value);
25+
26+
// Assert
27+
var successResult = Assert.IsType<SuccessResult<TestResultContent>>(result);
28+
Assert.Equal(value, successResult.Value);
29+
}
30+
31+
[Fact]
32+
public void Aggregate_ReturnsAggregateResult()
33+
{
34+
// Arrange
35+
var results = new List<Result> { Result.Success(), Result.Success() };
36+
37+
// Act
38+
var result = Result.Aggregate(results);
39+
40+
// Assert
41+
var aggregateResult = Assert.IsType<AggregateResult>(result);
42+
Assert.Equal(results, aggregateResult.Results);
43+
}
44+
45+
[Fact]
46+
public void Unauthorized_ReturnsUnauthorizedResult()
47+
{
48+
// Arrange
49+
const string message = "YOU SHALL NOT PASS";
50+
51+
// Act
52+
var result = Result.Unauthorized(message);
53+
54+
// Assert
55+
var unauthorizedResult = Assert.IsType<UnauthorizedResult>(result);
56+
Assert.Equal(message, unauthorizedResult.Message);
57+
}
58+
59+
[Fact]
60+
public void UnauthorizedT_ReturnsUnauthorizedResult()
61+
{
62+
// Arrange
63+
const string message = "YOU SHALL NOT PASS";
64+
65+
// Act
66+
var result = Result<TestResultContent>.Unauthorized(message);
67+
68+
// Assert
69+
var unauthorizedResult = Assert.IsType<UnauthorizedResult<TestResultContent>>(result);
70+
Assert.Equal(message, unauthorizedResult.Message);
71+
}
72+
73+
[Fact]
74+
public void ValidationFailed_ReturnsValidationFailedResult()
75+
{
76+
// Arrange
77+
var errors = new List<ValidationError> { new("key", "message") };
78+
79+
// Act
80+
var result = Result.ValidationFailed(errors);
81+
82+
// Assert
83+
var validationFailedResult = Assert.IsType<ValidationFailedResult>(result);
84+
Assert.Equal(errors, validationFailedResult.Errors);
85+
}
86+
87+
[Fact]
88+
public void ValidationFailedT_ReturnsValidationFailedResult()
89+
{
90+
// Arrange
91+
var errors = new List<ValidationError> { new("key", "message") };
92+
93+
// Act
94+
var result = Result<TestResultContent>.ValidationFailed(errors);
95+
96+
// Assert
97+
var validationFailedResult = Assert.IsType<ValidationFailedResult<TestResultContent>>(result);
98+
Assert.Equal(errors, validationFailedResult.Errors);
99+
}
100+
101+
[Fact]
102+
public void ValidationFailed_SingleError_ReturnsValidationFailedResult()
103+
{
104+
// Arrange
105+
const string key = "key";
106+
const string message = "message";
107+
108+
// Act
109+
var result = Result.ValidationFailed(key, message);
110+
111+
// Assert
112+
var validationFailedResult = Assert.IsType<ValidationFailedResult>(result);
113+
var error = Assert.Single(validationFailedResult.Errors);
114+
Assert.Equal(key, error.Key);
115+
Assert.Equal(message, error.Message);
116+
}
117+
118+
[Fact]
119+
public void ValidationFailedT_SingleError_ReturnsValidationFailedResult()
120+
{
121+
// Arrange
122+
const string key = "key";
123+
const string message = "message";
124+
125+
// Act
126+
var result = Result<TestResultContent>.ValidationFailed(key, message);
127+
128+
// Assert
129+
var validationFailedResult = Assert.IsType<ValidationFailedResult<TestResultContent>>(result);
130+
var error = Assert.Single(validationFailedResult.Errors);
131+
Assert.Equal(key, error.Key);
132+
Assert.Equal(message, error.Message);
133+
}
134+
135+
[Fact]
136+
public void PreconditionFailed_ReturnsPreconditionFailedResult()
137+
{
138+
// Arrange
139+
const PreconditionFailedReason reason = PreconditionFailedReason.Conflict;
140+
const string message = "Precondition failed";
141+
142+
// Act
143+
var result = Result.PreconditionFailed(reason, message);
144+
145+
// Assert
146+
var preconditionFailedResult = Assert.IsType<PreconditionFailedResult>(result);
147+
Assert.Equal(reason, preconditionFailedResult.Reason);
148+
Assert.Equal(message, preconditionFailedResult.Message);
149+
}
150+
151+
[Fact]
152+
public void PreconditionFailedT_ReturnsPreconditionFailedResult()
153+
{
154+
// Arrange
155+
const PreconditionFailedReason reason = PreconditionFailedReason.Conflict;
156+
const string message = "Precondition failed";
157+
158+
// Act
159+
var result = Result<TestResultContent>.PreconditionFailed(reason, message);
160+
161+
// Assert
162+
var preconditionFailedResult = Assert.IsType<PreconditionFailedResult<TestResultContent>>(result);
163+
Assert.Equal(reason, preconditionFailedResult.Reason);
164+
Assert.Equal(message, preconditionFailedResult.Message);
165+
}
166+
167+
// TODO.JB - test mapping methods
168+
169+
private class TestResultContent;
170+
}

0 commit comments

Comments
 (0)