public void IndexGetTest(bool validSessionVm, ContactOption?contactOption, bool expectToBeRedirected) { var controller = new ContactAdviserController(fakeApplicationLogger, fakeMapper, fakeWebAppcontext, fakeSessionStorage) { Title = nameof(ContactAdviserController.Title), PersonalInformation = nameof(ContactAdviserController.PersonalInformation), NextPage = nameof(ContactAdviserController.NextPage) }; //Setup fakes if (!validSessionVm) { A.CallTo(() => fakeSessionStorage.Get()).Returns(null); } else { if (contactOption is null) { A.CallTo(() => fakeSessionStorage.Get()).Returns(new ContactUs() { ContactUsOption = new ContactUsOption() }); } else { A.CallTo(() => fakeSessionStorage.Get()).Returns(new ContactUs() { ContactUsOption = new ContactUsOption() { ContactOptionType = (ContactOption)contactOption } }); } } //Act var controllerResult = controller.WithCallTo(contrl => contrl.Index()); //Assert if (expectToBeRedirected) { controllerResult.ShouldRedirectTo(controller.ContactOptionPage); } else { controllerResult.ShouldRenderDefaultView() .WithModel <ContactAdviserViewModel>(vm => { vm.Title.Should().BeEquivalentTo(controller.Title); vm.Hint.Should().BeEquivalentTo(controller.PersonalInformation); }); } A.CallTo(() => fakeSessionStorage.Get()).MustHaveHappened(1, Times.Exactly); }
public void IndexSetDefaultsTest(bool validSessionVm, string title, string personalInformation, string nextPageUrl, string contactOptionPageUrl, string characterLimit) { //Assign var controller = new ContactAdviserController(fakeApplicationLogger, fakeMapper, fakeWebAppcontext, fakeSessionStorage) { Title = title, PersonalInformation = personalInformation, NextPage = nextPageUrl, ContactOptionPage = contactOptionPageUrl, CharacterLimit = characterLimit }; if (!validSessionVm) { A.CallTo(() => fakeSessionStorage.Get()).Returns(null); } else { A.CallTo(() => fakeSessionStorage.Get()).Returns(new ContactUs { ContactUsOption = new ContactUsOption() { ContactOptionType = ContactOption.ContactAdviser } }); } //Act var controllerResult = controller.WithCallTo(contrl => contrl.Index()); //Assert if (validSessionVm) { controllerResult.ShouldRenderDefaultView().WithModel <ContactAdviserViewModel>( vm => { vm.Title.Should().BeEquivalentTo(controller.Title); vm.NextPage.Should().BeEquivalentTo(controller.NextPage); vm.Hint.Should().BeEquivalentTo(controller.PersonalInformation); }); } else { controllerResult.ShouldRedirectTo(controller.ContactOptionPage); } }
public void SubmitTests(bool modelStateValid) { //Assign var postModel = new ContactAdviserViewModel(); A.CallTo(() => fakeSessionStorage.Get()).Returns(new ContactUs()); var controller = new ContactAdviserController(fakeApplicationLogger, fakeMapper, fakeWebAppcontext, fakeSessionStorage) { Title = nameof(ContactAdviserController.Title) }; if (!modelStateValid) { controller.ModelState.AddModelError(nameof(ContactAdviserViewModel.ContactAdviserQuestionType), nameof(ContactAdviserViewModel.Message)); } else { A.CallTo(() => fakeSessionStorage.Save(A <ContactUs> ._)).DoesNothing(); } //Act var controllerResult = controller.WithCallTo(contrl => contrl.Index(postModel)); //Assert if (modelStateValid) { controllerResult.ShouldRedirectTo(controller.NextPage); } else { controllerResult.ShouldRenderDefaultView() .WithModel <ContactAdviserViewModel>() .AndModelError(nameof(ContactAdviserViewModel.ContactAdviserQuestionType)); } }