Skip to content

Commit 7db8cf0

Browse files
committed
Fix RedirectResultAssertions, RedirectToActionResultAssertions, RedirectToRouteAssertions messages.
1 parent 88d2825 commit 7db8cf0

File tree

6 files changed

+75
-53
lines changed

6 files changed

+75
-53
lines changed

src/FluentAssertions.AspNetCore.Mvc/RedirectResultAssertions.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ public RedirectResultAssertions WithUrl(string expectedUrl, string reason = "",
3333
Execute.Assertion
3434
.ForCondition(string.Equals(actualUrl, expectedUrl, StringComparison.OrdinalIgnoreCase))
3535
.BecauseOf(reason, reasonArgs)
36-
.FailWith("Expected RedirectResult.Url to be {0}{reason} but was {1}", expectedUrl, actualUrl);
36+
.WithDefaultIdentifier("RedirectResult.Url")
37+
.FailWith(FailureMessages.CommonFailMessage2, expectedUrl, actualUrl);
3738

3839
return this;
3940
}
@@ -56,7 +57,8 @@ public RedirectResultAssertions WithPermanent(bool expectedPermanent, string rea
5657
Execute.Assertion
5758
.ForCondition(expectedPermanent == actualPermanent)
5859
.BecauseOf(reason, reasonArgs)
59-
.FailWith("Expected RedirectResult.Permanent to be {0}{reason} but was {1}", expectedPermanent, actualPermanent);
60+
.WithDefaultIdentifier("RedirectResult.Permanent")
61+
.FailWith(FailureMessages.CommonFailMessage2, expectedPermanent, actualPermanent);
6062

6163
return this;
6264
}

