Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }