public async Task EnterYourDetailsControllerViewPostReturnsSuccessForMissingRouting() { // Arrange const bool expectedSendEmailResult = true; RoutingDetailModel?expectedRoutingDetailModel = null; string expectedRedirectUrl = $"/{PagesController.LocalPath}/{HomeController.ThankyouForContactingUsCanonicalName}"; var viewModel = ValidModelBuilders.BuildValidEnterYourDetailsBodyViewModel(); var controller = BuildEnterYourDetailsController(MediaTypeNames.Text.Html); A.CallTo(() => FakeRoutingService.GetEmailToSendTo(A <string> .Ignored, A <Category> .Ignored)).Returns(A.Dummy <string>()); A.CallTo(() => FakeMapper.Map <ContactUsEmailRequestModel>(A <EnterYourDetailsBodyViewModel> .Ignored)).Returns(A.Fake <ContactUsEmailRequestModel>()); A.CallTo(() => FakeNotifyEmailService.SendEmailAsync(A <ContactUsEmailRequestModel> .Ignored)).Returns(expectedSendEmailResult); // Act var result = await controller.EnterYourDetailsView(viewModel).ConfigureAwait(false); // Assert A.CallTo(() => FakeRoutingService.GetEmailToSendTo(A <string> .Ignored, A <Category> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => FakeMapper.Map <ContactUsEmailRequestModel>(A <EnterYourDetailsBodyViewModel> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => FakeNotifyEmailService.SendEmailAsync(A <ContactUsEmailRequestModel> .Ignored)).MustHaveHappenedOnceExactly(); var redirectResult = Assert.IsType <RedirectResult>(result); Assert.Equal(expectedRedirectUrl, redirectResult.Url); Assert.False(redirectResult.Permanent); controller.Dispose(); }
public async Task SessionStateDeleteWithValidSessionIdHeaderReturnsSuccessForCallback() { // Arrange const bool expectedSendEmailResult = true; string expectedRedirectUrl = $"/{RegistrationPath}/{HomeController.ThankyouForContactingUsCanonicalName}"; var viewModel = ValidModelBuilders.BuildValidEnterYourDetailsBodyViewModel(); var controller = BuildEnterYourDetailsController(MediaTypeNames.Text.Html); controller.Request.Headers.Add(ConstantStrings.CompositeSessionIdHeaderName, Guid.NewGuid().ToString()); A.CallTo(() => fakeRoutingService.GetEmailToSendTo(A <string> .Ignored, A <Category> .Ignored)).Returns(A.Dummy <string>()); A.CallTo(() => fakeMapper.Map <ContactUsEmailRequestModel>(A <EnterYourDetailsBodyViewModel> .Ignored)).Returns(A.Fake <ContactUsEmailRequestModel>()); A.CallTo(() => fakeNotifyEmailService.SendEmailAsync(A <ContactUsEmailRequestModel> .Ignored)).Returns(expectedSendEmailResult); A.CallTo(() => fakeSessionStateService.DeleteAsync(A <Guid> .Ignored)).Returns(true); // Act var result = await controller.EnterYourDetailsBody(viewModel).ConfigureAwait(false); // Assert A.CallTo(() => fakeRoutingService.GetEmailToSendTo(A <string> .Ignored, A <Category> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeMapper.Map <ContactUsEmailRequestModel>(A <EnterYourDetailsBodyViewModel> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeNotifyEmailService.SendEmailAsync(A <ContactUsEmailRequestModel> .Ignored)).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeSessionStateService.DeleteAsync(A <Guid> .Ignored)).MustHaveHappenedOnceExactly(); var redirectResult = Assert.IsType <RedirectResult>(result); Assert.Equal(expectedRedirectUrl, redirectResult.Url); Assert.False(redirectResult.Permanent); controller.Dispose(); }
public void EnterYourDetailsBodyViewModelValidationReturnsSuccessForValidModel() { // Arrange var viewModel = ValidModelBuilders.BuildValidEnterYourDetailsBodyViewModel(); // Act var(isValid, validationResults) = ModelValidator.TryValidateModel(viewModel); // Assert Assert.True(isValid); Assert.True(validationResults.Count == 0); }
public void EnterYourDetailsBodyViewModelValidationReturnsSuccessCallbackValid() { // Arrange var viewModel = ValidModelBuilders.BuildValidEnterYourDetailsBodyViewModel(); viewModel.CallbackDateOptionSelected = CallbackDateOption.TodayPlus1; viewModel.CallbackTimeOptionSelected = CallbackTimeOption.Band3; // Act var(isValid, validationResults) = ModelValidator.TryValidateModel(viewModel); // Assert Assert.True(isValid); Assert.True(validationResults.Count == 0); }
public void EnterYourDetailsBodyViewModelValidationReturnsErrorForTermsAndConditionsAcceptedInvalid() { // Arrange var viewModel = ValidModelBuilders.BuildValidEnterYourDetailsBodyViewModel(); viewModel.TermsAndConditionsAccepted = false; // Act var(isValid, validationResults) = ModelValidator.TryValidateModel(viewModel); // Assert Assert.False(isValid); Assert.True(validationResults.Count > 0); Assert.NotNull(validationResults.First(f => f.ErrorMessage.Contains("You must accept our", StringComparison.Ordinal))); }
public void EnterYourDetailsBodyViewModelValidationReturnsErrorForLastNameInvalid(string lastName) { // Arrange var viewModel = ValidModelBuilders.BuildValidEnterYourDetailsBodyViewModel(); viewModel.LastName = lastName; // 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(EnterYourDetailsBodyViewModel.LastName)))); Assert.Contains("contains invalid characters", validationResults.First(f => f.MemberNames.Any(a => a == nameof(EnterYourDetailsBodyViewModel.LastName))).ErrorMessage, StringComparison.Ordinal); }
public void EnterYourDetailsBodyViewModelValidationReturnsErrorForLastNameTooLong() { // Arrange var viewModel = ValidModelBuilders.BuildValidEnterYourDetailsBodyViewModel(); viewModel.LastName = string.Empty.PadLeft(101, 'a'); // 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(EnterYourDetailsBodyViewModel.LastName)))); Assert.Contains("is limited to between 1 and", validationResults.First(f => f.MemberNames.Any(a => a == nameof(EnterYourDetailsBodyViewModel.LastName))).ErrorMessage, StringComparison.Ordinal); }
public void EnterYourDetailsBodyViewModelValidationReturnsErrorForTelephoneNumberInvalid(string telephoneNumber) { // Arrange var viewModel = ValidModelBuilders.BuildValidEnterYourDetailsBodyViewModel(); viewModel.TelephoneNumber = telephoneNumber; // 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(EnterYourDetailsBodyViewModel.TelephoneNumber)))); Assert.Contains("requires numbers only", validationResults.First(f => f.MemberNames.Any(a => a == nameof(EnterYourDetailsBodyViewModel.TelephoneNumber))).ErrorMessage, StringComparison.Ordinal); }
public void EnterYourDetailsBodyViewModelValidationReturnsErrorForDateOfBirthNotOver13YearsAgo() { // Arrange var viewModel = ValidModelBuilders.BuildValidEnterYourDetailsBodyViewModel(); viewModel.DateOfBirth = new DateOfBirthViewModel(DateTime.Today.AddYears(-13).AddDays(1)); // 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(EnterYourDetailsBodyViewModel.DateOfBirth.Year)))); Assert.Contains("You must be over 13 to use this service", validationResults.First(f => f.MemberNames.Any(a => a == nameof(EnterYourDetailsBodyViewModel.DateOfBirth.Year))).ErrorMessage, StringComparison.Ordinal); }
public void EnterYourDetailsBodyViewModelValidationReturnsErrorForDateOfBirthMissing() { // Arrange var viewModel = ValidModelBuilders.BuildValidEnterYourDetailsBodyViewModel(); viewModel.DateOfBirth = new DateOfBirthViewModel(); // 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(EnterYourDetailsBodyViewModel.DateOfBirth)))); Assert.Contains("Enter your date of birth", validationResults.First(f => f.MemberNames.Any(a => a == nameof(EnterYourDetailsBodyViewModel.DateOfBirth))).ErrorMessage, StringComparison.Ordinal); }
public void EnterYourDetailsBodyViewModelValidationReturnsErrorForEmailAddressInvalid(string emailAddress) { // Arrange var viewModel = ValidModelBuilders.BuildValidEnterYourDetailsBodyViewModel(); viewModel.EmailAddress = emailAddress; // 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(EnterYourDetailsBodyViewModel.EmailAddress)))); Assert.Contains("Enter an email address in the correct format", validationResults.First(f => f.MemberNames.Any(a => a == nameof(EnterYourDetailsBodyViewModel.EmailAddress))).ErrorMessage, StringComparison.Ordinal); }
public void EnterYourDetailsBodyViewModelValidationReturnsErrorForCallbackTimeMissing() { // Arrange var viewModel = ValidModelBuilders.BuildValidEnterYourDetailsBodyViewModel(); viewModel.CallbackDateOptionSelected = CallbackDateOption.TodayPlus1; viewModel.CallbackTimeOptionSelected = 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(EnterYourDetailsBodyViewModel.CallbackTimeOptionSelected)))); Assert.Equal(EnterYourDetailsBodyViewModel.CallbackTimeOptionValidationError, validationResults.First(f => f.MemberNames.Any(a => a == nameof(EnterYourDetailsBodyViewModel.CallbackTimeOptionSelected))).ErrorMessage); }
public void EnterYourDetailsBodyViewModelValidationReturnsSuccessCallbackNotRequired() { // Arrange var viewModel = ValidModelBuilders.BuildValidEnterYourDetailsBodyViewModel(); viewModel.CallbackDateOptionSelected = null; viewModel.CallbackTimeOptionSelected = null; viewModel.SelectedCategory = Category.AdviceGuidance; viewModel.IsCallback = false; // Act var(isValid, validationResults) = ModelValidator.TryValidateModel(viewModel); // Assert Assert.True(isValid); Assert.True(validationResults.Count == 0); }
public async Task SessionStateDeleteWithMissingSessionIdHeaderReturnsSuccessForCallback() { // Arrange var viewModel = ValidModelBuilders.BuildValidEnterYourDetailsBodyViewModel(); var controller = BuildEnterYourDetailsController(MediaTypeNames.Text.Html); // Act var result = await controller.EnterYourDetailsBody(viewModel).ConfigureAwait(false); // Assert A.CallTo(() => fakeSessionStateService.DeleteAsync(A <Guid> .Ignored)).MustNotHaveHappened(); var viewResult = Assert.IsType <ViewResult>(result); _ = Assert.IsAssignableFrom <EnterYourDetailsBodyViewModel>(viewResult.ViewData.Model); controller.Dispose(); }
public void EnterYourDetailsBodyViewModelValidationReturnsErrorForEmailAddressMissing() { // Arrange var viewModel = ValidModelBuilders.BuildValidEnterYourDetailsBodyViewModel(); viewModel.SelectedCategory = Category.Other; viewModel.IsCallback = false; viewModel.EmailAddress = 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(EnterYourDetailsBodyViewModel.EmailAddress)))); Assert.Contains("Enter your", validationResults.First(f => f.MemberNames.Any(a => a == nameof(EnterYourDetailsBodyViewModel.EmailAddress))).ErrorMessage, StringComparison.Ordinal); }