src/FluentAssertions.AspNetCore.Mvc/RedirectToActionResultAssertions.cs

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ public RedirectToActionResultAssertions WithActionName(string expectedActionName
3333
Execute.Assertion
3434
.ForCondition(string.Equals(actualActionName, expectedActionName, StringComparison.OrdinalIgnoreCase))
3535
.BecauseOf(reason, reasonArgs)
36-
.FailWith("Expected RedirectToActionResult.ActionName to be {0}{reason} but was {1}", expectedActionName, actualActionName);
36+
.WithDefaultIdentifier("RedirectToActionResult.ActionName")
37+
.FailWith(FailureMessages.CommonFailMessage2, expectedActionName, actualActionName);
3738

3839
return this;
3940
}
@@ -56,7 +57,8 @@ public RedirectToActionResultAssertions WithControllerName(string expectedContro
5657
Execute.Assertion
5758
.ForCondition(string.Equals(actualControllerName, expectedControllerName, StringComparison.OrdinalIgnoreCase))
5859
.BecauseOf(reason, reasonArgs)
59-
.FailWith("Expected RedirectToActionResult.ControllerName to be {0}{reason} but was {1}", expectedControllerName, actualControllerName);
60+
.WithDefaultIdentifier("RedirectToActionResult.ControllerName")
61+
.FailWith(FailureMessages.CommonFailMessage2, expectedControllerName, actualControllerName);
6062

6163
return this;
6264
}
@@ -79,7 +81,8 @@ public RedirectToActionResultAssertions WithFragment(string expectedFragment, st
7981
Execute.Assertion
8082
.ForCondition(string.Equals(actualFragment, expectedFragment, StringComparison.OrdinalIgnoreCase))
8183
.BecauseOf(reason, reasonArgs)
82-
.FailWith("Expected RedirectToActionResult.Fragment to be {0}{reason} but was {1}", expectedFragment, actualFragment);
84+
.WithDefaultIdentifier("RedirectToActionResult.Fragment")
85+
.FailWith(FailureMessages.CommonFailMessage2, expectedFragment, actualFragment);
8386

8487
return this;
8588
}
@@ -102,7 +105,8 @@ public RedirectToActionResultAssertions WithPermanent(bool expectedPermanent, st
102105
Execute.Assertion
103106
.ForCondition(expectedPermanent == actualPermanent)
104107
.BecauseOf(reason, reasonArgs)
105-
.FailWith("Expected RedirectToActionResult.Permanent to be {0}{reason} but was {1}", expectedPermanent, actualPermanent);
108+
.WithDefaultIdentifier("RedirectToActionResult.Permanent")
109+
.FailWith(FailureMessages.CommonFailMessage2, expectedPermanent, actualPermanent);
106110

107111
return this;
108112
}
@@ -125,7 +129,8 @@ public RedirectToActionResultAssertions WithPreserveMethod(bool expectedPreserve
125129
Execute.Assertion
126130
.ForCondition(expectedPreserveMethod == actualPreserveMethod)
127131
.BecauseOf(reason, reasonArgs)
128-
.FailWith("Expected RedirectToActionResult.PreserveMethod to be {0}{reason} but was {1}", expectedPreserveMethod, actualPreserveMethod);
132+
.WithDefaultIdentifier("RedirectToActionResult.PreserveMethod")
133+
.FailWith(FailureMessages.CommonFailMessage2, expectedPreserveMethod, actualPreserveMethod);
129134

130135
return this;
131136
}
@@ -146,17 +151,7 @@ public RedirectToActionResultAssertions WithRouteValue(string key, object expect
146151
{
147152
var subjectTyped = Subject as RedirectToActionResult;
148153

149-
Execute.Assertion
150-
.ForCondition(subjectTyped != null && subjectTyped.RouteValues.ContainsKey(key))
151-
.BecauseOf(reason, reasonArgs)
152-
.FailWith(FailureMessages.RedirectToActionResult_RouteValues_ContainsKey, key);
153-
154-
var actualValue = subjectTyped.RouteValues[key];
155-
156-
Execute.Assertion
157-
.ForCondition(expectedValue.Equals(actualValue))
158-
.BecauseOf(reason, reasonArgs)
159-
.FailWith(FailureMessages.RedirectToActionResult_RouteValues_HaveValue, key, expectedValue, actualValue);
154+
AssertionHelpers.AssertStringObjectDictionary(subjectTyped.RouteValues, "RedirectToActionResult.RouteValues", key, expectedValue, reason, reasonArgs);
160155

161156
return this;
162157
}

src/FluentAssertions.AspNetCore.Mvc/RedirectToRouteAssertions.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ public RedirectToRouteAssertions WithPermanent(bool expectedPermanent, string re
5050
Execute.Assertion
5151
.BecauseOf(reason, reasonArgs)
5252
.ForCondition(expectedPermanent == Subject.Permanent)
53-
.FailWith("Expected RedirectToRoute.Permanent to be {0}{reason}, but found {1}", expectedPermanent, Subject.Permanent);
53+
.WithDefaultIdentifier("RedirectToRoute.Permanent")
54+
.FailWith(FailureMessages.CommonFailMessage2, expectedPermanent, Subject.Permanent);
5455
return this;
5556
}
5657

@@ -70,7 +71,8 @@ public RedirectToRouteAssertions WithRouteName(string expectedRouteName, string
7071
Execute.Assertion
7172
.BecauseOf(reason, reasonArgs)
7273
.ForCondition(string.Equals(expectedRouteName, Subject.RouteName, StringComparison.OrdinalIgnoreCase))
73-
.FailWith("Expected RedirectToRoute.RouteName to be {0}{reason}, but found {1}", expectedRouteName, Subject.RouteName);
74+
.WithDefaultIdentifier("RedirectToRoute.RouteName")
75+
.FailWith(FailureMessages.CommonFailMessage2, expectedRouteName, Subject.RouteName);
7476

7577
return this;
7678
}
@@ -90,7 +92,10 @@ public RedirectToRouteAssertions WithRouteName(string expectedRouteName, string
9092
[CustomAssertion]
9193
public RedirectToRouteAssertions WithRouteValue(string key, object expectedValue, string reason = "", params object[] reasonArgs)
9294
{
93-
Subject.RouteValues.Should().Contain(new KeyValuePair<string, object>(key, expectedValue), reason, reasonArgs);
95+
var routeValues = Subject.RouteValues;
96+
97+
AssertionHelpers.AssertStringObjectDictionary(routeValues, "RedirectToRouteResult.RouteValues", key, expectedValue, reason, reasonArgs);
98+
9499
return this;
95100
}
96101

tests/FluentAssertions.AspNetCore.Mvc.Tests/RedirectResultAssertions_Tests.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Microsoft.AspNetCore.Mvc;
1+
using FluentAssertions.Mvc.Tests.Helpers;
2+
using Microsoft.AspNetCore.Mvc;
23
using System;
34
using Xunit;
45

@@ -22,9 +23,9 @@ public void WithUrl_GivenUnexpectedUrl_ShouldFail()
2223
ActionResult result = new RedirectResult("/abc");
2324

2425
Action a = () => result.Should().BeRedirectResult()
25-
.WithUrl("/xyz");
26+
.WithUrl("/xyz", "it is {0}", 10);
2627
a.Should().Throw<Exception>()
27-
.WithMessage("Expected RedirectResult.Url to be \"/xyz\" but was \"/abc\"");
28+
.WithMessage(FailureMessageHelper.ExpectedContextToBeXButY("RedirectResult.Url", "/xyz", "/abc"));
2829
}
2930

3031
[Fact]
@@ -42,9 +43,10 @@ public void WithPermanent_GivenUnexpectedUrl_ShouldFail()
4243
ActionResult result = new RedirectResult("/abc", true);
4344

4445
Action a = () => result.Should().BeRedirectResult()
45-
.WithPermanent(false);
46+
.WithPermanent(false, "it is {0}", 10);
47+
4648
a.Should().Throw<Exception>()
47-
.WithMessage("Expected RedirectResult.Permanent to be False but was True");
49+
.WithMessage(FailureMessageHelper.ExpectedContextToBeXButY("RedirectResult.Permanent", false, true));
4850
}
4951
}
5052
}

