Skip to content

Commit 2ed8da0

Browse files
committed
Added check for null model in ViewResultBaseAssertions.
1 parent 8a4b233 commit 2ed8da0

File tree

4 files changed

+32
-0
lines changed

4 files changed

+32
-0
lines changed

src/FluentAssertions.Mvc3/FailureMessages.Designer.cs

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/FluentAssertions.Mvc3/FailureMessages.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,9 @@
117117
<resheader name="writer">
118118
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119119
</resheader>
120+
<data name="ViewResultBase_NullModel" xml:space="preserve">
121+
<value>Expected Model to be of type {0}, but no Model was supplied.</value>
122+
</data>
120123
<data name="ViewResultBase_WithDefaultViewName" xml:space="preserve">
121124
<value>Expected default view, but view {0} was rendered.</value>
122125
</data>

src/FluentAssertions.Mvc3/ViewResultBaseAssertions.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ public TModel ModelAs<TModel>()
8888
{
8989
object model = (Subject as ViewResultBase).Model;
9090

91+
if (model == null)
92+
Execute.Verification.FailWith(FailureMessages.ViewResultBase_NullModel, typeof(TModel).Name);
93+
9194
Execute.Verification
9295
.ForCondition(model is TModel)
9396
.FailWith("Expected Model to be of type '{0}' but was '{1}'", typeof(TModel).Name, model.GetType().Name);

tests/FluentAssertions.Mvc3.Tests/ViewResultAssertions_Tests.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,21 @@ public void ModelAs_GivenWrongType_ShouldFail()
229229
.WithMessage("");
230230
}
231231

232+
[Test]
233+
public void ModelAs_Null_ShouldFail()
234+
{
235+
ActionResult result = new ViewResult();
236+
237+
// TODO: Improve the comparision of failure messages.
238+
string value = String.Format("\"{0}\"", typeof(Object).Name);
239+
string failureMessage = String.Format(FailureMessages.ViewResultBase_NullModel, value);
240+
241+
Action a = () => result.Should().BeView().ModelAs<Object>();
242+
243+
a.ShouldThrow<Exception>()
244+
.WithMessage(failureMessage);
245+
}
246+
232247
[Test]
233248
public void WithDefaultViewName_GivenExpectedValue_ShouldPass()
234249
{
@@ -244,6 +259,8 @@ public void WithDefaultViewName_GivenExpectedValue_ShouldPass()
244259
public void WithDefaultViewName_GivenUnexpectedValue_ShouldFail()
245260
{
246261
string viewName = "index";
262+
263+
// TODO: Improve the comparision of failure messages.
247264
string value = String.Format("\"{0}\"", viewName);
248265
string failureMessage = String.Format(FailureMessages.ViewResultBase_WithDefaultViewName, value);
249266

0 commit comments

Comments
 (0)