Skip to content

Commit eb7b873

Browse files
authoredSep 25, 2017
Merge pull request #3 from shealey/master
Added RouteDataAssertions_Tests
2 parents 1248807 + 302fec1 commit eb7b873

File tree

2 files changed

+154
-0
lines changed

2 files changed

+154
-0
lines changed
 

‎src/FluentAssertions.AspNetCore.Mvc/RouteDataAssertions.cs

+17
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,23 @@ public RouteDataAssertions HaveAction(string expectedActionName, string reason =
5454
return this;
5555
}
5656

57+
/// <summary>
58+
/// Asserts that the route data has the expected area name.
59+
/// </summary>
60+
/// <param name="expectedAreaName">The expected area name.</param>
61+
/// <param name="reason">
62+
/// A formatted phrase as is supported by <see cref="string.Format(string,object[])" /> explaining why the assertion
63+
/// is needed. If the phrase does not start with the word <i>because</i>, it is prepended automatically.
64+
/// </param>
65+
/// <param name="reasonArgs">
66+
/// Zero or more objects to format using the placeholders in <see cref="reason" />.
67+
/// </param>
68+
public RouteDataAssertions HaveArea(string expectedAreaName, string reason = "", params object[] reasonArgs)
69+
{
70+
HaveValue("area", expectedAreaName, reason, reasonArgs);
71+
return this;
72+
}
73+
5774
/// <summary>
5875
/// Asserts that the route data has the expected data token.
5976
/// </summary>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
using FluentAssertions.Mvc.Tests.Helpers;
2+
using Microsoft.AspNetCore.Routing;
3+
using System;
4+
using Xunit;
5+
6+
namespace FluentAssertions.AspNetCore.Mvc.Tests
7+
{
8+
public class RouteDataAssertionsTests
9+
{
10+
private RouteData _routeData;
11+
12+
public RouteDataAssertionsTests()
13+
{
14+
_routeData = new RouteData();
15+
_routeData.Values.Add("controller", "home");
16+
_routeData.Values.Add("action", "index");
17+
_routeData.Values.Add("area", "admin");
18+
_routeData.DataTokens.Add("token", "value");
19+
}
20+
21+
[Fact]
22+
public void HaveValue_GivenKeyDoesntExist_ShouldFail()
23+
{
24+
var expectedKey = "xyz";
25+
var failureMessage = FailureMessageHelper.Format(FailureMessages.RouteData_Values_ContainsKey, expectedKey);
26+
27+
Action a = () => _routeData.Should().HaveValue(expectedKey, "");
28+
29+
a.ShouldThrow<Exception>()
30+
.WithMessage(failureMessage);
31+
}
32+
33+
[Fact]
34+
public void HaveValue_GivenExpectedKeyValuePair_ShouldPass()
35+
{
36+
_routeData.Should().HaveValue("controller", "home");
37+
}
38+
39+
[Fact]
40+
public void HaveValue_GivenUnexpectedKeyValuePair_ShouldFail()
41+
{
42+
var controllerName = "xyz";
43+
var failureMessage = FailureMessageHelper.Format(FailureMessages.RouteData_Values_HaveValue, "controller", controllerName, "home");
44+
45+
Action a = () => _routeData.Should().HaveValue("controller", controllerName);
46+
47+
a.ShouldThrow<Exception>()
48+
.WithMessage(failureMessage);
49+
}
50+
51+
[Fact]
52+
public void HaveController_GivenExpectedValue_ShouldPass()
53+
{
54+
_routeData.Should().HaveController("home");
55+
}
56+
57+
[Fact]
58+
public void HaveController_GivenUnexpectedValue_ShouldFail()
59+
{
60+
var controllerName = "xyz";
61+
var failureMessage = FailureMessageHelper.Format(FailureMessages.RouteData_Values_HaveValue, "controller", controllerName, "home");
62+
63+
Action a = () => _routeData.Should().HaveController(controllerName);
64+
65+
a.ShouldThrow<Exception>()
66+
.WithMessage(failureMessage);
67+
}
68+
69+
[Fact]
70+
public void HaveAction_GivenExpectedValue_ShouldPass()
71+
{
72+
_routeData.Should().HaveAction("index");
73+
}
74+
75+
[Fact]
76+
public void HaveAction_GivenUnexpectedValue_ShouldFail()
77+
{
78+
var actionName = "xyz";
79+
var failureMessage = FailureMessageHelper.Format(FailureMessages.RouteData_Values_HaveValue, "action", actionName, "index");
80+
81+
Action a = () => _routeData.Should().HaveAction(actionName);
82+
83+
a.ShouldThrow<Exception>()
84+
.WithMessage(failureMessage);
85+
}
86+
87+
[Fact]
88+
public void HaveArea_Exits_ShouldPass()
89+
{
90+
_routeData.Should().HaveArea("admin");
91+
}
92+
93+
[Fact]
94+
public void HaveArea_DoesntExist_ShouldFail()
95+
{
96+
var area = "xyz";
97+
var failureMessage = FailureMessageHelper.Format(FailureMessages.RouteData_Values_HaveValue, "area", area, "admin");
98+
99+
Action a = () => _routeData.Should().HaveArea(area);
100+
101+
a.ShouldThrow<Exception>()
102+
.WithMessage(failureMessage);
103+
}
104+
105+
[Fact]
106+
public void HaveDataToken_KeyDoesExist_ShouldFail()
107+
{
108+
var expectedKey = "xyz";
109+
var failureMessage = FailureMessageHelper.Format(FailureMessages.RouteData_DataTokens_ContainsKey, expectedKey);
110+
111+
Action a = () => _routeData.Should().HaveDataToken(expectedKey, "");
112+
113+
a.ShouldThrow<Exception>()
114+
.WithMessage(failureMessage);
115+
}
116+
117+
[Fact]
118+
public void HaveDataToken_KeyValuePairExists_ShouldPass()
119+
{
120+
_routeData.Should().HaveDataToken("token", "value");
121+
}
122+
123+
[Fact]
124+
public void HaveDataToken_ValueDoesntExist_ShouldFail()
125+
{
126+
var value = "xyz";
127+
var failureMessage = FailureMessageHelper.Format(FailureMessages.RouteData_DataTokens_HaveValue, "token", value, "value");
128+
129+
Action a = () => _routeData.Should().HaveDataToken("token", value);
130+
131+
132+
a.ShouldThrow<Exception>()
133+
.WithMessage(failureMessage);
134+
}
135+
}
136+
137+
}

0 commit comments

Comments
 (0)
Failed to load comments.