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();
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 6
0
        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();
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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 }));
        }