Skip to content

Commit 49bb9bf

Browse files
committed
create nunit project and statred on RedirectToRoute asserts
1 parent 3012c58 commit 49bb9bf

File tree

6 files changed

+187
-0
lines changed

6 files changed

+187
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ test-results
88
*.pfx
99
cmd.exe
1010
[Pp]ackage
11+
[Gg]it [Bb]ash.lnk

FluentAssertionsMvc.VisualState.xml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<VisualState xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ShowCheckBoxes="false">
3+
<TopNode>[0-1000]G:\Dev\FluentAssertions.MVC\FluentAssertionsMvc.nunit</TopNode>
4+
<SelectedNode>[0-1062]G:\Dev\FluentAssertions.MVC\tests\FluentAssertions.Mvc3.Tests\bin\Debug\FluentAssertions.Mvc3.Tests.dll</SelectedNode>
5+
<ExcludeCategories>false</ExcludeCategories>
6+
<Nodes>
7+
<Node UniqueName="[0-1000]G:\Dev\FluentAssertions.MVC\FluentAssertionsMvc.nunit" Expanded="true" />
8+
<Node UniqueName="[0-1062]G:\Dev\FluentAssertions.MVC\tests\FluentAssertions.Mvc3.Tests\bin\Debug\FluentAssertions.Mvc3.Tests.dll" Expanded="true" />
9+
<Node UniqueName="[0-1063]FluentAssertions" Expanded="true" />
10+
<Node UniqueName="[0-1064]FluentAssertions.Mvc3" Expanded="true" />
11+
<Node UniqueName="[0-1065]FluentAssertions.Mvc3.Tests" Expanded="true" />
12+
<Node UniqueName="[0-1049]FluentAssertions.Mvc3.Tests.ActionResultAssertions_Tests" Expanded="true" />
13+
<Node UniqueName="[0-1008]FluentAssertions.Mvc3.Tests.ContentResultAssertions_Tests" Expanded="true" />
14+
<Node UniqueName="[0-1047]FluentAssertions.Mvc3.Tests.RedirectResultAssertions_Tests" Expanded="true" />
15+
<Node UniqueName="[0-1033]FluentAssertions.Mvc3.Tests.RouteDataAssertions_Tests" Expanded="true" />
16+
<Node UniqueName="[0-1001]FluentAssertions.Mvc3.Tests.RouteValueDictionary_Extensions_Tests" Expanded="true" />
17+
<Node UniqueName="[0-1015]FluentAssertions.Mvc3.Tests.ViewResultAssertions_Tests" Expanded="true" />
18+
<Node UniqueName="[0-1127]G:\Dev\FluentAssertions.MVC\bin\Debug\Test\FluentAssertions.Mvc3.Tests.dll" Expanded="true" />
19+
<Node UniqueName="[0-1128]FluentAssertions" Expanded="true" />
20+
<Node UniqueName="[0-1129]FluentAssertions.Mvc3" Expanded="true" />
21+
<Node UniqueName="[0-1130]FluentAssertions.Mvc3.Tests" Expanded="true" />
22+
</Nodes>
23+
</VisualState>

FluentAssertionsMvc.nunit

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<NUnitProject>
2+
<Settings activeconfig="Debug" processModel="Default" domainUsage="Default" />
3+
<Config name="Debug" binpathtype="Auto">
4+
<assembly path="bin\Debug\Test\FluentAssertions.Mvc3.Tests.dll" />
5+
</Config>
6+
<Config name="Release" binpathtype="Auto">
7+
<assembly path="bin\Release\Test\FluentAssertions.Mvc3.Tests.dll" />
8+
</Config>
9+
</NUnitProject>

src/FluentAssertions.Mvc3/RedirectToRouteAssertions.cs

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,84 @@
44
using System.Text;
55
using FluentAssertions.Assertions;
66
using System.Web.Mvc;
7+
using FluentAssertions;
78

