public async Task HowCanWeHelpControllerBodyPostReturnsSuccessForValidCategories(Category selectedCategory) { // Arrange string moreDetail = $"Some {selectedCategory} details"; string expectedRedirectUrl = $"/{RegistrationPath}/{EnterYourDetailsController.ThisViewCanonicalName}"; var fakeSessionStateModel = A.Fake <SessionStateModel <SessionDataModel> >(); var viewModel = new HowCanWeHelpBodyViewModel { SelectedCategory = selectedCategory, MoreDetail = moreDetail, }; var controller = BuildHowCanWeHelpController(MediaTypeNames.Text.Html); 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.HowCanWeHelpBody(viewModel).ConfigureAwait(false); // Assert 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 <IActionResult> HowCanWeHelpBody() { var sessionStateModel = await GetSessionStateAsync().ConfigureAwait(false); var viewModel = new HowCanWeHelpBodyViewModel { SelectedCategory = sessionStateModel?.State?.Category ?? Category.None, MoreDetail = sessionStateModel?.State?.MoreDetail, IsCallback = sessionStateModel?.State?.IsCallback ?? false, }; Logger.LogInformation($"{nameof(HowCanWeHelpBody)} has returned content"); return(this.NegotiateContentResult(viewModel)); }
public void HowCanWeHelpBodyViewModelValidationReturnsSuccessForValidModel() { // Arrange var viewModel = new HowCanWeHelpBodyViewModel { SelectedCategory = Category.Website, MoreDetail = "some more details", }; // Act var(isValid, validationResults) = ModelValidator.TryValidateModel(viewModel); // Assert Assert.True(isValid); Assert.True(validationResults.Count == 0); }
public void HowCanWeHelpBodyViewModelValidationReturnsErrorForMoreDetailTooLong() { // Arrange var viewModel = new HowCanWeHelpBodyViewModel { SelectedCategory = Category.Website, MoreDetail = string.Empty.PadLeft(1001, '-'), }; // Act var(isValid, validationResults) = ModelValidator.TryValidateModel(viewModel); // Assert Assert.False(isValid); Assert.True(validationResults.Count > 0); Assert.NotNull(validationResults.First(f => f.MemberNames.Any(a => a == nameof(HowCanWeHelpBodyViewModel.MoreDetail)))); Assert.Equal("Message is limited to between 1 and 1000 characters", validationResults.First(f => f.MemberNames.Any(a => a == nameof(HowCanWeHelpBodyViewModel.MoreDetail))).ErrorMessage); }
public void HowCanWeHelpBodyViewModelValidationReturnsErrorForMoreDetailMissing() { // Arrange var viewModel = new HowCanWeHelpBodyViewModel { SelectedCategory = Category.Website, MoreDetail = null, }; // Act var(isValid, validationResults) = ModelValidator.TryValidateModel(viewModel); // Assert Assert.False(isValid); Assert.True(validationResults.Count > 0); Assert.NotNull(validationResults.First(f => f.MemberNames.Any(a => a == nameof(HowCanWeHelpBodyViewModel.MoreDetail)))); Assert.Equal(HowCanWeHelpBodyViewModel.MoreDetailRequiredError, validationResults.First(f => f.MemberNames.Any(a => a == nameof(HowCanWeHelpBodyViewModel.MoreDetail))).ErrorMessage); }
public void HowCanWeHelpBodyViewModelValidationReturnsErrorForCategoryInvalid() { // Arrange var viewModel = new HowCanWeHelpBodyViewModel { SelectedCategory = Category.None, MoreDetail = "some more details", }; // Act var(isValid, validationResults) = ModelValidator.TryValidateModel(viewModel); // Assert Assert.False(isValid); Assert.True(validationResults.Count > 0); Assert.NotNull(validationResults.First(f => f.MemberNames.Any(a => a == nameof(HowCanWeHelpBodyViewModel.SelectedCategory)))); Assert.Equal(HowCanWeHelpBodyViewModel.SelectedCategoryValidationError, validationResults.First(f => f.MemberNames.Any(a => a == nameof(HowCanWeHelpBodyViewModel.SelectedCategory))).ErrorMessage); }
public async Task HowCanWeHelpControllerBodyPostReturnsSameViewForInvalidModel() { // Arrange var viewModel = new HowCanWeHelpBodyViewModel(); var controller = BuildHowCanWeHelpController(MediaTypeNames.Text.Html); controller.ModelState.AddModelError(nameof(HowCanWeHelpBodyViewModel.SelectedCategory), "Fake error"); // Act var result = await controller.HowCanWeHelpBody(viewModel).ConfigureAwait(false); // Assert var viewResult = Assert.IsType <ViewResult>(result); _ = Assert.IsAssignableFrom <HowCanWeHelpBodyViewModel>(viewResult.ViewData.Model); controller.Dispose(); }
public async Task HowCanWeHelpControllerBodyPostReturnsNotAcceptable(string mediaTypeName) { // Arrange var viewModel = new HowCanWeHelpBodyViewModel { SelectedCategory = Category.None, }; var controller = BuildHowCanWeHelpController(mediaTypeName); // Act var result = await controller.HowCanWeHelpBody(viewModel).ConfigureAwait(false); // Assert var statusResult = Assert.IsType <StatusCodeResult>(result); A.Equals((int)HttpStatusCode.NotAcceptable, statusResult.StatusCode); controller.Dispose(); }
public async Task HowCanWeHelpControllerBodyPostReturnsSameViewForInvalidCategory(Category selectedCategory) { // Arrange var viewModel = new HowCanWeHelpBodyViewModel { SelectedCategory = selectedCategory, MoreDetail = "some more detail", }; var controller = BuildHowCanWeHelpController(MediaTypeNames.Text.Html); // Act var result = await controller.HowCanWeHelpBody(viewModel).ConfigureAwait(false); // Assert var viewResult = Assert.IsType <ViewResult>(result); var model = Assert.IsAssignableFrom <HowCanWeHelpBodyViewModel>(viewResult.ViewData.Model); model.SelectedCategory.Should().Be(selectedCategory); controller.Dispose(); }