public async Task <IActionResult> Index(RegisterInterestModel registerInterest) { if (!ModelState.IsValid) { registerInterest.ShowRouteQuestion = this.RouteData.Values.ContainsKey("route") == false; return(View("Index", registerInterest)); } try { await _userDataCollection.StoreUserData(new UserData { FirstName = registerInterest.FirstName, LastName = registerInterest.LastName, Email = registerInterest.Email, CookieId = !string.IsNullOrEmpty(HttpContext.Request.Cookies["_ga"]) ? HttpContext.Request.Cookies["_ga"] : "not-available", RouteId = ((int)registerInterest.Route).ToString(), Consent = true, IncludeInUR = registerInterest.IncludeInUR }); } catch (ValidationException e) { foreach (var member in e.ValidationResult.MemberNames) { ModelState.AddModelError(member.Split('|')[0], member.Split('|')[1]); } return(View(registerInterest)); } return(RedirectToAction("ThankYouForRegistering")); }
public void Arrange() { _registerInterestModel = new RegisterInterestModel { Email = "*****@*****.**", FirstName = "Test", Route = RouteType.Apprentice, LastName = "test", ShowRouteQuestion = false }; _mediator = new Mock <IMediator>(); _mediator.SetupMockMediator(); _userDataCollection = new Mock <IUserDataCollection>(); var headers = new HeaderDictionary(new Dictionary <string, StringValues> { { "Referer", ExpectedReferrerUrl } }); _httpContext = new Mock <HttpContext>(); _httpContext.Setup(x => x.Request.Cookies["_ga"]).Returns(ExpectedCookieId); _httpContext.Setup(x => x.Request.Headers).Returns(headers); _httpContext.Setup(x => x.Request.Path).Returns("/"); var mockUrlHelper = new Mock <IUrlHelper>(MockBehavior.Strict); mockUrlHelper .Setup(m => m.Action(It.IsAny <UrlActionContext>())) .Returns(ExpectedDefaultUrl).Verifiable(); _controller = new RegisterInterestController(_userDataCollection.Object, _mediator.Object) { Url = mockUrlHelper.Object, ControllerContext = { HttpContext = _httpContext.Object, ActionDescriptor = new ControllerActionDescriptor { ControllerName = "register-interest" }, RouteData = new RouteData() } }; }