89
namespace FluentAssertions.Mvc3
910
{
1011
public class RedirectToRouteAssertions : ReferenceTypeAssertions<RedirectToRouteResult, RedirectToRouteAssertions>
1112
{
13+
public class Constants
14+
{
15+
public const string CommonFailMessage = "Expected RedirectResult.{0} to be '{1}' but was '{2}'";
16+
}
17+
1218
public RedirectToRouteAssertions(RedirectToRouteResult subject)
1319
{
1420
Subject = subject;
1521
}
22+
23+
public RedirectToRouteAssertions WithPermanent(bool expectedPermanent)
24+
{
25+
WithPermanent(expectedPermanent, string.Empty, null);
26+
return this;
27+
}
28+
29+
public RedirectToRouteAssertions WithPermanent(bool expectedPermanent, string reason, params object[] reasonArgs)
30+
{
31+
Execute.Verification
32+
.ForCondition(expectedPermanent == Subject.Permanent)
33+
.BecauseOf(reason, reasonArgs)
34+
.FailWith(Constants.CommonFailMessage, "Permanent", expectedPermanent, Subject.Permanent);
35+
36+
return this;
37+
}
38+
39+
public RedirectToRouteAssertions WithRouteName(string expectedRouteName)
40+
{
41+
WithRouteName(expectedRouteName, string.Empty, null);
42+
return this;
43+
}
44+
45+
public RedirectToRouteAssertions WithRouteName(string expectedRouteName, string reason, params object[] reasonArgs)
46+
{
47+
Execute.Verification
48+
.ForCondition(string.Equals(expectedRouteName, Subject.RouteName, StringComparison.InvariantCultureIgnoreCase))
49+
.BecauseOf(reason, reasonArgs)
50+
.FailWith(Constants.CommonFailMessage, "RouteName", expectedRouteName, Subject.Permanent);
51+
52+
return this;
53+
}
54+
55+
public RedirectToRouteAssertions WithController(string expectedControllerName)
56+
{
57+
WithController(expectedControllerName, string.Empty, null);
58+
return this;
59+
}
60+
61+
public RedirectToRouteAssertions WithController(string expectedControllerName, string reason, params object[] reasonArgs)
62+
{
63+
//Subject.RouteValues[""]
64+
65+
return this;
66+
}
67+
68+
public RedirectToRouteAssertions WithRouteValue(string key, object expectedValue)
69+
{
70+
WithRouteValue(key, expectedValue, string.Empty, null);
71+
return this;
72+
}
73+
74+
public RedirectToRouteAssertions WithRouteValue(string key, object expectedValue, string reason, params object[] reasonArgs)
75+
{
76+
Execute.Verification
77+
.ForCondition(Subject.RouteValues.ContainsKey(key))
78+
.BecauseOf(reason, reasonArgs)
79+
.FailWith(string.Format("RedirectResult.RouteValues does not contain key '{0}'", key));
80+
81+
var actualValue = Subject.RouteValues[key];
82+
actualValue.Should().Be(expectedValue);
83+
84+
return this;
85+
}
1686
}
1787
}

tests/FluentAssertions.Mvc3.Tests/FluentAssertions.Mvc3.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
<Compile Include="Fakes\FakeController.cs" />
5353
<Compile Include="ActionResultAssertions_Tests.cs" />
5454
<Compile Include="RedirectResultAssertions_Tests.cs" />
55+
<Compile Include="RedirectToRoute_Tests.cs" />
5556
<Compile Include="RouteDataAssertions_Tests.cs" />
5657
<Compile Include="RouteValueDictionary_Extensions_Tests.cs" />
5758
<Compile Include="ViewResultAssertions_Tests.cs" />
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
using System;
2+
using System.Web.Mvc;
3+
using NUnit.Framework;
4+
using System.Web.Routing;
5+
6+
namespace FluentAssertions.Mvc3.Tests
7+
{
8+
[TestFixture]
9+
public class RedirectToRoute_Tests
10+
{
11+
[Test]
12+
public void WithPermanent_GivenExpected_ShouldPass()
13+
{
14+
ActionResult result = new RedirectToRouteResult("", null, true);
15+
result.Should()
16+
.BeRedirectToRoute()
17+
.WithPermanent(true);
18+
}
19+
20+
[Test]
21+
public void WithPermanent_GivenUnxpected_ShouldFail()
22+
{
23+
ActionResult result = new RedirectToRouteResult("", null, true);
24+
Action a = () => result.Should()
25+
.BeRedirectToRoute()
26+
.WithPermanent(false);
27+
a.ShouldThrow<Exception>();
28+
}
29+
30+
[Test]
31+
public void WithRouteName_GivenExpected_ShouldPass()
32+
{
33+
ActionResult result = new RedirectToRouteResult("default", null);
34+
result.Should()
35+
.BeRedirectToRoute()
36+
.WithRouteName("default");
37+
}
38+
39+
[Test]
40+
public void WithRouteName_GivenUnxpected_ShouldFail()
41+
{
42+
ActionResult result = new RedirectToRouteResult("default", null);
43+
Action a = () => result.Should()
44+
.BeRedirectToRoute()
45+
.WithRouteName("xyz");
46+
a.ShouldThrow<Exception>();
47+
}
48+
49+
[Test]
50+
public void WithController_GivenExpected_ShouldPass()
51+
{
52+
ActionResult result = new RedirectToRouteResult("", new RouteValueDictionary(
53+
new {
54+
Controller = "home",
55+
Action = "list",
56+
Id = "22"
57+
}));
58+
59+
result.Should()
60+
.BeRedirectToRoute()
61+
.WithController("Home");
62+
}
63+
64+
[Test]
65+
public void WithRouteValue_GivenUnxpected_ShouldFail()
66+
{
67+
ActionResult result = new RedirectToRouteResult("", new RouteValueDictionary(
68+
new
69+
{
70+
Controller = "home",
71+
Action = "list",
72+
Id = "22"
73+
}));
74+
75+
Action a = () => result.Should()
76+
.BeRedirectToRoute()
77+
.WithController("xyz");
78+
a.ShouldThrow<Exception>();
79+
}
80+
81+
82+
}
83+
}

0 commit comments

Comments
 (0)