public void GetWriterFromViewPage() { // Arrange MockViewUserControl vuc = new MockViewUserControl(); MockViewUserControlContainerPage containerPage = new MockViewUserControlContainerPage(vuc); bool triggered = false; HtmlTextWriter writer = new HtmlTextWriter(System.IO.TextWriter.Null); containerPage.RenderCallback = delegate() { triggered = true; Assert.AreEqual(writer, vuc.Writer); }; // Act & Assert Assert.IsNull(vuc.Writer); containerPage.RenderControl(writer); Assert.IsNull(vuc.Writer); Assert.IsTrue(triggered); }
public void GetWrongGenericViewItemTypeThrows() { // Arrange ViewPage p = new ViewPage(); p.ViewData = new ViewDataDictionary(); p.ViewData["Foo"] = new DummyViewData { MyInt = 123, MyString = "Whatever" }; MockViewUserControl <MyViewData> vuc = new MockViewUserControl <MyViewData>() { ViewDataKey = "FOO" }; vuc.AppRelativeVirtualPath = "~/Foo.aspx"; p.Controls.Add(new Control()); p.Controls[0].Controls.Add(vuc); // Act Assert.Throws <InvalidOperationException>( delegate { var foo = vuc.ViewData.Model.IntProp; }, @"The model item passed into the dictionary is of type 'System.Web.Mvc.Test.ViewUserControlTest+DummyViewData', but this dictionary requires a model item of type 'System.Web.Mvc.Test.ViewUserControlTest+MyViewData'."); }
public void GetWriterFromRegularPageThrows() { // Arrange MockViewUserControl vuc = new MockViewUserControl(); Page containerPage = new Page(); containerPage.Controls.Add(vuc); // Act Assert.Throws<InvalidOperationException>( delegate { HtmlTextWriter writer = vuc.Writer; }, "A ViewUserControl can be used only in pages that derive from ViewPage or ViewPage<TModel>."); }
public void GetWriterFromViewPage() { // Arrange MockViewUserControl vuc = new MockViewUserControl(); MockViewUserControlContainerPage containerPage = new MockViewUserControlContainerPage(vuc); bool triggered = false; HtmlTextWriter writer = new HtmlTextWriter(TextWriter.Null); containerPage.RenderCallback = delegate() { triggered = true; Assert.Equal(writer, vuc.Writer); }; // Act & Assert Assert.Null(vuc.Writer); containerPage.RenderControl(writer); Assert.Null(vuc.Writer); Assert.True(triggered); }
public void GetGenericViewItemType() { // Arrange ViewPage p = new ViewPage(); p.Controls.Add(new Control()); MockViewUserControl<MyViewData> vuc = new MockViewUserControl<MyViewData>() { ViewDataKey = "FOO" }; p.Controls[0].Controls.Add(vuc); p.ViewData = new ViewDataDictionary(); p.ViewData["Foo"] = new MyViewData { IntProp = 123, StringProp = "miao" }; // Act int intProp = vuc.ViewData.Model.IntProp; string stringProp = vuc.ViewData.Model.StringProp; // Assert Assert.Equal(123, intProp); Assert.Equal("miao", stringProp); }
public void GetWrongGenericViewItemTypeThrows() { // Arrange ViewPage p = new ViewPage(); p.ViewData = new ViewDataDictionary(); p.ViewData["Foo"] = new DummyViewData { MyInt = 123, MyString = "Whatever" }; MockViewUserControl<MyViewData> vuc = new MockViewUserControl<MyViewData>() { ViewDataKey = "FOO" }; vuc.AppRelativeVirtualPath = "~/Foo.aspx"; p.Controls.Add(new Control()); p.Controls[0].Controls.Add(vuc); // Act Assert.Throws<InvalidOperationException>( delegate { var foo = vuc.ViewData.Model.IntProp; }, @"The model item passed into the dictionary is of type 'System.Web.Mvc.Test.ViewUserControlTest+DummyViewData', but this dictionary requires a model item of type 'System.Web.Mvc.Test.ViewUserControlTest+MyViewData'."); }
public void GetWriterFromRegularPageThrows() { // Arrange MockViewUserControl vuc = new MockViewUserControl(); Page containerPage = new Page(); containerPage.Controls.Add(vuc); // Act ExceptionHelper.ExpectException<InvalidOperationException>( delegate { HtmlTextWriter writer = vuc.Writer; }, "A ViewUserControl can only be used inside pages that derive from ViewPage or ViewPage<TViewItem>."); }