public async Task StartDateEmptyWithFlexibleFalse_ReturnsValidationError() { // Arrange var allRegions = await new RegionCache(SqlQueryDispatcherFactory).GetAllRegions(); var row = new CsvCourseRow() { StartDate = string.Empty, FlexibleStartDate = "no" }; var validator = new CourseUploadRowValidator(Clock, matchedVenueId: null); // Act var validationResult = validator.Validate(ParsedCsvCourseRow.FromCsvCourseRow(row, allRegions)); // Assert Assert.Contains( validationResult.Errors, error => error.ErrorCode == "COURSERUN_START_DATE_REQUIRED"); }
public async Task AttendancePatternEmptyWithClassroomBasedDeliveryMode_ReturnsValidationError() { // Arrange var allRegions = await new RegionCache(SqlQueryDispatcherFactory).GetAllRegions(); var row = new CsvCourseRow() { AttendancePattern = string.Empty, DeliveryMode = "classroom based" }; var validator = new CourseUploadRowValidator(Clock, matchedVenueId: null); // Act var validationResult = validator.Validate(ParsedCsvCourseRow.FromCsvCourseRow(row, allRegions)); // Assert Assert.Contains( validationResult.Errors, error => error.ErrorCode == "COURSERUN_ATTENDANCE_PATTERN_REQUIRED"); }
public async Task ProviderVenueRefNotEmptyWithNonClassroomBasedDeliveryMode_ReturnsValidationError(string deliveryMode) { // Arrange var allRegions = await new RegionCache(SqlQueryDispatcherFactory).GetAllRegions(); var row = new CsvCourseRow() { DeliveryMode = deliveryMode, ProviderVenueRef = "venue" }; var validator = new CourseUploadRowValidator(Clock, matchedVenueId: null); // Act var validationResult = validator.Validate(ParsedCsvCourseRow.FromCsvCourseRow(row, allRegions)); // Assert Assert.Contains( validationResult.Errors, error => error.ErrorCode == "COURSERUN_PROVIDER_VENUE_REF_NOT_ALLOWED"); }
public async Task NationalDeliveryNotEmptyWithNonWorkBasedDeliveryMode_ReturnsValidationError(string nationalDelivery) { // Arrange var allRegions = await new RegionCache(SqlQueryDispatcherFactory).GetAllRegions(); var row = new CsvCourseRow() { DeliveryMode = "classroom based", NationalDelivery = nationalDelivery }; var validator = new CourseUploadRowValidator(Clock, matchedVenueId: null); // Act var validationResult = validator.Validate(ParsedCsvCourseRow.FromCsvCourseRow(row, allRegions)); // Assert Assert.Contains( validationResult.Errors, error => error.ErrorCode == "COURSERUN_NATIONAL_DELIVERY_NOT_ALLOWED"); }
public async Task SubRegionsEmptyWithNational_DoesNotReturnValidationError() { // Arrange var allRegions = await new RegionCache(SqlQueryDispatcherFactory).GetAllRegions(); var row = new CsvCourseRow() { DeliveryMode = "work based", NationalDelivery = "yes", SubRegions = "" }; var validator = new CourseUploadRowValidator(Clock, matchedVenueId: null); // Act var validationResult = validator.Validate(ParsedCsvCourseRow.FromCsvCourseRow(row, allRegions)); // Assert Assert.DoesNotContain( validationResult.Errors, error => error.ErrorCode == "COURSERUN_SUBREGIONS_INVALID"); }
public async Task SubRegionsEmptyWithNationalFalseForNonWorkBasedDeliveryMode_DoesNotReturnRequiredValidationError(string deliveryMode) { // Arrange var allRegions = await new RegionCache(SqlQueryDispatcherFactory).GetAllRegions(); var row = new CsvCourseRow() { DeliveryMode = deliveryMode, NationalDelivery = "no", SubRegions = string.Empty }; var validator = new CourseUploadRowValidator(Clock, matchedVenueId: null); // Act var validationResult = validator.Validate(ParsedCsvCourseRow.FromCsvCourseRow(row, allRegions)); // Assert Assert.DoesNotContain( validationResult.Errors, error => error.ErrorCode == "COURSERUN_SUBREGIONS_REQUIRED"); }
public async Task ProviderVenueRefEmptyButVenueNameNotEmpty_DoesNotReturnValidationError() { // Arrange var allRegions = await new RegionCache(SqlQueryDispatcherFactory).GetAllRegions(); var row = new CsvCourseRow() { DeliveryMode = "classroom based", ProviderVenueRef = string.Empty, VenueName = "venue" }; var validator = new CourseUploadRowValidator(Clock, matchedVenueId: null); // Act var validationResult = validator.Validate(ParsedCsvCourseRow.FromCsvCourseRow(row, allRegions)); // Assert Assert.DoesNotContain( validationResult.Errors, error => error.PropertyName == nameof(CsvCourseRow.ProviderVenueRef)); }
public async Task ProviderVenueRefAndVenueNameEmptyWithClassroomBasedDeliveryMode_ReturnsValidationError() { // Arrange var allRegions = await new RegionCache(SqlQueryDispatcherFactory).GetAllRegions(); var row = new CsvCourseRow() { DeliveryMode = "classroom based", ProviderVenueRef = string.Empty, VenueName = string.Empty }; var validator = new CourseUploadRowValidator(Clock, matchedVenueId: null); // Act var validationResult = validator.Validate(ParsedCsvCourseRow.FromCsvCourseRow(row, allRegions)); // Assert Assert.Contains( validationResult.Errors, error => error.ErrorCode == "COURSERUN_VENUE_REQUIRED"); }
private UpsertCourseUploadRowsRecord CreateRecord( Guid courseId, Guid courseRunId, string learnAimRef, string whoThisCourseIsFor, string entryRequirements, string whatYouWillLearn, string howYouWillLearn, string whatYouWillNeedToBring, string howYouWillBeAssessed, string whereNext, string courseName, string providerCourseRef, string deliveryMode, string startDate, string flexibleStartDate, string venueName, string providerVenueRef, string nationalDelivery, string subRegions, string courseWebpage, string cost, string costDescription, string duration, string durationUnit, string studyMode, string attendancePattern, Guid?venueId, IEnumerable <string> errors = null) { var errorsArray = errors?.ToArray() ?? Array.Empty <string>(); var isValid = !errorsArray.Any(); return(new UpsertCourseUploadRowsRecord() { RowNumber = _records.Count + 2, IsValid = isValid, Errors = errorsArray, CourseId = courseId, CourseRunId = courseRunId, LearnAimRef = learnAimRef, WhoThisCourseIsFor = whoThisCourseIsFor, EntryRequirements = entryRequirements, WhatYouWillLearn = whatYouWillLearn, HowYouWillLearn = howYouWillLearn, WhatYouWillNeedToBring = whatYouWillNeedToBring, HowYouWillBeAssessed = howYouWillBeAssessed, WhereNext = whereNext, CourseName = courseName, ProviderCourseRef = providerCourseRef, DeliveryMode = deliveryMode, StartDate = startDate, FlexibleStartDate = flexibleStartDate, VenueName = venueName, ProviderVenueRef = providerVenueRef, NationalDelivery = nationalDelivery, SubRegions = subRegions, CourseWebpage = courseWebpage, Cost = cost, CostDescription = costDescription, Duration = duration, DurationUnit = durationUnit, StudyMode = studyMode, AttendancePattern = attendancePattern, VenueId = venueId, ResolvedDeliveryMode = ParsedCsvCourseRow.ResolveDeliveryMode(deliveryMode), ResolvedStartDate = ParsedCsvCourseRow.ResolveStartDate(startDate), ResolvedFlexibleStartDate = ParsedCsvCourseRow.ResolveFlexibleStartDate(flexibleStartDate), ResolvedNationalDelivery = ParsedCsvCourseRow.ResolveNationalDelivery(nationalDelivery, subRegions), ResolvedCost = ParsedCsvCourseRow.ResolveCost(cost), ResolvedDuration = ParsedCsvCourseRow.ResolveDuration(duration), ResolvedDurationUnit = ParsedCsvCourseRow.ResolveDurationUnit(durationUnit), ResolvedStudyMode = ParsedCsvCourseRow.ResolveStudyMode(studyMode), ResolvedAttendancePattern = ParsedCsvCourseRow.ResolveAttendancePattern(attendancePattern), ResolvedSubRegions = ParsedCsvCourseRow.ResolveSubRegions(subRegions, _allRegions)?.Select(r => r.Id) }); }