public void Specification_OrSpecification_AllInvalid_ShouldReturnFalse() { // Arrange var movie = MovieFactory.GetRatedR(); var director = movie.Director.Name + " LastName"; var kidSpec = new MovieForKidsSpecificationValidator(); var dirSpec = new MovieDirectedBySpecificationValidator(director); var movieSpec = kidSpec.Or(dirSpec); // Act var result = movieSpec.Validate(movie); // Assert Assert.False(result.IsValid); Assert.Contains(result.Errors, e => e.ErrorMessage == "This film is not for children."); Assert.Contains(result.Errors, e => e.ErrorMessage == "The director name is different."); }
public void Specification_AndSpecification_WithDifferentDirectorName_ShouldReturnFalse() { // Arrange var movie = MovieFactory.GetMixedMovies().FirstOrDefault(m => m.MpaaRating <= MpaaRating.PG && // For kids m.ReleaseDate.Year < DateTime.Now.Year); // Last year or older var director = movie.Director.Name + " LastName"; var kidSpec = new MovieForKidsSpecificationValidator(); var dirSpec = new MovieDirectedBySpecificationValidator(director); var movieSpec = kidSpec.And(dirSpec); // Act var result = movieSpec.Validate(movie); // Assert Assert.False(result.IsValid); Assert.Contains(result.Errors, e => e.ErrorMessage == "The director name is different."); }
public void Specification_AndSpecification_ShouldReturnTrue() { // Arrange var movie = MovieFactory.GetMixedMovies().FirstOrDefault(m => m.MpaaRating <= MpaaRating.PG && // For kids m.ReleaseDate.Year < DateTime.Now.Year); // Last year or older var director = movie.Director.Name; var kidSpec = new MovieForKidsSpecificationValidator(); var dirSpec = new MovieDirectedBySpecificationValidator(director); var dvdSpec = new AvailableOnStreamingSpecificationValidator(); var movieSpec = kidSpec.And(dirSpec).And(dvdSpec); // Act var result = movieSpec.Validate(movie); // Assert Assert.True(result.IsValid); }