public void WhenValidParametersAndOneRecordHasMissingFirstName_ThenReturnNull() { string filePath = "enrollments.csv"; var fileReader = new FileReader(); var enrollmentReader = new Mock <IEnrollmentReader>(MockBehavior.Strict); var enrollmentValidator = new EnrollmentValidator(); var enrollmentWithMissingFirstName = new List <Enrollment> { new Enrollment { FirstName = String.Empty, LastName = "Doe", DateOfBirth = new DateTime(1970, 8, 16), PlanType = EnrollmentPlanType.FSA, EffectiveDate = DateTime.Today.AddDays(3) } }; enrollmentReader.Setup(x => x.ReadFromFile(It.IsAny <IFileReader>(), It.IsAny <string>())).Returns(enrollmentWithMissingFirstName); var enrollmentImporter = new EnrollmentImporter(); var savedEnrollmentRecords = enrollmentImporter.Import(filePath, fileReader, enrollmentReader.Object, enrollmentValidator); Assert.IsTrue(savedEnrollmentRecords.IsNullOrEmpty()); }
/// <summary> /// Main entry point of console application /// </summary> /// <param name="args">Arguments list</param> static void Main(string[] args) { var filePath = Path.Combine(Environment.CurrentDirectory, "Enrollments.csv"); // Create the classes needed to read, validate and import the Enrollment data var fileReader = new FileReader(); var enrollmentCSVReader = new EnrollmentReaderCSV(); var enrollmentValidator = new EnrollmentValidator(); var enrollmentImporter = new EnrollmentImporter(); // Read in and validate the Enrollment data from the file var savedEnrollmentRecords = enrollmentImporter.Import(filePath, fileReader, enrollmentCSVReader, enrollmentValidator); // If there are no records then processing was stopped due to some invalid formatting of data in the file. if (savedEnrollmentRecords.IsNullOrEmpty()) { Console.WriteLine("A record in the file failed validation. Processing has stopped."); } else { // The records were read in so display them. Some records still may be invalid. foreach (var enrollment in savedEnrollmentRecords) { Console.WriteLine("\"{0},{1},{2},{3},{4},{5}\"", enrollment.Status, enrollment.FirstName, enrollment.LastName, enrollment.DateOfBirth.ToShortDateString(), enrollment.PlanType, enrollment.EffectiveDate.ToShortDateString()); } } Console.WriteLine("Press Enter to quit"); Console.ReadLine(); }
public void WhenValidParametersAndOneRecordHasOneValidRecord_ThenReturnOneRecord() { string filePath = "enrollments.csv"; var fileReader = new FileReader(); var enrollmentReader = new Mock <IEnrollmentReader>(MockBehavior.Strict); var enrollmentValidator = new EnrollmentValidator(); var enrollmentWithOneValidRecord = new List <Enrollment> { new Enrollment { FirstName = "Jane", LastName = "Doe", DateOfBirth = new DateTime(1970, 8, 16), PlanType = EnrollmentPlanType.FSA, EffectiveDate = DateTime.Today.AddDays(3) } }; enrollmentReader.Setup(x => x.ReadFromFile(It.IsAny <IFileReader>(), It.IsAny <string>())).Returns(enrollmentWithOneValidRecord); var enrollmentImporter = new EnrollmentImporter(); var savedEnrollmentRecords = enrollmentImporter.Import(filePath, fileReader, enrollmentReader.Object, enrollmentValidator); Assert.IsTrue(savedEnrollmentRecords.Count == 1); Assert.IsTrue(savedEnrollmentRecords[0].Status == EnrollmentStatus.Accepted); }
public void Validate() { var validator = new EnrollmentValidator(); var validationResult = validator.Validate(this); if (!validationResult.IsValid) { throw new ValidationException(validationResult.Errors.Select(i => i.ErrorMessage)); } }
public void WhenReaderIsNull_ThenExceptionIsThrown() { string filePath = "enrollments.csv"; var fileReader = new FileReader(); var enrollmentValidator = new EnrollmentValidator(); var enrollmentImporter = new EnrollmentImporter(); enrollmentImporter.Import(filePath, fileReader, null, enrollmentValidator); }
public void WhenFilePathIsNull_ThenExceptionIsThrown() { string filePath = null; var fileReader = new FileReader(); var enrollmentReader = new EnrollmentReaderCSV(); var enrollmentValidator = new EnrollmentValidator(); var enrollmentImporter = new EnrollmentImporter(); enrollmentImporter.Import(filePath, fileReader, enrollmentReader, enrollmentValidator); }
public void WhenFilePathIsEmpty_ThenExceptionIsThrown() { var filePath = String.Empty; var fileReader = new FileReader(); var enrollmentReader = new EnrollmentReaderCSV(); var enrollmentValidator = new EnrollmentValidator(); var enrollmentImporter = new EnrollmentImporter(); enrollmentImporter.Import(filePath, fileReader, enrollmentReader, enrollmentValidator); }
public void WhenDateOfBirthIsMinDate_ThenExceptionIsThrown() { var enrollmentRecord = new Enrollment { FirstName = "Jane", LastName = "Doe", DateOfBirth = DateTime.MinValue, PlanType = EnrollmentPlanType.HSA, EffectiveDate = DateTime.Today.AddDays(5) }; var enrollmentValidator = new EnrollmentValidator(); var isValid = enrollmentValidator.Validate(enrollmentRecord); }
public void WhenLastNameIsEmpty_ThenExceptionIsThrown() { var enrollmentRecord = new Enrollment { FirstName = "Jane", LastName = String.Empty, DateOfBirth = new DateTime(1983, 9, 13), PlanType = EnrollmentPlanType.HSA, EffectiveDate = DateTime.Today.AddDays(5) }; var enrollmentValidator = new EnrollmentValidator(); var isValid = enrollmentValidator.Validate(enrollmentRecord); }
public void WhenPlanTypeIsNone_ThenExceptionIsThrown() { var enrollmentRecord = new Enrollment { FirstName = "Jane", LastName = "Doe", DateOfBirth = new DateTime(1975, 7, 28), PlanType = EnrollmentPlanType.None, EffectiveDate = DateTime.Today.AddDays(5) }; var enrollmentValidator = new EnrollmentValidator(); var isValid = enrollmentValidator.Validate(enrollmentRecord); }
public void WhenEffectiveDateMoreThan30DaysInFuture_ThenReturnsFalse() { var effectiveDate = DateTime.Today.AddDays(53); var enrollmentRecord = new Enrollment { FirstName = "Jane", LastName = "Doe", DateOfBirth = new DateTime(1973, 3, 14), PlanType = EnrollmentPlanType.HSA, EffectiveDate = effectiveDate }; var enrollmentValidator = new EnrollmentValidator(); var isValid = enrollmentValidator.Validate(enrollmentRecord); Assert.IsFalse(isValid); }
public void WhenDateOfBirthIsLessThan18_ThenReturnsFalse() { var dateOfBirth = DateTime.Today.AddYears(-1); var enrollmentRecord = new Enrollment { FirstName = "Jane", LastName = "Doe", DateOfBirth = dateOfBirth, PlanType = EnrollmentPlanType.HSA, EffectiveDate = DateTime.Today.AddDays(3) }; var enrollmentValidator = new EnrollmentValidator(); var isValid = enrollmentValidator.Validate(enrollmentRecord); Assert.IsFalse(isValid); }
public dynamic Post(string enrollmentNumber) { Enrollment enrollment = _enrollmentService.List().Single(x => x.ExternalId == enrollmentNumber); if (enrollment == null) { return(new BadRequestObjectResult(new { messages = new List <string> { onboarding.Resources.Messages.EnrollmentLinkIsNotValid } })); } if (!enrollment.IsDeadlineValid()) { return(new BadRequestObjectResult(new { messages = new List <string> { onboarding.Resources.Messages.OnboardingExpired } })); } if (enrollment.SentAt.HasValue) { return(new BadRequestObjectResult(new { messages = new List <string> { onboarding.Resources.Messages.EnrollmentInReview } })); } string personalDataStatus = (new PersonalDataStatus(new PersonalDataValidator(_context), enrollment.PersonalData)).GetStatus(); string financeDataStatus = (new FinanceDataStatus(new FinanceDataValidator(_context), enrollment.FinanceData, new FinanceDataMessagesValidator(_context))).GetStatus(); EnrollmentValidator enrollmentValidator = new EnrollmentValidator(_context); FluentValidation.Results.ValidationResult enrollmentValidatorResult = enrollmentValidator.Validate(enrollment); List <string> messages = enrollmentValidatorResult.Errors.Select(x => x.ErrorMessage).Distinct().ToList(); if (personalDataStatus == "valid" && financeDataStatus == "valid" && enrollmentValidatorResult.IsValid) { string body = GetEmailBody("enrollment_sent.html"); string subject = "Sua matricula foi enviada para análise"; string messageBody = GetEmailBody("enrollment_sent.html") .Replace("{student_name}", enrollment.PersonalData.AssumedName) .Replace("{send_at}", enrollment.SentAt.Value.ToString("dd/MM/yyyy")) .Replace("{send_at_hour}", enrollment.SentAt.Value.ToString("HH:mm")); BackgroundJob.Enqueue(() => (new EmailHelper()).SendEmail(messageBody, subject, _configuration["EMAIL_SENDER"], enrollment.PersonalData.Email, _configuration["SMTP_USERNAME"], _configuration["SMTP_PASSWORD"])); enrollment.SentAt = DateTime.Now; _enrollmentService.Update(enrollment); return(Ok()); } else { if (personalDataStatus != "valid") { messages.Add("Os dados pessoais estão inválidos"); } if (financeDataStatus != "valid") { messages.Add("Os dados financeiros estão inválidos"); } return(new BadRequestObjectResult(new { messages })); } }
public EnrollmentValidatorTest() { _validator = new EnrollmentValidator(); }