public void SpecValidation_Validate_ShouldReturnTrue() { // Arrange var movie = MovieFactory.GetMixedMovies().FirstOrDefault(m => m.MpaaRating <= MpaaRating.PG && // For kids m.ReleaseDate.Year == DateTime.Now.Year && // New Release m.Rating >= 4); // Best ratings var less1YearSpec = new LessThanOneYearSpecificationValidator(); var forKidsSpec = new MovieForKidsSpecificationValidator(); var bestRatedSpec = new BestRatedFilmsSpecificationValidator(); var newestGoodMoviesForKidsValidation = less1YearSpec.And(forKidsSpec).And(bestRatedSpec); // Act var result = newestGoodMoviesForKidsValidation.Validate(movie); // Assert Assert.True(result.IsValid); }
public void SpecValidation_Validate_ShouldReturnFalseWithErrorMessages() { // Arrange var movie = MovieFactory.GetMixedMovies().FirstOrDefault(m => m.MpaaRating <= MpaaRating.R && // Not For kids m.ReleaseDate.Year < DateTime.Now.Year && // Old(?) Release m.Rating < 4); // Bad ratings var less1YearSpec = new LessThanOneYearSpecificationValidator(); var forKidsSpec = new MovieForKidsSpecificationValidator(); var bestRatedSpec = new BestRatedFilmsSpecificationValidator(); var newestGoodMoviesForKidsValidation = less1YearSpec.Or(forKidsSpec.Or(bestRatedSpec)); // Act var result = newestGoodMoviesForKidsValidation.Validate(movie); // Assert Assert.False(result.IsValid); Assert.Contains(result.Errors, e => e.ErrorMessage == "This movie was released over a year ago."); Assert.Contains(result.Errors, e => e.ErrorMessage == "This film is not for children."); Assert.Contains(result.Errors, e => e.ErrorMessage == "This film is not well rated."); }