tests/FluentAssertions.AspNetCore.Mvc.Tests/RedirectToActionResultAssertions_Tests.cs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ public void WithActionName_GivenUnexpectedActionName_ShouldFail()
2424
RedirectToActionResult result = new RedirectToActionResult("someOtherAction", string.Empty, null);
2525

2626
Action a = () => result.Should().BeRedirectToActionResult()
27-
.WithActionName("expectedAction");
27+
.WithActionName("expectedAction", "it is {0}", 10);
2828

2929
a.Should().Throw<Exception>()
30-
.WithMessage("Expected RedirectToActionResult.ActionName to be \"expectedAction\" but was \"someOtherAction\"");
30+
.WithMessage(FailureMessageHelper.ExpectedContextToBeXButY("RedirectToActionResult.ActionName", "expectedAction", "someOtherAction"));
3131
}
3232

3333
[Fact]
@@ -46,10 +46,10 @@ public void WithControllerName_GivenUnexpectedControllerName_ShouldFail()
4646
RedirectToActionResult result = new RedirectToActionResult(string.Empty, "someOtherController", null);
4747

4848
Action a = () => result.Should().BeRedirectToActionResult()
49-
.WithControllerName("expectedController");
49+
.WithControllerName("expectedController", "it is {0}", 10);
5050

5151
a.Should().Throw<Exception>()
52-
.WithMessage("Expected RedirectToActionResult.ControllerName to be \"expectedController\" but was \"someOtherController\"");
52+
.WithMessage(FailureMessageHelper.ExpectedContextToBeXButY("RedirectToActionResult.ControllerName", "expectedController", "someOtherController"));
5353
}
5454

5555
[Fact]
@@ -68,10 +68,10 @@ public void WithFragment_GivenUnexpectedFragment_ShouldFail()
6868
RedirectToActionResult result = new RedirectToActionResult(string.Empty, string.Empty, null, false, "someOtherFragment");
6969

7070
Action a = () => result.Should().BeRedirectToActionResult()
71-
.WithFragment("expectedFragment");
71+
.WithFragment("expectedFragment", "it is {0}", 10);
7272

7373
a.Should().Throw<Exception>()
74-
.WithMessage("Expected RedirectToActionResult.Fragment to be \"expectedFragment\" but was \"someOtherFragment\"");
74+
.WithMessage(FailureMessageHelper.ExpectedContextToBeXButY("RedirectToActionResult.Fragment", "expectedFragment", "someOtherFragment"));
7575
}
7676

7777
[Fact]
@@ -89,10 +89,10 @@ public void WithPermanent_GivenUnexpectedValue_ShouldFail()
8989
RedirectToActionResult result = new RedirectToActionResult(string.Empty, string.Empty, null, true);
9090

