Exemplo n.º 1
0
        public void ShowPublish()
        {
            var enrichmentModel = new CourseEnrichmentModel
            {
                AboutCourse             = "AboutCourse",
                InterviewProcess        = "InterviewProcess",
                HowSchoolPlacementsWork = "HowSchoolPlacementsWork"
            };

            var ucasCourseEnrichmentGetModel = new UcasCourseEnrichmentGetModel {
                EnrichmentModel = enrichmentModel
            };

            var mockApi = new Mock <IManageApi>();

            mockApi.Setup(x => x.GetCourseEnrichment(TestHelper.ProviderCode, TestHelper.TargetedProviderCode)).ReturnsAsync(ucasCourseEnrichmentGetModel).Verifiable();
            mockApi.Setup(x => x.PublishCourseToSearchAndCompare(TestHelper.ProviderCode, TestHelper.TargetedProviderCode)).ReturnsAsync(true).Verifiable();

            mockApi.Setup(x => x.GetCourse(TestHelper.ProviderCode, TestHelper.TargetedProviderCode)).ReturnsAsync(new Course {
                ProgramType = "", Provider = new GovUk.Education.ManageCourses.Domain.Models.Provider()
            }).Verifiable();

            var objectValidator = new Mock <IObjectModelValidator>();
            BaseCourseEnrichmentViewModel objectToVerify = null;

            objectValidator.Setup(o => o.Validate(It.IsAny <ActionContext>(),
                                                  It.IsAny <ValidationStateDictionary>(),
                                                  It.IsAny <string>(),
                                                  It.IsAny <Object>()))
            .Callback <ActionContext, ValidationStateDictionary, string, Object>((a, b, c, d) =>
            {
                objectToVerify = d as BaseCourseEnrichmentViewModel;
            })
            .Verifiable();

            var frontendUrlMock  = new Mock <IFrontendUrlService>();
            var courseController = new CourseController(mockApi.Object, new Mock <ISearchAndCompareUrlService>().Object, frontendUrlMock.Object);

            courseController.ObjectValidator = objectValidator.Object;
            courseController.TempData        = new TempDataDictionary(new DefaultHttpContext(), Mock.Of <ITempDataProvider>());

            var res = courseController.ShowPublish(TestHelper.ProviderCode, "def", TestHelper.TargetedProviderCode).Result;

            mockApi.VerifyAll();
            objectValidator.VerifyAll();

            Assert.AreEqual("success", courseController.TempData["MessageType"]);
            Assert.AreEqual("Your course has been published", courseController.TempData["MessageTitle"]);

            Assert.IsNotNull(objectToVerify);
            Assert.AreEqual("AboutCourse", objectToVerify.AboutCourse);
            Assert.AreEqual("InterviewProcess", objectToVerify.InterviewProcess);
            Assert.AreEqual("HowSchoolPlacementsWork", objectToVerify.HowSchoolPlacementsWork);
        }
Exemplo 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());
        }
Exemplo n.º 3
0
        public async Task RequirementsPost()
        {
            var manageApi = new Mock <IManageApi>();

            var viewModel = new CourseRequirementsEnrichmentViewModel {
                Qualifications = "Qualifications", PersonalQualities = "PersonalQualities", OtherRequirements = "OtherRequirements"
            };

            var enrichmentModel = new CourseEnrichmentModel {
                Qualifications = "", PersonalQualities = "", OtherRequirements = ""
            };
            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.RequirementsPost(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());
        }
