public async Task HomeControllerHomeViewPostRedirectsSuccessfully(HomeOption selectedOption, string expectedRedirectUrl) { // Arrange var fakeSessionStateModel = A.Fake <SessionStateModel <SessionDataModel> >(); var viewModel = new HomeBodyViewModel { SelectedOption = selectedOption, }; var controller = BuildHomeController(MediaTypeNames.Text.Html); if (selectedOption == HomeOption.SendAMessage || selectedOption == HomeOption.Callback) { A.CallTo(() => FakeSessionStateService.GetAsync(A <Guid> .Ignored)).Returns(fakeSessionStateModel); A.CallTo(() => FakeSessionStateService.SaveAsync(A <SessionStateModel <SessionDataModel> > .Ignored)).Returns(HttpStatusCode.OK); } // Act var result = await controller.HomeView(viewModel).ConfigureAwait(false); // Assert if (selectedOption == HomeOption.SendAMessage || selectedOption == HomeOption.Callback) { A.CallTo(() => FakeSessionStateService.GetAsync(A <Guid> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => FakeSessionStateService.SaveAsync(A <SessionStateModel <SessionDataModel> > .Ignored)).MustHaveHappenedOnceExactly(); } var redirectResult = Assert.IsType <RedirectResult>(result); Assert.Equal(expectedRedirectUrl, redirectResult.Url); Assert.False(redirectResult.Permanent); controller.Dispose(); }
public async Task HomeControllerHomeViewPostReturnsSameViewForInvalidModel(HomeOption selectedOption) { // Arrange var viewModel = new HomeBodyViewModel { SelectedOption = selectedOption, }; var controller = BuildHomeController(MediaTypeNames.Text.Html); // Act var result = await controller.HomeView(viewModel).ConfigureAwait(false); // Assert var viewResult = Assert.IsType <ViewResult>(result); _ = Assert.IsAssignableFrom <HomeViewModel>(viewResult.ViewData.Model); controller.Dispose(); }