9191
Action a = () => result.Should().BeRedirectToActionResult()
92-
.WithPermanent(false);
92+
.WithPermanent(false, "it is {0}", 10);
9393

9494
a.Should().Throw<Exception>()
95-
.WithMessage("Expected RedirectToActionResult.Permanent to be False but was True");
95+
.WithMessage(FailureMessageHelper.ExpectedContextToBeXButY("RedirectToActionResult.Permanent", false, true));
9696
}
9797

9898
[Fact]
@@ -110,22 +110,22 @@ public void WithPreserveMethod_GivenUnexpectedValue_ShouldFail()
110110
RedirectToActionResult result = new RedirectToActionResult(string.Empty, string.Empty, null, false, true);
111111

112112
Action a = () => result.Should().BeRedirectToActionResult()
113-
.WithPreserveMethod(false);
113+
.WithPreserveMethod(false, "it is {0}", 10);
114114

115115
a.Should().Throw<Exception>()
116-
.WithMessage("Expected RedirectToActionResult.PreserveMethod to be False but was True");
116+
.WithMessage(FailureMessageHelper.ExpectedContextToBeXButY("RedirectToActionResult.PreserveMethod", false, true));
117117
}
118118

119119
[Fact]
120120
public void WithRouteValue_GivenKeyDoesntExist_ShouldFail()
121121
{
122122
var expectedKey = "expectedKey";
123-
var failureMessage = FailureMessageHelper.Format(FailureMessages.RedirectToActionResult_RouteValues_ContainsKey, expectedKey);
123+
var failureMessage = FailureMessageHelper.ExpectedKeyButNotFound("RedirectToActionResult.RouteValues", expectedKey, "Val");
124124

125125
var routeValues = new {myKey = "MyValue"};
126126
RedirectToActionResult result = new RedirectToActionResult(string.Empty, string.Empty, routeValues);
127127

128-
Action a = () => result.Should().BeRedirectToActionResult().WithRouteValue(expectedKey, "");
128+
Action a = () => result.Should().BeRedirectToActionResult().WithRouteValue(expectedKey, "Val", "it is {0}", 10);
129129

130130
a.Should().Throw<Exception>()
131131
.WithMessage(failureMessage);
@@ -149,10 +149,10 @@ public void HaveValue_GivenUnexpectedKeyValuePair_ShouldFail()
149149
var expectedKey = "expectedKey";
150150
var expectedValue = "expectedValue";
151151
var routeValues = new { expectedKey = "someOtherValue" };
152-
var failureMessage = FailureMessageHelper.Format(FailureMessages.RedirectToActionResult_RouteValues_HaveValue, expectedKey, expectedValue, "someOtherValue");
152+
var failureMessage = FailureMessageHelper.ExpectedAtKeyValueXButFoundY("RedirectToActionResult.RouteValues", expectedKey, expectedValue, "someOtherValue");
153153

154154
RedirectToActionResult result = new RedirectToActionResult(string.Empty, string.Empty, routeValues);
155-
Action a = () => result.Should().BeRedirectToActionResult().WithRouteValue(expectedKey, expectedValue);
155+
Action a = () => result.Should().BeRedirectToActionResult().WithRouteValue(expectedKey, expectedValue, "it is {0}", 10);
156156

157157
a.Should().Throw<Exception>()
158158
.WithMessage(failureMessage);

tests/FluentAssertions.AspNetCore.Mvc.Tests/RedirectToRoute_Tests.cs

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Microsoft.AspNetCore.Mvc;
1+
using FluentAssertions.Mvc.Tests.Helpers;
2+
using Microsoft.AspNetCore.Mvc;
23
using Microsoft.AspNetCore.Routing;
34
using System;
45
using Xunit;
@@ -24,9 +25,9 @@ public void WithPermanent_GivenUnExpected_ShouldFail()
2425
ActionResult result = new RedirectToRouteResult("", null, true);
2526
Action a = () => result.Should()
2627
.BeRedirectToRouteResult()
27-
.WithPermanent(false);
28+
.WithPermanent(false, "it is {0}", 10);
2829
a.Should().Throw<Exception>()
29-
.WithMessage("Expected RedirectToRoute.Permanent to be False, but found True");
30+
.WithMessage(FailureMessageHelper.ExpectedContextToBeXButY("RedirectToRoute.Permanent", false, true));
3031
}
3132