Exemplo n.º 4
0
        private static BaseCourseEnrichmentViewModel GetCourseEnrichmentViewModel(UcasCourseEnrichmentGetModel ucasCourseEnrichmentGetModel, bool isSalary, CourseRouteDataViewModel routeData = null)
        {
            BaseCourseEnrichmentViewModel result = null;

            ucasCourseEnrichmentGetModel = ucasCourseEnrichmentGetModel ?? new UcasCourseEnrichmentGetModel();

            var enrichmentModel = ucasCourseEnrichmentGetModel?.EnrichmentModel ?? new CourseEnrichmentModel();

            if (isSalary)
            {
                result = new SalaryBasedCourseEnrichmentViewModel()
                {
                    AboutCourse             = enrichmentModel.AboutCourse,
                    InterviewProcess        = enrichmentModel.InterviewProcess,
                    HowSchoolPlacementsWork = enrichmentModel.HowSchoolPlacementsWork,
                    Qualifications          = enrichmentModel.Qualifications,
                    PersonalQualities       = enrichmentModel.PersonalQualities,
                    OtherRequirements       = enrichmentModel.OtherRequirements,
                    CourseLength            = enrichmentModel.CourseLength.GetCourseLength(),
                    CourseLengthInput       = enrichmentModel.CourseLength.GetCourseLengthInput(),
                    SalaryDetails           = enrichmentModel.SalaryDetails,
                    DraftLastUpdatedUtc     = ucasCourseEnrichmentGetModel.UpdatedTimestampUtc,
                    LastPublishedUtc        = ucasCourseEnrichmentGetModel.LastPublishedTimestampUtc,
                    RouteData = routeData
                };
            }
            else
            {
                result = new FeeBasedCourseEnrichmentViewModel()
                {
                    AboutCourse             = enrichmentModel.AboutCourse,
                    InterviewProcess        = enrichmentModel.InterviewProcess,
                    HowSchoolPlacementsWork = enrichmentModel.HowSchoolPlacementsWork,
                    Qualifications          = enrichmentModel.Qualifications,
                    PersonalQualities       = enrichmentModel.PersonalQualities,
                    OtherRequirements       = enrichmentModel.OtherRequirements,
                    CourseLength            = enrichmentModel.CourseLength.GetCourseLength(),
                    CourseLengthInput       = enrichmentModel.CourseLength.GetCourseLengthInput(),
                    FeeUkEu             = enrichmentModel.FeeUkEu.GetFeeValue(),
                    FeeInternational    = enrichmentModel.FeeInternational.GetFeeValue(),
                    FeeDetails          = enrichmentModel.FeeDetails,
                    FinancialSupport    = enrichmentModel.FinancialSupport,
                    DraftLastUpdatedUtc = ucasCourseEnrichmentGetModel.UpdatedTimestampUtc,
                    LastPublishedUtc    = ucasCourseEnrichmentGetModel.LastPublishedTimestampUtc,
                    RouteData           = routeData
                };
            }

            return(result);
        }
        /// <summary>
        /// maps enrichment data from the data object to the returned enrichment model
        /// </summary>
        /// <param name="source">enrichment data object</param>
        /// <returns>enrichment model with enrichment data (if found). Null if there is no source record</returns>
        public UcasCourseEnrichmentGetModel Convert(CourseEnrichment source)
        {
            if (source == null)
            {
                return(null);
            }

            var enrichmentToReturn = new UcasCourseEnrichmentGetModel();
            var enrichmentModel    = source.JsonData != null?JsonConvert.DeserializeObject <CourseEnrichmentModel>(source.JsonData, _jsonSerializerSettings) : null;

            enrichmentToReturn.EnrichmentModel           = enrichmentModel;
            enrichmentToReturn.CreatedTimestampUtc       = source.CreatedAt;
            enrichmentToReturn.UpdatedTimestampUtc       = source.UpdatedAt;
            enrichmentToReturn.CreatedByUserId           = source.CreatedByUser?.Id ?? 0;
            enrichmentToReturn.UpdatedByUserId           = source.UpdatedByUser?.Id ?? 0;
            enrichmentToReturn.LastPublishedTimestampUtc = source.LastPublishedTimestampUtc;
            enrichmentToReturn.Status       = source.Status;
            enrichmentToReturn.ProviderCode = source.ProviderCode;
            enrichmentToReturn.CourseCode   = source.UcasCourseCode;
            return(enrichmentToReturn);
        }
Exemplo n.º 6
0
        private CourseViewModel LoadViewModel(ProviderSummary org, Domain.Models.Course course, bool multipleOrganisations, UcasCourseEnrichmentGetModel ucasCourseEnrichmentGetModel, CourseRouteDataViewModel routeData)
        {
            var courseVariant =
                new ViewModels.CourseDetailsViewModel
            {
                CourseTitle             = course.Name,
                Type                    = course.TypeDescription,
                AccreditingProviderName = course.AccreditingProvider?.ProviderName,
                AccreditingProviderCode = course.AccreditingProvider?.ProviderCode,
                CourseCode              = course.CourseCode,
                ProviderCode            = course.Provider.ProviderCode,
                AgeRange                = course.AgeRange,
                Route                   = course.ProgramType,
                Qualifications          = course.ProfpostFlag,
                StudyMode               = course.StudyMode,
                Subjects                = course.Subjects,
                Status                  = course.GetCourseStatus(),
                Sites                   = course.CourseSites.Select(courseSite =>
                {
                    var addressLines = (new List <string>()
                    {
                        courseSite.Site.Address1,
                        courseSite.Site.Address2,
                        courseSite.Site.Address3,
                        courseSite.Site.Address4,
                        courseSite.Site.Postcode
                    })
                                       .Where(line => !string.IsNullOrEmpty(line));

                    var address = addressLines.Count() > 0 ? addressLines.Where(line => !string.IsNullOrEmpty(line))
                                  .Aggregate((string current, string next) => current + ", " + next) : "";

                    return(new SiteViewModel
                    {
                        ApplicationsAcceptedFrom = courseSite.ApplicationsAcceptedFrom.ToString(),
                        Code = courseSite.Site.Code,
                        LocationName = courseSite.Site.LocationName,
                        Address = address,
                        Status = courseSite.Status,
                        VacStatus = courseSite.VacStatus
                    });
                })
            };

            var isSalary = course.ProgramType.Equals("SS", StringComparison.InvariantCultureIgnoreCase) ||
                           course.ProgramType.Equals("TA", StringComparison.InvariantCultureIgnoreCase);
            var courseEnrichmentViewModel = GetCourseEnrichmentViewModel(ucasCourseEnrichmentGetModel, isSalary, routeData);
            var viewModel = new CourseViewModel
            {
                ProviderName            = org.ProviderName,
                ProviderCode            = org.ProviderCode,
                CourseTitle             = course.Name,
                AccreditingProviderCode = course.AccreditingProvider?.ProviderCode,
                MultipleOrganisations   = multipleOrganisations,
                Course           = courseVariant,
                CourseEnrichment = courseEnrichmentViewModel,
                LiveSearchUrl    = searchAndCompareUrlService.GetCoursePageUri(org.ProviderCode, courseVariant.CourseCode),
                IsSalary         = isSalary
            };

            return(viewModel);
        }