public void TestCourseLengthOneYearCopyFrom_CourseFeesEnrichmentViewModel() { var viewModel = new CourseFeesEnrichmentViewModel(); var enrichmentModel = new CourseEnrichmentModel { CourseLength = "OneYear" }; viewModel.CopyFrom(enrichmentModel); viewModel.CourseLength.Should().Be(CourseLength.OneYear); viewModel.CourseLengthInput.Should().BeNullOrEmpty(); }
public async Task FeesPost() { var manageApi = new Mock <IManageApi>(); var viewModel = new CourseFeesEnrichmentViewModel { FeeUkEu = 123, FeeInternational = 543, FeeDetails = "FeeDetails", CourseLength = CourseLength.TwoYears, FinancialSupport = "FinancialSupport" }; var enrichmentModel = new CourseEnrichmentModel { FeeUkEu = 123.45m, FeeInternational = 543.21m, FeeDetails = "FeeDetails", CourseLength = null, FinancialSupport = "FinancialSupport" }; 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.FeesPost(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 TestCourseLengthMapIntoForSelection_CourseFeesEnrichmentViewModel(string courseLengthOther) { var viewModel = new CourseFeesEnrichmentViewModel() { CourseLength = CourseLength.OneYear, CourseLengthInput = courseLengthOther }; var enrichmentModel = new CourseEnrichmentModel(); viewModel.MapInto(ref enrichmentModel); enrichmentModel.CourseLength.Should().BeEquivalentTo("OneYear"); }
public void TestCourseLengthCopyFromForOtherTextEntry_CourseFeesEnrichmentViewModel() { const string textEnteredByUser = "******"; var viewModel = new CourseFeesEnrichmentViewModel(); var enrichmentModel = new CourseEnrichmentModel { CourseLength = textEnteredByUser }; viewModel.CopyFrom(enrichmentModel); viewModel.CourseLength.Should().Be(CourseLength.Other); viewModel.CourseLengthInput.Should().BeEquivalentTo(textEnteredByUser); }
public void TestCourseLengthMapIntoForOtherTextEntry_CourseFeesEnrichmentViewModel() { const string TextEnteredByUser = "******"; var viewModel = new CourseFeesEnrichmentViewModel { CourseLength = CourseLength.Other, CourseLengthInput = TextEnteredByUser }; var enrichmentModel = new CourseEnrichmentModel(); viewModel.MapInto(ref enrichmentModel); enrichmentModel.CourseLength.Should().BeEquivalentTo(TextEnteredByUser); }
public void CourseFeesEnrichmentViewModel_CopyFrom() { var viewModel = new CourseFeesEnrichmentViewModel { FeeInternational = 123, FinancialSupport = null // also empty }; CourseEnrichmentModel model = GetAnEnrichmentModel(); viewModel.CopyFrom(model); viewModel.CourseLength.Should().Be(CourseLength.OneYear); viewModel.FeeUkEu.Should().Be(321); viewModel.FeeInternational.Should().Be(123); viewModel.FeeDetails.Should().Be("M.FeeDetails"); viewModel.FinancialSupport.Should().BeNull(); }
public async Task FeesPost_Invalid() { var manageApi = new Mock <IManageApi>(); var viewModel = new CourseFeesEnrichmentViewModel { FeeUkEu = 123, FeeInternational = 543, FeeDetails = "FeeDetails", CourseLength = CourseLength.OneYear, FinancialSupport = "FinancialSupport" }; 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.FeesPost(TestHelper.ProviderCode, TestHelper.AccreditingProviderCode, TestHelper.TargetedProviderCode, viewModel); var viewResult = result as ViewResult; Assert.IsNotNull(viewResult); Assert.AreEqual("Fees", viewResult.ViewName); var model = viewResult.Model as CourseFeesEnrichmentViewModel; Assert.IsNotNull(model); Assert.AreEqual(TestHelper.ProviderCode, model.RouteData.ProviderCode); Assert.AreEqual(TestHelper.TargetedProviderCode, model.RouteData.CourseCode); Assert.AreEqual(viewModel.CourseLength, model.CourseLength); Assert.AreEqual(viewModel.FeeDetails, model.FeeDetails); Assert.AreEqual(viewModel.FeeInternational, model.FeeInternational); Assert.AreEqual(viewModel.FeeUkEu, model.FeeUkEu); Assert.AreEqual(viewModel.FinancialSupport, model.FinancialSupport); }
public async Task <IActionResult> FeesPost(string providerCode, string accreditingProviderCode, string courseCode, CourseFeesEnrichmentViewModel viewModel) { if (!ModelState.IsValid) { var routeData = GetCourseRouteDataViewModel(providerCode, courseCode); var courseDetails = await _manageApi.GetCourse(providerCode, courseCode); var courseInfo = new CourseInfoViewModel { ProgrammeCode = courseDetails.CourseCode, Name = courseDetails.Name }; viewModel.RouteData = routeData; viewModel.CourseInfo = courseInfo; await LoadCopyableCoursesIntoViewBag(providerCode, courseCode); return(View("Fees", viewModel)); } if (await SaveEnrichment(providerCode, courseCode, viewModel)) { CourseSavedMessage(); } return(RedirectToAction("Show", new { providerCode = providerCode, accreditingProviderCode = accreditingProviderCode, courseCode })); }