3233
[Fact]
@@ -44,9 +45,9 @@ public void WithRouteName_GivenUnExpected_ShouldFail()
4445
ActionResult result = new RedirectToRouteResult("default", null);
4546
Action a = () => result.Should()
4647
.BeRedirectToRouteResult()
47-
.WithRouteName("xyz");
48+
.WithRouteName("xyz", "it is {0}", 10);
4849
a.Should().Throw<Exception>()
49-
.WithMessage("Expected RedirectToRoute.RouteName to be \"xyz\", but found \"default\"");
50+
.WithMessage(FailureMessageHelper.ExpectedContextToBeXButY("RedirectToRoute.RouteName","xyz", "default"));
5051
}
5152

5253
[Fact]
@@ -72,10 +73,27 @@ public void WithRouteValue_GivenUnexpected_ShouldFail()
7273

7374
Action a = () => result.Should()
7475
.BeRedirectToRouteResult()
75-
.WithRouteValue("Id", "11");
76+
.WithRouteValue("Id", "11", "it is {0}", 10);
7677

7778
a.Should().Throw<Exception>()
78-
.WithMessage("Expected result to contain value \"11\" at key \"Id\", but found \"22\".");
79+
.WithMessage(FailureMessageHelper.ExpectedAtKeyValueXButFoundY("RedirectToRouteResult.RouteValues", "Id", "11", "22"));
80+
}
81+
82+
[Fact]
83+
public void WithRouteValue_GivenUnexpectedKey_ShouldFail()
84+
{
85+
ActionResult result = new RedirectToRouteResult("", new RouteValueDictionary(
86+
new
87+
{
88+
Id = "22"
89+
}));
90+
91+
Action a = () => result.Should()
92+
.BeRedirectToRouteResult()
93+
.WithRouteValue("xyz", "22", "it is {0}", 10);
94+
95+
a.Should().Throw<Exception>()
96+
.WithMessage(FailureMessageHelper.ExpectedKeyButNotFound("RedirectToRouteResult.RouteValues", "xyz", "22"));
7997
}
8098

8199
[Fact]
@@ -101,9 +119,9 @@ public void WithController_GivenUnexpected_ShouldFail()
101119

102120
Action a = () => result.Should()
103121
.BeRedirectToRouteResult()
104-
.WithController("xyz");
122+
.WithController("xyz", "it is {0}", 10);
105123
a.Should().Throw<Exception>()
106-
.WithMessage("Expected dictionary to contain value \"xyz\" at key \"Controller\", but found \"home\".");
124+
.WithMessage(FailureMessageHelper.ExpectedAtKeyValueXButFoundY("RedirectToRouteResult.RouteValues", "Controller", "xyz", "home"));
107125
}
108126

109127
[Fact]
@@ -129,10 +147,10 @@ public void WithAction_GivenUnexpected_ShouldFail()
129147

130148
Action a = () => result.Should()
131149
.BeRedirectToRouteResult()
132-
.WithAction("xyz");
150+
.WithAction("xyz", "it is {0}", 10);
133151

134152
a.Should().Throw<Exception>()
135-
.WithMessage("Expected dictionary to contain value \"xyz\" at key \"Action\", but found \"index\".");
153+
.WithMessage(FailureMessageHelper.ExpectedAtKeyValueXButFoundY("RedirectToRouteResult.RouteValues", "Action", "xyz", "index"));
136154
}
137155

138156
[Fact]
@@ -158,10 +176,10 @@ public void WithArea_GivenUnexpected_ShouldFail()
158176

159177
Action a = () => result.Should()
160178
.BeRedirectToRouteResult()
161-
.WithArea("xyz");
179+
.WithArea("xyz", "it is {0}", 10);
162180

163181
a.Should().Throw<Exception>()
164-
.WithMessage("Expected dictionary to contain value \"xyz\" at key \"Area\", but found \"accounts\".");
182+
.WithMessage(FailureMessageHelper.ExpectedAtKeyValueXButFoundY("RedirectToRouteResult.RouteValues", "Area", "xyz", "accounts"));
165183
}
166184

167185
#endregion Public Methods

0 commit comments

Comments
 (0)