public async Task Post_ValidRequest_ReturnsRedirect( CourseDeliveryMode deliveryMode, string expectedRedirectLocationDeliveryQueryParam) { // Arrange var provider = await TestData.CreateProvider(); var(courseUpload, courseUploadRows) = await TestData.CreateCourseUpload( provider.ProviderId, createdBy : User.ToUserInfo(), UploadStatus.ProcessedWithErrors); var rowNumber = courseUploadRows.First().RowNumber; var request = new HttpRequestMessage(HttpMethod.Post, $"/data-upload/courses/resolve/{rowNumber}/delivery?providerId={provider.ProviderId}") { Content = new FormUrlEncodedContentBuilder() .Add("DeliveryMode", deliveryMode) .ToContent() }; // Act var response = await HttpClient.SendAsync(request); // Assert response.StatusCode.Should().Be(HttpStatusCode.Found); response.Headers.Location.OriginalString.Should().Be( $"/data-upload/courses/resolve/{rowNumber}/details?deliveryMode={expectedRedirectLocationDeliveryQueryParam}&providerId={provider.ProviderId}"); }
private string DeliveryModeToString(CourseDeliveryMode deliveryMode) { return(deliveryMode switch { CourseDeliveryMode.ClassroomBased => "classroom", CourseDeliveryMode.Online => "online", CourseDeliveryMode.WorkBased => "work", _ => throw new NotSupportedException($"Unknown delivery mode: '{deliveryMode}'.") });
public static string IfNotClassroomBasedDisplayNone(this CourseDeliveryMode deliveryMode) { var noDisplay = "display: none;"; var disp = string.Empty; switch (deliveryMode) { case CourseDeliveryMode.WorkBased: case CourseDeliveryMode.Online: return(noDisplay); case CourseDeliveryMode.ClassroomBased: return(disp); default: return(noDisplay); } }
private async Task Post_SelectDeliveryMode_RedirectsToCourseRun(CourseDeliveryMode deliveryMode) { // Arrange var provider = await TestData.CreateProvider(); var mpx = MptxManager.CreateInstance(new FlowModel()); await User.AsTestUser(TestUserType.ProviderSuperUser, provider.ProviderId); var deliverystr = DeliveryModeToString(deliveryMode); var get1 = await HttpClient.GetAsync( $"/courses/course-selected?ffiid={mpx.InstanceId}&LearnAimRef=00238422"); var request = new HttpRequestMessage(HttpMethod.Post, $"/courses/add?ffiid={mpx.InstanceId}&providerId={provider.ProviderId}") { Content = new FormUrlEncodedContentBuilder() .Add("WhoThisCourseIsFor", "Some Details") .Add("EntryRequirements", "") .Add("WhatYouWillLearn", "") .Add("HowYouWillLearn", "") .Add("WhatYouWillNeedToBring", "") .Add("HowYouWillBeAssessed", "") .Add("WhereNext", "") .ToContent() }; await HttpClient.SendAsync(request); // Act var postDeliveryRequest = new HttpRequestMessage(HttpMethod.Post, $"/courses/add/delivery?ffiid={mpx.InstanceId}&providerId={provider.ProviderId}") { Content = new FormUrlEncodedContentBuilder() .Add("DeliveryMode", deliveryMode) .ToContent() }; var postDeliveryResponse = await HttpClient.SendAsync(postDeliveryRequest); // Assert postDeliveryResponse.StatusCode.Should().Be(HttpStatusCode.Redirect); postDeliveryResponse.Headers.Location.Should().Be($"/courses/add-courserun?deliveryMode={deliverystr}&ffiid={mpx.InstanceId}&providerId={provider.ProviderId}"); }
public CreateCourseCourseRunBuilder WithCourseRun( CourseDeliveryMode deliveryMode, CourseStudyMode studyMode, CourseAttendancePattern attendancePattern, string courseName = "Education assessment in Maths", bool?national = null, Guid?venueId = null, IEnumerable <string> regions = null, bool?flexibleStartDate = null, DateTime?startDate = null, string courseUrl = null, decimal?cost = 69, string costDescription = null, CourseDurationUnit durationUnit = CourseDurationUnit.Months, int?durationValue = 6, string providerCourseId = null) { var courseRunId = Guid.NewGuid(); _courseRuns.Add(new CreateCourseCourseRun() { CourseRunId = courseRunId, VenueId = venueId, CourseName = courseName, DeliveryMode = deliveryMode, FlexibleStartDate = flexibleStartDate ?? !startDate.HasValue, StartDate = startDate, CourseUrl = courseUrl, Cost = cost, CostDescription = costDescription, DurationUnit = durationUnit, DurationValue = durationValue, StudyMode = studyMode, AttendancePattern = attendancePattern, National = national, Regions = regions, ProviderCourseId = providerCourseId }); return(this); }
private async Task <ViewModel> CreateViewModel(CourseDeliveryMode deliveryMode, Command row) { var providerVenues = deliveryMode == CourseDeliveryMode.ClassroomBased ? (await _sqlQueryDispatcher.ExecuteQuery(new GetVenuesByProvider() { ProviderId = _providerContextProvider.GetProviderId() })) .Select(v => new ViewModelProviderVenuesItem() { VenueId = v.VenueId, VenueName = v.VenueName }) .OrderBy(v => v.VenueName) .ToArray() : null; return(new ViewModel() { DeliveryMode = deliveryMode, CourseName = row.CourseName, ProviderCourseRef = row.ProviderCourseRef, StartDate = row.StartDate, FlexibleStartDate = row.FlexibleStartDate, NationalDelivery = row.NationalDelivery, SubRegionIds = row.SubRegionIds, CourseWebPage = row.CourseWebPage, Cost = row.Cost, CostDescription = row.CostDescription, Duration = row.Duration, DurationUnit = row.DurationUnit, StudyMode = row.StudyMode, AttendancePattern = row.AttendancePattern, VenueId = row.VenueId, ProviderVenues = providerVenues }); }
public static string ToDescription(this CourseDeliveryMode deliveryMode) => deliveryMode switch {
private async Task Post_InvalidCourseWebpage_ReturnsError(CourseDeliveryMode deliveryMode) { // Arrange var provider = await TestData.CreateProvider(); var mpx = MptxManager.CreateInstance(new FlowModel()); await User.AsTestUser(TestUserType.ProviderSuperUser, provider.ProviderId); await HttpClient.GetAsync( $"/courses/course-selected?ffiid={mpx.InstanceId}&LearnAimRef=00238422"); var request = new HttpRequestMessage(HttpMethod.Post, $"/courses/add?ffiid={mpx.InstanceId}&providerId={provider.ProviderId}") { Content = new FormUrlEncodedContentBuilder() .Add("WhoThisCourseIsFor", "Some Details") .Add("EntryRequirements", "") .Add("WhatYouWillLearn", "") .Add("HowYouWillLearn", "") .Add("WhatYouWillNeedToBring", "") .Add("HowYouWillBeAssessed", "") .Add("WhereNext", "") .ToContent() }; await HttpClient.SendAsync(request); var postDeliveryRequest = new HttpRequestMessage(HttpMethod.Post, $"/courses/add/delivery?ffiid={mpx.InstanceId}&providerId={provider.ProviderId}") { Content = new FormUrlEncodedContentBuilder() .Add("DeliveryMode", CourseDeliveryMode.ClassroomBased) .ToContent() }; await HttpClient.SendAsync(postDeliveryRequest); // Act var postCourseRun = new HttpRequestMessage(HttpMethod.Post, $"/courses/add-courserun?ffiid={mpx.InstanceId}&providerId={provider.ProviderId}") { Content = new FormUrlEncodedContentBuilder() .Add("DeliveryMode", deliveryMode) .Add("CourseName", "Some Details") .Add("ProviderCourseRef", "someEf") .Add("StartDate", "") .Add("FlexibleStartDate", "true") .Add("NationalDelivery", "") .Add("SubRegionIds", "") .Add("CourseWebPage", "someInvalid-com") .Add("Cost", "1000") .Add("CostDescription", "") .Add("Duration", "12") .Add("DurationUnit", "") .Add("StudyMode", "") .Add("AttendancePattern", "") .Add("VenueId", "") .ToContent() }; var postCourseRunResponse = await HttpClient.SendAsync(postCourseRun); // Assert postCourseRunResponse.StatusCode.Should().Be(HttpStatusCode.BadRequest); var doc = await postCourseRunResponse.GetDocument(); using (new AssertionScope()) { doc.AssertHasError("CourseWebPage", "Course webpage must be a real website"); } }