public async Task AboutPost() { var manageApi = new Mock <IManageApi>(); var viewModel = new AboutCourseEnrichmentViewModel { AboutCourse = "AboutCourse", InterviewProcess = "InterviewProcess", HowSchoolPlacementsWork = "HowSchoolPlacementsWork" }; var enrichmentModel = new CourseEnrichmentModel { AboutCourse = "", InterviewProcess = "", HowSchoolPlacementsWork = "" }; var ucasCourseEnrichmentGetModel = new UcasCourseEnrichmentGetModel { EnrichmentModel = enrichmentModel }; manageApi.Setup(x => x.GetCourseEnrichment(TestHelper.ProviderCode, TestHelper.TargetedProviderCode)).ReturnsAsync(ucasCourseEnrichmentGetModel); var tempDataMock = new Mock <ITempDataDictionary>(); var urlHelperMock = new Mock <IUrlHelper>(); var previewLink = "preview-link"; Expression <Func <IUrlHelper, string> > urlSetup = url => url.Action(It.Is <UrlActionContext>(uac => uac.Action == "Preview")); urlHelperMock.Setup(urlSetup).Returns(previewLink); var frontendUrlMock = new Mock <IFrontendUrlService>(); var controller = new CourseController(manageApi.Object, new SearchAndCompareUrlService("http://www.example.com"), frontendUrlMock.Object); controller.TempData = tempDataMock.Object; controller.Url = urlHelperMock.Object; var result = await controller.AboutPost(TestHelper.ProviderCode, TestHelper.AccreditingProviderCode, TestHelper.TargetedProviderCode, viewModel); var redirectToActionResult = result as RedirectToActionResult; Assert.IsNotNull(redirectToActionResult); Assert.AreEqual("Show", redirectToActionResult.ActionName); var tempData = controller.TempData; VerifyTempDataIsSet(tempDataMock, previewLink); var routeValues = redirectToActionResult.RouteValues; Assert.AreEqual(TestHelper.ProviderCode, routeValues["providerCode"]); Assert.AreEqual(TestHelper.AccreditingProviderCode, routeValues["accreditingProviderCode"]); Assert.AreEqual(TestHelper.TargetedProviderCode, routeValues["courseCode"]); manageApi.Verify(x => x.SaveCourseEnrichment(TestHelper.ProviderCode, TestHelper.TargetedProviderCode, It.Is <CourseEnrichmentModel>(c => Check(c, viewModel))), Times.Once()); }
public void AboutCourseEnrichmentViewModel_CopyFrom() { var viewModel = new AboutCourseEnrichmentViewModel { AboutCourse = "VM.AboutCourse", InterviewProcess = "VM.InterviewProcess", HowSchoolPlacementsWork = "VM.HowSchoolPlacementsWork" }; CourseEnrichmentModel model = GetAnEnrichmentModel(); viewModel.CopyFrom(model); viewModel.AboutCourse.Should().Be("M.AboutCourse"); viewModel.InterviewProcess.Should().Be("VM.InterviewProcess"); viewModel.HowSchoolPlacementsWork.Should().Be("M.HowSchoolPlacementsWork"); }
public async Task AboutPost_Invalid() { var manageApi = new Mock <IManageApi>(); var viewModel = new AboutCourseEnrichmentViewModel { AboutCourse = "AboutCourse", InterviewProcess = "InterviewProcess", HowSchoolPlacementsWork = "HowSchoolPlacementsWork" }; var testCourse = new Course() { Name = "Name", CourseCode = "CourseCode" }; manageApi.Setup(x => x.GetCourse(TestHelper.ProviderCode, TestHelper.TargetedProviderCode)).ReturnsAsync(testCourse); var frontendUrlMock = new Mock <IFrontendUrlService>(); var controller = new CourseController(manageApi.Object, new SearchAndCompareUrlService("http://www.example.com"), frontendUrlMock.Object); controller.ModelState.AddModelError("you", "failed"); var result = await controller.AboutPost(TestHelper.ProviderCode, TestHelper.AccreditingProviderCode, TestHelper.TargetedProviderCode, viewModel); var viewResult = result as ViewResult; Assert.IsNotNull(viewResult); Assert.AreEqual("About", viewResult.ViewName); var model = viewResult.Model as AboutCourseEnrichmentViewModel; Assert.IsNotNull(model); Assert.AreEqual(TestHelper.ProviderCode, model.RouteData.ProviderCode); Assert.AreEqual(TestHelper.TargetedProviderCode, model.RouteData.CourseCode); Assert.AreEqual(viewModel.AboutCourse, model.AboutCourse); Assert.AreEqual(viewModel.InterviewProcess, model.InterviewProcess); Assert.AreEqual(viewModel.HowSchoolPlacementsWork, model.HowSchoolPlacementsWork); }
public async Task <IActionResult> AboutPost(string providerCode, string accreditingProviderCode, string courseCode, AboutCourseEnrichmentViewModel viewModel) { if (!ModelState.IsValid) { var courseDetails = await _manageApi.GetCourse(providerCode, courseCode); var courseInfo = new CourseInfoViewModel { ProgrammeCode = courseDetails.CourseCode, Name = courseDetails.Name }; var routeData = GetCourseRouteDataViewModel(providerCode, courseCode); viewModel.RouteData = routeData; viewModel.CourseInfo = courseInfo; await LoadCopyableCoursesIntoViewBag(providerCode, courseCode); return(View("About", viewModel)); } if (await SaveEnrichment(providerCode, courseCode, viewModel)) { CourseSavedMessage(); } return(RedirectToAction("Show", new { providerCode = providerCode, accreditingProviderCode = accreditingProviderCode, courseCode })); }