diff --git a/TestStack.FluentMVCTesting.Mvc3/TestStack.FluentMVCTesting.Mvc3.csproj b/TestStack.FluentMVCTesting.Mvc3/TestStack.FluentMVCTesting.Mvc3.csproj
index c283c51..929dbf9 100644
--- a/TestStack.FluentMVCTesting.Mvc3/TestStack.FluentMVCTesting.Mvc3.csproj
+++ b/TestStack.FluentMVCTesting.Mvc3/TestStack.FluentMVCTesting.Mvc3.csproj
@@ -36,6 +36,9 @@
false
+
+ ..\packages\ImpromptuInterface.6.0.6\lib\net40\ImpromptuInterface.dll
+
True
..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
diff --git a/TestStack.FluentMVCTesting.Mvc3/packages.config b/TestStack.FluentMVCTesting.Mvc3/packages.config
index cc65639..e71cd69 100644
--- a/TestStack.FluentMVCTesting.Mvc3/packages.config
+++ b/TestStack.FluentMVCTesting.Mvc3/packages.config
@@ -1,5 +1,6 @@
+
diff --git a/TestStack.FluentMVCTesting.Tests/ControllerExtensionsTests.cs b/TestStack.FluentMVCTesting.Tests/ControllerExtensionsTests.cs
index 685aa3e..5d92c58 100644
--- a/TestStack.FluentMVCTesting.Tests/ControllerExtensionsTests.cs
+++ b/TestStack.FluentMVCTesting.Tests/ControllerExtensionsTests.cs
@@ -1,4 +1,6 @@
-using NUnit.Framework;
+//
+using NUnit.Framework;
+//
using TestStack.FluentMVCTesting.Tests.TestControllers;
namespace TestStack.FluentMVCTesting.Tests
diff --git a/TestStack.FluentMVCTesting.Tests/ControllerResultTestTests.cs b/TestStack.FluentMVCTesting.Tests/ControllerResultTestTests.cs
index 50b9456..43ccaf5 100644
--- a/TestStack.FluentMVCTesting.Tests/ControllerResultTestTests.cs
+++ b/TestStack.FluentMVCTesting.Tests/ControllerResultTestTests.cs
@@ -1,9 +1,12 @@
-using System;
+//
+using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Net;
using System.Web.Mvc;
+//
using NUnit.Framework;
+//
using TestStack.FluentMVCTesting.Tests.TestControllers;
namespace TestStack.FluentMVCTesting.Tests
diff --git a/TestStack.FluentMVCTesting.Tests/ModelErrorTestTests.cs b/TestStack.FluentMVCTesting.Tests/ModelErrorTestTests.cs
index ee173c5..4778372 100644
--- a/TestStack.FluentMVCTesting.Tests/ModelErrorTestTests.cs
+++ b/TestStack.FluentMVCTesting.Tests/ModelErrorTestTests.cs
@@ -1,8 +1,11 @@
-using System;
+using System;//
+
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Web.Mvc;
+//
using NSubstitute;
+//
using NUnit.Framework;
namespace TestStack.FluentMVCTesting.Tests
diff --git a/TestStack.FluentMVCTesting.Tests/ModelTestTests.cs b/TestStack.FluentMVCTesting.Tests/ModelTestTests.cs
index 9c28537..52299d4 100644
--- a/TestStack.FluentMVCTesting.Tests/ModelTestTests.cs
+++ b/TestStack.FluentMVCTesting.Tests/ModelTestTests.cs
@@ -1,4 +1,5 @@
-using NUnit.Framework;
+//
+using NUnit.Framework;
namespace TestStack.FluentMVCTesting.Tests
{
diff --git a/TestStack.FluentMVCTesting.Tests/ViewResultTestTests.cs b/TestStack.FluentMVCTesting.Tests/ViewResultTestTests.cs
index 56ee166..77d265f 100644
--- a/TestStack.FluentMVCTesting.Tests/ViewResultTestTests.cs
+++ b/TestStack.FluentMVCTesting.Tests/ViewResultTestTests.cs
@@ -1,4 +1,8 @@
-using System.Web.Mvc;
+//
+using System;
+using System.Collections.Generic;
+using System.Web.Mvc;
+//
using NUnit.Framework;
namespace TestStack.FluentMVCTesting.Tests
@@ -19,6 +23,69 @@ public void Setup()
_viewResultTest = new ViewResultTest(_viewResult, new ViewTestController());
}
+ [Test]
+ public void Check_string_message_key_on_viewbag()
+ {
+ _viewResult.ViewBag.Message = "Hello View Data Message";
+ Assert.That(_viewResultTest.WithViewBag("Message"), Is.EqualTo("Hello View Data Message"));
+ }
+
+ [Test]
+ public void Check_int_message_key_on_viewbag()
+ {
+ _viewResult.ViewBag.Page = 1;
+ Assert.That(_viewResultTest.WithViewBag("Page"), Is.EqualTo(1));
+ }
+
+ [Test]
+ public void Check_wrong_message_member_name_passed_missing_member_message_for_viewbag()
+ {
+ _viewResult.ViewBag.Message = "Hello View Data Message";
+
+ var exception = Assert.Throws(() =>
+ _viewResultTest.WithViewBag("Message2")
+ );
+
+ Assert.That(exception.Message, Is.EqualTo("Member 'ViewBag.Message2' not found."));
+ }
+
+
+ [Test]
+ public void Check_string_message_key_on_viewdata()
+ {
+ _viewResult.ViewData["Message"] = "Hello View Data Message";
+ Assert.That(_viewResultTest.WithViewData("Message"), Is.EqualTo("Hello View Data Message"));
+ }
+
+ [Test]
+ public void Check_int_message_key_on_viewdata()
+ {
+ _viewResult.ViewData["Page"] = 1;
+ Assert.That(_viewResultTest.WithViewData("Page"), Is.EqualTo(1));
+ }
+
+ [Test]
+ public void Check_wrong_message_key_passed_missing_message_key_for_viewdata()
+ {
+ _viewResult.ViewData["Message"] = "Hello View Data Message";
+
+ var exception = Assert.Throws(() =>
+ _viewResultTest.WithViewData("Message2")
+ );
+
+ Assert.That(exception.Message, Is.EqualTo("Exception with ViewData, 'Message2' key not found"));
+ }
+
+ [Test]
+ public void Check_row_count_zero_for_viewdata()
+ {
+ var exception = Assert.Throws(() =>
+ _viewResultTest.WithViewData("Message")
+ );
+
+ Assert.That(exception.Message, Is.EqualTo("Exception with ViewData, 'Message' key not found"));
+ }
+
[Test]
public void Check_the_type_of_model()
{
diff --git a/TestStack.FluentMvcTesting/ControllerExtensions.cs b/TestStack.FluentMvcTesting/ControllerExtensions.cs
index e1c223c..6bbeba3 100644
--- a/TestStack.FluentMvcTesting/ControllerExtensions.cs
+++ b/TestStack.FluentMvcTesting/ControllerExtensions.cs
@@ -1,4 +1,5 @@
-using System;
+//
+using System;
using System.Linq.Expressions;
using System.Web.Mvc;
diff --git a/TestStack.FluentMvcTesting/ControllerResultTest.cs b/TestStack.FluentMvcTesting/ControllerResultTest.cs
index e6b97e2..95fba15 100644
--- a/TestStack.FluentMvcTesting/ControllerResultTest.cs
+++ b/TestStack.FluentMvcTesting/ControllerResultTest.cs
@@ -1,3 +1,4 @@
+//
using System;
using System.Linq.Expressions;
using System.Net;
diff --git a/TestStack.FluentMvcTesting/Exceptions.cs b/TestStack.FluentMvcTesting/Exceptions.cs
index 6230617..56d58e6 100644
--- a/TestStack.FluentMvcTesting/Exceptions.cs
+++ b/TestStack.FluentMvcTesting/Exceptions.cs
@@ -1,4 +1,5 @@
-using System;
+//
+using System;
namespace TestStack.FluentMVCTesting
{
diff --git a/TestStack.FluentMvcTesting/ModelErrorTest.cs b/TestStack.FluentMvcTesting/ModelErrorTest.cs
index b8bc717..3812266 100644
--- a/TestStack.FluentMvcTesting/ModelErrorTest.cs
+++ b/TestStack.FluentMvcTesting/ModelErrorTest.cs
@@ -1,3 +1,4 @@
+//
using System;
using System.Collections.Generic;
using System.Linq;
diff --git a/TestStack.FluentMvcTesting/ModelTest.cs b/TestStack.FluentMvcTesting/ModelTest.cs
index 992ac7c..a25fb7e 100644
--- a/TestStack.FluentMvcTesting/ModelTest.cs
+++ b/TestStack.FluentMvcTesting/ModelTest.cs
@@ -1,3 +1,4 @@
+//
using System;
using System.Linq.Expressions;
using System.Web.Mvc;
diff --git a/TestStack.FluentMvcTesting/TestStack.FluentMVCTesting.csproj b/TestStack.FluentMvcTesting/TestStack.FluentMVCTesting.csproj
index ef5626b..2999c4d 100644
--- a/TestStack.FluentMvcTesting/TestStack.FluentMVCTesting.csproj
+++ b/TestStack.FluentMvcTesting/TestStack.FluentMVCTesting.csproj
@@ -36,6 +36,9 @@
false
+
+ ..\packages\ImpromptuInterface.6.0.6\lib\net40\ImpromptuInterface.dll
+
True
..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
diff --git a/TestStack.FluentMvcTesting/ViewResultTest.cs b/TestStack.FluentMvcTesting/ViewResultTest.cs
index 3f13236..fd42776 100644
--- a/TestStack.FluentMvcTesting/ViewResultTest.cs
+++ b/TestStack.FluentMvcTesting/ViewResultTest.cs
@@ -1,5 +1,10 @@
+//
using System;
+using System.Collections.Generic;
using System.Web.Mvc;
+using System.Linq;
+//
+using ImpromptuInterface;
namespace TestStack.FluentMVCTesting
{
@@ -13,6 +18,33 @@ public ViewResultTest(ViewResultBase viewResult, Controller controller)
_viewResult = viewResult;
_controller = controller;
}
+
+ public TMember WithViewBag(string psMemberName)
+ {
+ TMember member = default(TMember);
+ var target = _viewResult.ViewBag;
+
+ IEnumerable memberNames = Impromptu.GetMemberNames(_viewResult.ViewBag, true);
+ if ( !memberNames.Contains(psMemberName) )
+ throw new MissingMemberException("ViewBag",psMemberName);
+
+ member = Impromptu.InvokeGet(target, psMemberName);
+
+ return member;
+ }
+ public TProperty WithViewData(string psKeyName)
+ {
+ if (_viewResult.ViewData == null || _viewResult.ViewData.Count <= 0 || !_viewResult.ViewData.ContainsKey(psKeyName))
+ throw new KeyNotFoundException(string.Format("Exception with ViewData, '{0}' key not found",psKeyName));
+
+ var target = _viewResult.ViewData;
+ TProperty propertyValue = default(TProperty);
+
+ if (target != null)
+ propertyValue = (TProperty)target[psKeyName];
+
+ return propertyValue;
+ }
public ModelTest WithModel() where TModel : class
{
diff --git a/TestStack.FluentMvcTesting/packages.config b/TestStack.FluentMvcTesting/packages.config
index 8fb83ab..cd28967 100644
--- a/TestStack.FluentMvcTesting/packages.config
+++ b/TestStack.FluentMvcTesting/packages.config
@@ -1,5 +1,6 @@
+