Beispiel #1
0
        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}");
        }
Beispiel #2
0
 private string DeliveryModeToString(CourseDeliveryMode deliveryMode)
 {
     return(deliveryMode switch
     {
         CourseDeliveryMode.ClassroomBased => "classroom",
         CourseDeliveryMode.Online => "online",
         CourseDeliveryMode.WorkBased => "work",
         _ => throw new NotSupportedException($"Unknown delivery mode: '{deliveryMode}'.")
     });
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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);
            }
Beispiel #6
0
        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
            });
        }
Beispiel #7
0
 public static string ToDescription(this CourseDeliveryMode deliveryMode) => deliveryMode switch
 {
Beispiel #8
0
        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");
            }
        }