forked from fluentassertions/fluentassertions.aspnetcore.mvc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathConvertToActionResultAssertions_Tests.cs
130 lines (102 loc) · 4.8 KB
/
ConvertToActionResultAssertions_Tests.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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
using FluentAssertions.Mvc.Tests.Helpers;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Infrastructure;
using Moq;
using System;
using Xunit;
namespace FluentAssertions.AspNetCore.Mvc.Tests
{
public class ConvertToActionResultAssertions_Tests
{
public const string Reason = FailureMessageHelper.Reason;
public readonly static object[] ReasonArgs = FailureMessageHelper.ReasonArgs;
[Fact]
public void BeActionResult_GivenActionResultOfTValue_ShouldPass()
{
var actionResult = new BadRequestResult();
IConvertToActionResult result = new ActionResult<object>(actionResult);
result.Should().BeActionResult<object>();
}
[Fact]
public void BeActionResult_GivenActionResultOfTValue_ShouldReturnActionResultAssertionsOfTValue()
{
var actionResult = new BadRequestResult();
IConvertToActionResult subject = new ActionResult<object>(actionResult);
var result = subject.Should().BeActionResult<object>();
Assert.IsType<ActionResultAssertions<object>>(result);
}
[Fact]
public void BeActionResult_GivenNull_ShouldFail()
{
IConvertToActionResult result = null;
var failureMessage = FailureMessageHelper.ExpectedContextTypeXButFoundNull(
"result", typeof(ActionResult<object>));
Action action = () => result.Should().BeActionResult<object>(Reason, ReasonArgs);
action.Should().Throw<Exception>()
.WithMessage(failureMessage);
}
[Fact]
public void BeActionResult_GivenUnexpectedTValue_ShouldFail()
{
var actionResult = new BadRequestResult();
IConvertToActionResult result = new ActionResult<string>(actionResult);
Action action = () => result.Should().BeActionResult<int>(Reason, ReasonArgs);
action.Should().Throw<Exception>()
.WithMessage("Expected result to be ActionResult<TValue> with type System.Int32 because it is 10 but was System.String.");
}
[Fact]
public void BeActionResult_GivenUnexpectedType_ShouldFail()
{
var mock = new Mock<IConvertToActionResult>();
var result = mock.Object;
var failureMessage = FailureMessageHelper.ExpectedContextTypeXButFoundYWithReason(
"result", typeof(ActionResult<object>), result.GetType());
Action action = () => result.Should().BeActionResult<object>(Reason, ReasonArgs);
action.Should().Throw<Exception>()
.WithMessage(failureMessage);
}
[Fact]
public void BeConvertibleTo_CallingConvertResultsNull_ShouldFail()
{
var mock = new Mock<IConvertToActionResult>();
mock.Setup(e => e.Convert()).Returns((IActionResult)null);
var result = mock.Object;
var failureMessage = FailureMessageHelper.ExpectedContextToBeConvertible(
"result", typeof(ActionResult).FullName, "<null>");
Action action = () => result.Should().BeConvertibleTo<ActionResult>(Reason, ReasonArgs);
action.Should().Throw<Exception>()
.WithMessage(failureMessage);
}
[Fact]
public void BeConvertibleTo_CallingConvertResultsDifferentType_ShouldFail()
{
var mock = new Mock<IConvertToActionResult>();
mock.Setup(e => e.Convert()).Returns(new BadRequestObjectResult(new object()));
var result = mock.Object;
var failureMessage = FailureMessageHelper.ExpectedContextToBeConvertible(
"result", typeof(ActionResult).FullName, typeof(BadRequestObjectResult).FullName);
Action action = () => result.Should().BeConvertibleTo<ActionResult>(Reason, ReasonArgs);
action.Should().Throw<Exception>()
.WithMessage(failureMessage);
}
[Fact]
public void BeConvertibleTo_CallingConvertResultsGoodType_ShouldPass()
{
var mock = new Mock<IConvertToActionResult>();
mock.Setup(e => e.Convert()).Returns(new OkObjectResult(new object()));
var result = mock.Object;
result.Should().BeConvertibleTo<OkObjectResult>(Reason, ReasonArgs);
}
[Fact]
public void BeConvertibleTo_ShouldBeTheConvertedObject()
{
var mock = new Mock<IConvertToActionResult>();
var expectation = new OkObjectResult(new object());
mock.Setup(e => e.Convert()).Returns(expectation);
var result = mock.Object;
var actual =
result.Should().BeConvertibleTo<OkObjectResult>(Reason, ReasonArgs).Which;
actual.Should().BeSameAs(expectation);
}
}
}