public string Post([FromBody] CourseDTO courseDTO) { ValidatorResult validatorResult = CourseValidator.IsValidCourse(courseDTO); if (!validatorResult.IsValid) { HttpContext.Response.StatusCode = 422; return(JsonConvert.SerializeObject(validatorResult.ValidationMessage)); } Course course = new Course() { Name = courseDTO.Name, Description = courseDTO.Description, Length = courseDTO.Length, StartDate = courseDTO.StartDate, EndDate = courseDTO.EndDate }; //Add to DB try { northwindContext.Add(course); northwindContext.SaveChanges(); HttpContext.Response.StatusCode = 200; return(JsonConvert.SerializeObject("The course is successfully saved.")); } catch (Exception e) { HttpContext.Response.StatusCode = 520; return(JsonConvert.SerializeObject(e.Message)); } }
public void DefaultValidation_CourseIsNull_ShouldThrowException() { ICourseValidator courseValidator = new CourseValidator(); Action action = () => courseValidator.DefaultValidation(null as Course); action.Should().Throw <NullReferenceException>().WithMessage("Course can not be null"); }
public override void DoExecute() { var ulearnDir = new DirectoryInfo($"{Dir}/{Config.ULearnCourseId}"); Console.Write("Loading Ulearn course from {0} ... ", ulearnDir.Name); var sw = Stopwatch.StartNew(); var course = new CourseLoader().Load(ulearnDir); Console.WriteLine(sw.ElapsedMilliseconds + " ms"); var slides = course.GetSlides(true); if (SlideId != null) { slides = slides.Where(s => s.Id == Guid.Parse(SlideId)).ToList(); Console.WriteLine("Only slide " + SlideId); } var validator = new CourseValidator(slides); validator.InfoMessage += m => Write(ConsoleColor.Gray, m); var errors = new List <string>(); validator.Error += m => { Write(ConsoleColor.Red, m); errors.Add(m); }; validator.Warning += m => { Write(ConsoleColor.DarkYellow, m); errors.Add(m); }; validator.ValidateSpelling(course); validator.ValidateExercises(); validator.ValidateVideos(); validator.ValidateFlashcardSlides(); validator.ValidateSlidesXml(); if (errors.Any()) { Console.WriteLine("Done! There are errors:"); foreach (var error in errors) { Write(ConsoleColor.Red, error, true); } File.WriteAllText(course.Id + "-validation-report.html", GenerateHtmlReport(course, errors)); } else { Console.WriteLine("OK! No errors found"); } Console.WriteLine("Press any key..."); Console.WriteLine("Exit code " + Environment.ExitCode); Console.ReadLine(); Environment.Exit(Environment.ExitCode); }
public void ValidateAsync_CourseIsNull_ThrowArgumentNullException() { // Arrange Course course = null; var validator = new CourseValidator <Course>(); // Act validator.ValidateAsync(course); }
public void DefaultValidation_CourseNameIsEmpty_ShouldThrowException() { ICourseValidator courseValidator = new CourseValidator(); Action action = () => courseValidator.DefaultValidation(new Course() { }); action.Should().Throw <ArgumentException>().WithMessage("Course Name can not be empty"); }
public static CourseValidator BuildValidator(ExerciseSlide slide, StringBuilder valOut) { var v = new CourseValidator(new List <Slide> { slide }); v.Warning += msg => { valOut.Append(msg); }; v.Error += msg => { valOut.Append(msg); }; return(v); }
public void Validate() { var validator = new CourseValidator(); var validationResult = validator.Validate(this); if (!validationResult.IsValid) { throw new ValidationException(validationResult.Errors.Select(i => i.ErrorCode)); } }
public static Course mapModel(Course oldCourse, Course newCourse) { if (!CourseValidator.validateCourse(newCourse)) { return(null); } oldCourse.IDCourse = newCourse.IDCourse; oldCourse.Name = newCourse.Name; oldCourse.Description = newCourse.Description; oldCourse.Price = newCourse.Price; oldCourse.IDCategory = newCourse.IDCategory; oldCourse.IDCreator = newCourse.IDCreator; return(oldCourse); }
public async Task ValidateAsync_CourseIsCorrect_ShouldReturnIdentityResultSuccess() { // Arrange Course course = new Course() { CourseName = "lnnlmll", StartDate = DateTime.Today, EndDate = DateTime.Today.AddDays(+1) }; var validator = new CourseValidator <Course>(); // Act var result = await validator.ValidateAsync(course); // Assert Assert.IsTrue(result.Succeeded); }
public async Task ValidateAsync_StartDateIsLaterThanEndDate_ShouldReturnIdentityResultFails() { // Arrange Course course = new Course() { CourseName = "lnnlmll", StartDate = DateTime.Today, EndDate = DateTime.Today.AddDays(-1) }; var validator = new CourseValidator <Course>(); // Act var result = await validator.ValidateAsync(course); // Assert Assert.IsFalse(result.Succeeded); }
public async Task ValidateAsync_CourseNameIsLongerThanAllowed_ShouldReturnIdentityResultFails() { // Arrange Course course = new Course() { CourseName = new string('a', 400), StartDate = DateTime.Today, EndDate = DateTime.Today.AddDays(1) }; var validator = new CourseValidator <Course>(); // Act var result = await validator.ValidateAsync(course); // Assert Assert.IsFalse(result.Succeeded); }
/// <summary> /// Save all changes of current course to folder that represents is /// </summary> public static bool Save() { FFDebug.EnterMethod(Cattegory.Course, State.ToString()); State |= CourseStates.Saving; #if CHECKERS if (__Manifest == null) { throw new FireFlyException("Course is not assigned"); } if (__Manifest.organizations.Organizations.Count == 0) { throw new FireFlyException("No organization assigned"); } #endif if (CourseSaving != null) { CourseSaving(); } HtmlPageBase.StorePages(); State &= ~CourseStates.Saving; var cv = new CourseValidator(); if (!cv.Validate()) { ErrorDialog.ShowError("THIS COURSE IS INVALID!!! It cannot be played. Errors:" + Environment.NewLine + cv.GetErrorMessages()); State &= ~CourseStates.Modified; return(false); } using (var f = new FileStream(MapPath(MANIFEST_FILE_NAME), FileMode.Create)) { ManifestType.Serializer.Serialize(f, __Manifest, ManifestNamespaces.SerializerNamespaces); } Answers.SaveToFile(MapPath(ANSWERS_FILE_NAME)); State &= ~CourseStates.Modified; if (CourseSaved != null) { CourseSaved(); } FFDebug.LeaveMethod(Cattegory.Course, MethodBase.GetCurrentMethod()); return(true); }
public override void DoExecute() { var ulearnDir = new DirectoryInfo($"{Dir}/{Config.ULearnCourseId}"); Console.Write("Loading Ulearn course from {0} ... ", ulearnDir.Name); var sw = Stopwatch.StartNew(); var course = new CourseLoader().LoadCourse(ulearnDir); Console.WriteLine(sw.ElapsedMilliseconds + " ms"); var slides = course.Slides; if (SlideId != null) { slides = course.Slides.Where(s => s.Id == Guid.Parse(SlideId)).ToList(); Console.WriteLine("Only slide " + SlideId); } var validator = new CourseValidator(slides, new SandboxRunnerSettings()); validator.InfoMessage += m => Write(ConsoleColor.Gray, m); var errors = new List <string>(); validator.Error += m => { Write(ConsoleColor.Red, m); errors.Add(m); }; validator.ValidateExercises(); validator.ValidateVideos(); if (errors.Any()) { Console.WriteLine("Done! There are errors:"); foreach (var error in errors) { Write(ConsoleColor.Red, error); } } else { Console.WriteLine("OK! No errors found"); } Console.WriteLine("Press any key..."); Console.ReadLine(); }
/// <summary> /// Course creating /// </summary> /// <param name="courseDTO">Course model</param> /// <returns> /// Returns the result message of the request. /// </returns> public HttpResponseMessage Post([FromBody] CourseDTO courseDTO) { var response = new HttpResponseMessage(HttpStatusCode.OK); ValidatorResult validatorResult = CourseValidator.IsValidCourse(courseDTO); if (!validatorResult.IsValid) { response.StatusCode = HttpStatusCode.PreconditionFailed; response.Content = new StringContent(JsonConvert.SerializeObject(validatorResult.ValidationMessage)); return(response); } Course course = new Course() { Name = courseDTO.Name, Description = courseDTO.Description, Length = courseDTO.Length, StartDate = courseDTO.StartDate, EndDate = courseDTO.EndDate }; //Add to DB try { northwindContext.Add(course); northwindContext.SaveChanges(); response.Content = new StringContent(JsonConvert.SerializeObject("The course is successfully saved.")); return(response); } catch (Exception e) { response.StatusCode = HttpStatusCode.InternalServerError; response.Content = new StringContent(JsonConvert.SerializeObject(e.Message)); return(response); } }
public override void DoExecute() { var ulearnDir = new DirectoryInfo(string.Format("{0}/{1}", Dir, Config.ULearnCourseId)); Console.Write("Loading Ulearn course from {0} ... ", ulearnDir.Name); var sw = Stopwatch.StartNew(); var course = new CourseLoader().LoadCourse(ulearnDir); Console.WriteLine(sw.ElapsedMilliseconds + " ms"); var slides = course.Slides; if (SlideId != null) { slides = course.Slides.Where(s => s.Id == Guid.Parse(SlideId)).ToArray(); Console.WriteLine("Only slide " + SlideId); } var validator = new CourseValidator(slides, new SandboxRunnerSettings()); validator.InfoMessage += m => Write(ConsoleColor.Gray, m); var errors = new List<string>(); validator.Error += m => { Write(ConsoleColor.Red, m); errors.Add(m); }; validator.ValidateExercises(); validator.ValidateVideos(); if (errors.Any()) { Console.WriteLine("Done! There are errors:"); foreach (var error in errors) { Write(ConsoleColor.Red, error); } } else Console.WriteLine("OK! No errors found"); Console.WriteLine("Press any key..."); Console.ReadLine(); }
/// <summary> /// Builder CourseModule Class. /// </summary> public CourseModule() : base("/courses") { #region Method that returns the index View Course, with the registered courses. Get ["/"] = _ => { return(View ["index", DocumentSession.Query <Course> () .Customize(q => q.WaitForNonStaleResultsAsOfLastWrite()) .ToList()]); }; #endregion #region Method that returns a View Show, displaying the course in the form according to the ID. Get ["/{Id}"] = x => { Guid coursenumber = Guid.Parse(x.Id); var course = DocumentSession.Query <Course> ("CoursesById") .Customize(q => q.WaitForNonStaleResultsAsOfLastWrite()) .Where(n => n.Id == coursenumber).FirstOrDefault(); if (course == null) { return(new NotFoundResponse()); } return(View ["show", course]); }; #endregion #region Method that returns the New View, creating a default course Get ["/new"] = x => { return(View ["new", Course.DefaultCourse()]); }; #endregion #region Method that creates and validates a new course in accordance with the specifications of the class CourseValidator Post ["/new"] = x => { var course = this.Bind <Course> (); var result = new CourseValidator().Validate(course); if (!result.IsValid) { return(View ["Shared/_errors", result]); } DocumentSession.Store(course); return(Response.AsRedirect(string.Format("/courses/{0}", course.Id))); }; #endregion #region Displays data in the form of the Course according to ID Get ["/edit/{Id}"] = x => { Guid coursenumber = Guid.Parse(x.Id); var course = DocumentSession.Query <Course> ("CoursesById") .Where(n => n.Id == coursenumber).FirstOrDefault(); if (course == null) { return(new NotFoundResponse()); } return(View ["edit", course]); }; #endregion #region Method editing the course according to ID Post ["/edit/{Id}"] = x => { var course = this.Bind <Course> (); var result = new CourseValidator().Validate(course, ruleSet: "Update"); if (!result.IsValid) { return(View ["Shared/_errors", result]); } Guid coursenumber = Guid.Parse(x.Id); var saved = DocumentSession.Query <Course> ("CoursesById") .Where(n => n.Id == coursenumber).FirstOrDefault(); if (saved == null) { return(new NotFoundResponse()); } saved.Fill(course); return(Response.AsRedirect(string.Format("/courses/{0}", course.Id))); }; #endregion #region Method to delete a record according to ID Delete ["/delete/{Id}"] = x => { Guid coursenumber = Guid.Parse(x.Id); var course = DocumentSession.Query <Course> ("CoursesById") .Where(n => n.Id == coursenumber) .FirstOrDefault(); if (course == null) { return(new NotFoundResponse()); } DocumentSession.Delete(course); var resp = new JsonResponse <Course> ( course, new DefaultJsonSerializer() ); resp.StatusCode = HttpStatusCode.OK; return(resp); }; Get ["/delete/{Id}"] = x => { Guid coursenumber = Guid.Parse(x.Id); var course = DocumentSession.Query <Course> ("CoursesById") .Where(n => n.Id == coursenumber).FirstOrDefault(); if (course == null) { return(new NotFoundResponse()); } DocumentSession.Delete(course); return(Response.AsRedirect("/courses")); }; #endregion Get["/select"] = _ => { return(View["select", DocumentSession.Query <Course>() .Customize(q => q.WaitForNonStaleResultsAsOfLastWrite()) .ToList()]); }; }
public CourseModule() : base("/courses") { Get ["/"] = _ => { return View ["index", DocumentSession.Query<Course> () .Customize(q => q.WaitForNonStaleResultsAsOfLastWrite()) .ToList ()]; }; Get ["/{Id}"] = x => { Guid coursenumber = Guid.Parse(x.Id); var course = DocumentSession.Query<Course> ("CoursesById") .Customize(q => q.WaitForNonStaleResultsAsOfLastWrite()) .Where (n => n.Id == coursenumber).FirstOrDefault (); if (course == null) return new NotFoundResponse (); return View ["show", course]; }; Get ["/new"] = x => { return View ["new", new Course ()]; }; Post ["/new"] = x => { var course = this.Bind<Course> (); var result = this.Validate (course); if (!result.IsValid) return View ["Shared/_errors", result]; DocumentSession.Store (course); //return View ["show", course]; return Response.AsRedirect(string.Format("/courses/{0}", course.Id)); }; Get ["/edit/{Id}"] = x => { Guid coursenumber = Guid.Parse(x.Id); var course = DocumentSession.Query<Course> ("CoursesById") .Where (n => n.Id == coursenumber).FirstOrDefault (); if (course == null) return new NotFoundResponse (); return View ["edit", course]; }; Post ["/edit/{Id}"] = x => { var course = this.Bind<Course> (); var result = new CourseValidator ().Validate (course, ruleSet: "Update"); if (!result.IsValid) return View ["Shared/_errors", result]; Guid coursenumber = Guid.Parse(x.Id); var saved = DocumentSession.Query<Course> ("CoursesById") .Where (n => n.Id == coursenumber).FirstOrDefault (); if (saved == null) return new NotFoundResponse (); saved.Fill (course); return Response.AsRedirect(string.Format("/courses/{0}", course.Id)); // return View ["show", course]; }; Delete ["/delete/{Id}"] = x => { Guid coursenumber = Guid.Parse(x.Id); var course = DocumentSession.Query<Course> ("CoursesById") .Where (n => n.Id == coursenumber) .FirstOrDefault (); if (course == null) return new NotFoundResponse (); DocumentSession.Delete (course); var resp = new JsonResponse<Course> ( course, new DefaultJsonSerializer () ); resp.StatusCode = HttpStatusCode.OK; return resp; }; Get ["/delete/{Id}"] = x => { Guid coursenumber = Guid.Parse(x.Id); var course = DocumentSession.Query<Course> ("CoursesById") .Where (n => n.Id == coursenumber).FirstOrDefault (); if (course == null) return new NotFoundResponse (); DocumentSession.Delete (course); return Response.AsRedirect("/courses"); // return View ["index", DocumentSession.Query<Course> ().ToList ()]; }; }
public void TestCleanup() { _repositoryMock = null; _validator = null; }
public void TestInitialize() { _repositoryMock = new Mock <IRepository>(); _validator = new CourseValidator(); }
/// <summary> /// Builder CourseModule Class. /// </summary> public CourseModule() : base("/courses") { #region Method that returns the index View Course, with the registered courses. Get ["/"] = _ => { return View ["index", DocumentSession.Query<Course> () .Customize(q => q.WaitForNonStaleResultsAsOfLastWrite()) .ToList ()]; }; #endregion #region Method that returns a View Show, displaying the course in the form according to the ID. Get ["/{Id}"] = x => { Guid coursenumber = Guid.Parse(x.Id); var course = DocumentSession.Query<Course> ("CoursesById") .Customize(q => q.WaitForNonStaleResultsAsOfLastWrite()) .Where (n => n.Id == coursenumber).FirstOrDefault (); if (course == null) return new NotFoundResponse (); return View ["show", course]; }; #endregion #region Method that returns the New View, creating a default course Get ["/new"] = x => { return View ["new", Course.DefaultCourse()]; }; #endregion #region Method that creates and validates a new course in accordance with the specifications of the class CourseValidator Post ["/new"] = x => { var course = this.Bind<Course> (); var result = new CourseValidator().Validate (course); if (!result.IsValid) return View ["Shared/_errors", result]; DocumentSession.Store (course); return Response.AsRedirect(string.Format("/courses/{0}", course.Id)); }; #endregion #region Displays data in the form of the Course according to ID Get ["/edit/{Id}"] = x => { Guid coursenumber = Guid.Parse(x.Id); var course = DocumentSession.Query<Course> ("CoursesById") .Where (n => n.Id == coursenumber).FirstOrDefault (); if (course == null) return new NotFoundResponse (); return View ["edit", course]; }; #endregion #region Method editing the course according to ID Post ["/edit/{Id}"] = x => { var course = this.Bind<Course> (); var result = new CourseValidator ().Validate (course, ruleSet: "Update"); if (!result.IsValid) return View ["Shared/_errors", result]; Guid coursenumber = Guid.Parse(x.Id); var saved = DocumentSession.Query<Course> ("CoursesById") .Where (n => n.Id == coursenumber).FirstOrDefault (); if (saved == null) return new NotFoundResponse (); saved.Fill (course); return Response.AsRedirect(string.Format("/courses/{0}", course.Id)); }; #endregion #region Method to delete a record according to ID Delete ["/delete/{Id}"] = x => { Guid coursenumber = Guid.Parse(x.Id); var course = DocumentSession.Query<Course> ("CoursesById") .Where (n => n.Id == coursenumber) .FirstOrDefault (); if (course == null) return new NotFoundResponse (); DocumentSession.Delete (course); var resp = new JsonResponse<Course> ( course, new DefaultJsonSerializer () ); resp.StatusCode = HttpStatusCode.OK; return resp; }; Get ["/delete/{Id}"] = x => { Guid coursenumber = Guid.Parse(x.Id); var course = DocumentSession.Query<Course> ("CoursesById") .Where (n => n.Id == coursenumber).FirstOrDefault (); if (course == null) return new NotFoundResponse (); DocumentSession.Delete (course); return Response.AsRedirect("/courses"); }; #endregion }
public CourseTests() { _validator = new CourseValidator(); }
public CourseValidatorTests() { _courseValidator = new CourseValidator(); }
public static async Task Run( string input, // Work around https://github.com/Azure/azure-functions-vs-build-sdk/issues/168 ILogger log, [Inject] IConfigurationRoot configuration, [Inject] ICourseCollectionService courseCollectionService, [Inject] ICosmosDbHelper cosmosDbHelper, [Inject] IBlobStorageHelper blobhelper, [Inject] IUkrlpApiService ukrlpApiService ) { const string apprenticeshipAppName = "Validate.Course"; var apprenticeshipValidationFileName = $"{apprenticeshipAppName}-{DateTime.Now.ToString("dd-MM-yy HHmm")}"; var blobContainer = blobhelper.GetBlobContainer(configuration["BlobStorageSettings:Container"]); var validator = new CourseValidator(); List <CourseValidationResult> validationEResult = new List <CourseValidationResult>(); var stopWatch = new Stopwatch(); stopWatch.Start(); var resultData = await courseCollectionService.GetAllCoursesAsync(); foreach (var item in resultData) { //item.ContactEmail = "testing"; //item.Url = "testing"; //item.ContactWebsite = "testing"; //item.ContactTelephone = "101101abc"; //item.ApprenticeshipTitle = item.ApprenticeshipTitle + " @"; var validationResult = validator.Validate(item); if (!validationResult.IsValid) { foreach (var error in validationResult.Errors) { validationEResult.Add(new CourseValidationResult() { CourseId = item.CourseId, ProviderUkprn = item.ProviderUKPRN, FieldName = error.PropertyName, ErrorMessage = error.ErrorMessage }); } } } var resultsObjBytes = GetResultAsByteArray(validationEResult); await WriteResultsToBlobStorage(resultsObjBytes); stopWatch.Stop(); byte[] GetResultAsByteArray(IList <CourseValidationResult> message) { using (var memoryStream = new System.IO.MemoryStream()) { using (var streamWriter = new System.IO.StreamWriter(memoryStream)) using (var csvWriter = new CsvWriter(streamWriter, CultureInfo.InvariantCulture)) { csvWriter.WriteRecords <CourseValidationResult>(message); } return(memoryStream.ToArray()); } } async Task WriteResultsToBlobStorage(byte[] data) { await blobhelper.UploadFile(blobContainer, apprenticeshipValidationFileName, data); } }