public void Update_AddingManyValidation_ItUpdatesAllUpdateMethodsFromValidationsAdded() { // Arrange var person = Fixture.Create <Person>(); var validation = new CompositeValidation <Person>(person); var allValidation = MockAllValidations(validation); var firstNameMock = allValidation.FirstNameMock; var lastNameMock = allValidation.LastNameMock; var hasDriverLicenseMock = allValidation.HasDriverLicenseMock; var ageValidationMock = allValidation.AgeValidationMock; // Act validation.Update(); // Assert validation.Validations.ShouldContain(firstNameMock.Object); validation.Validations.ShouldContain(lastNameMock.Object); validation.Validations.ShouldContain(hasDriverLicenseMock.Object); validation.Validations.ShouldContain(ageValidationMock.Object); firstNameMock.Verify(x => x.Update(person.FirstName), Times.Once); lastNameMock.Verify(x => x.Update(person.LastName), Times.Once); hasDriverLicenseMock.Verify(x => x.Update(person.HasDriverLicense), Times.Once); ageValidationMock.Verify(x => x.Update(person.Age), Times.Once); }
private ValidationsMocked MockAllValidations(CompositeValidation <Person> validation) { var firstNameMock = new Mock <IValidation <string> >(); var lastNameMock = new Mock <IValidation <string> >(); var hasDriverLicenseMock = new Mock <IValidation <bool> >(); var ageValidationMock = new Mock <IValidation <int> >(); SetupEmptyFailures(firstNameMock, lastNameMock); SetupEmptyFailures(hasDriverLicenseMock); SetupEmptyFailures(ageValidationMock); firstNameMock.Setup(x => x.GroupName).Returns("FirstName"); lastNameMock.Setup(x => x.GroupName).Returns("LastName"); hasDriverLicenseMock.Setup(x => x.GroupName).Returns("HasDriverLicense"); ageValidationMock.Setup(x => x.GroupName).Returns("Age"); firstNameMock.Setup(x => x.Message).Returns("FirstName is not valid"); lastNameMock.Setup(x => x.Message).Returns("LastName is not valid"); hasDriverLicenseMock.Setup(x => x.Message).Returns("HasDriverLicense is not valid"); ageValidationMock.Setup(x => x.Message).Returns("Age is not valid"); validation.Add(firstNameMock.Object, x => x.FirstName); validation.Add(lastNameMock.Object, x => x.LastName); validation.Add(hasDriverLicenseMock.Object, x => x.HasDriverLicense); validation.Add(ageValidationMock.Object, x => x.Age); return(new ValidationsMocked(firstNameMock, lastNameMock, hasDriverLicenseMock, ageValidationMock)); }
public void NotEmpty_AddingNotEmptyList_ItAddsNotEmptyEnumerableValidation() { // Arrange var validation = new CompositeValidation <Person>(); // Act validation.NotEmpty("AnyGroupName", x => new List <object>()); // Assert validation.Validations.OfType <NotEmptyEnumerableValidation <object> >().Count().ShouldBe(1); }
public void NotEmpty_AddingNotEmptyString_ItAddsNotEmptyStringValidation() { // Arrange var validation = new CompositeValidation <Person>(); // Act validation.NotEmpty("AnyGroupName", x => x.FirstName); // Assert validation.Validations.OfType <NotEmptyStringValidation>().Count().ShouldBe(1); }
public void Null_AddingNullValidation_ItAddsNullValidation() { // Arrange var validation = new CompositeValidation <Person>(); // Act validation.Null("AnyGroupName", x => x); // Assert validation.Validations.Single().ShouldBeOfType <NullValidation>(); validation.Validations.OfType <NullValidation>().Single().AcceptNull.ShouldBeTrue(); }
public void Update_PassingGroupNameAndValue_ItUpdatesValidationAccordingWithGroupNamePassed() { // Arrange var validation = new CompositeValidation <Person>(); var lastName = Guid.NewGuid().ToString(); var allValidation = MockAllValidations(validation); var lastNameMock = allValidation.LastNameMock; // Act validation.Update("LastName", lastName); // Assert lastNameMock.Verify(x => x.Update(lastName), Times.Once); }
public void Update_ConfiguringValidationWithAddForEach_ItUpdateTheValidationCorrectly() { // Arrange string summaryMessage = "#TestError"; var personValidation = new CompositeValidation <Person>(null, null, summaryMessage) .NotNull(nameof(Person.FirstName), x => x.FirstName) .MinimumLength(nameof(Person.FirstName), x => x.FirstName, 3) .MaximumLength(nameof(Person.FirstName), x => x.FirstName, 10) .NotNull(nameof(Person.LastName), x => x.LastName) .MinimumLength(nameof(Person.LastName), x => x.LastName, 3) .MaximumLength(nameof(Person.LastName), x => x.LastName, 10); const string minimumPlayersMessage = "A Football team must have at least 11 players"; const string maximumPlayersMessage = "Including the substitutes a Football team can not have more 23 players"; var footballTeamValidation = new CompositeValidation <FootballTeam>() .AddForEach(personValidation, team => team.Players) .MinimumSize("Players", x => x.Players, 11, minimumPlayersMessage) .MaximumSize("Players", x => x.Players, 23, maximumPlayersMessage); var footballTeam = new FootballTeam() { Name = "Liverpool", Players = new List <Person>() { new Person() { FirstName = "Steven", LastName = "Gerard" }, new Person() { FirstName = "Invalid", LastName = "a" } } }; // Act footballTeamValidation.Update(footballTeam); // Assert footballTeamValidation.IsValid.ShouldBeFalse(); footballTeamValidation.Failures.Count.ShouldBe(2); footballTeamValidation.Failures.First().Message.ShouldBe(summaryMessage); footballTeamValidation.Failures.ElementAt(1).Message.ShouldBe(minimumPlayersMessage); }
public void Update_ForcingFailedValidationAndPassingSummaryMessage_ItInsertsTheSummaryMessage() { // Arrange var person = Fixture.Create <Person>(); var summaryMessage = "#TestSummaryMessage"; var validation = new CompositeValidation <Person>(null, null, summaryMessage); var stopValidation = new MustNotValidation <object>("Failing", x => true); validation.Add(stopValidation, x => x); // Act validation.Update(person); // Assert validation.IsValid.ShouldBeFalse(); validation.Failures.Count.ShouldBe(2); validation.Failures.First().Message.ShouldBe(summaryMessage); }
public void Update_PassingGroupNameAndKeepingTargetNull_NoValidationAreCalled() { // Arrange var person = Fixture.Create <Person>(); var validation = new CompositeValidation <Person>(person); var allValidation = MockAllValidations(validation); var firstNameMock = allValidation.FirstNameMock; var lastNameMock = allValidation.LastNameMock; var hasDriverLicenseMock = allValidation.HasDriverLicenseMock; var ageValidationMock = allValidation.AgeValidationMock; // Act validation.Update("LastName"); // Assert firstNameMock.Verify(x => x.Update(person.FirstName), Times.Never); lastNameMock.Verify(x => x.Update(person.LastName), Times.Once); hasDriverLicenseMock.Verify(x => x.Update(person.HasDriverLicense), Times.Never); ageValidationMock.Verify(x => x.Update(person.Age), Times.Never); }
public void UpdatePartially3_UpdatingPartiallyAGroupName_ItRaisesFailuresCorrectlyWithTheSummaryMessage() { //Arrange var summaryMessage = "#TestSummaryMessage"; var validations = new CompositeValidation <Person>(null, null, summaryMessage) .NotNull(nameof(Person.FirstName), x => x.FirstName) .MinimumLength(nameof(Person.FirstName), x => x.FirstName, 3) .MaximumLength(nameof(Person.FirstName), x => x.FirstName, 10) .NotNull(nameof(Person.LastName), x => x.LastName) .MinimumLength(nameof(Person.LastName), x => x.LastName, 3) .MaximumLength(nameof(Person.LastName), x => x.LastName, 10); var person = new Person() { FirstName = "Hugo", LastName = "Jose", Email = "*****@*****.**", Phone = "+5501234567", BirthDate = DateTime.Now.AddYears(-20) }; // Act validations.Update(person); validations.Update("LastName", "J"); // Assert validations.IsValid.ShouldBeFalse(); validations.Failures.Count.ShouldBe(2); validations.Failures.First().Validation.ShouldBe(validations); validations.Failures.Select(x => x.Validation) .OfType <CompositeValidation <Person> >().Single() .SummaryMessage.ShouldBe(summaryMessage); validations.Failures.Single(x => x.GroupName == nameof(Person.LastName)) .Validation.ShouldBeOfType <StringMinimumLengthValidation>(); }
public void Update_MustAndNotMust_NoErrors() { var footballTeamValidation = new CompositeValidation <FootballTeam>() .MustForEach("Players", x => x.Players, x => x?.FirstName != null) .MustNotForEach("Players", x => x.Players, x => x?.LastName == null); var footballTeam = new FootballTeam() { Name = "Liverpool 2005", Players = new List <Person>() { new Person() { FirstName = "Jerzy", LastName = "Dudek" }, new Person() { FirstName = "Steve", LastName = "Finnan" }, new Person() { FirstName = "Jamie", LastName = "Carragher" }, new Person() { FirstName = "Sami", LastName = "Hyypia" }, new Person() { FirstName = "Djimi", LastName = "Traoré" }, new Person() { FirstName = "Xabi", LastName = "Alonso" }, new Person() { FirstName = "Luis", LastName = "García" }, new Person() { FirstName = "Steven", LastName = "Gerrard" }, new Person() { FirstName = "John", LastName = "Arne Riise" }, new Person() { FirstName = "Harry", LastName = "Kewell" }, new Person() { FirstName = "Milan", LastName = "Baroš" }, new Person() { FirstName = "Hugo", LastName = "Jose" } } }; // Act footballTeamValidation.Update(footballTeam); // Assert footballTeamValidation.IsValid.ShouldBeTrue(); footballTeamValidation.Failures.Count.ShouldBe(0); }
public void Update_RegExAndEmailForEach_RaisesErrors() { var footballTeamValidation = new CompositeValidation <FootballTeam>() .EmailForEach("Players", x => x.Players.Select(y => y.LastName)) .RegExForEach("Players", x => x.Players.Select(y => y.FirstName), "^[a-zA-Z]+$"); var footballTeam = new FootballTeam() { Name = "Liverpool 2005", Players = new List <Person>() { new Person() { FirstName = "Jerzy", LastName = "Dudek" }, new Person() { FirstName = "Steve", LastName = "Finnan" }, new Person() { FirstName = "Jamie", LastName = "Carragher" }, new Person() { FirstName = "Sami", LastName = "Hyypia" }, new Person() { FirstName = "Djimi", LastName = "Traoré" }, new Person() { FirstName = "Xabi", LastName = "Alonso" }, new Person() { FirstName = "Luis", LastName = "García" }, new Person() { FirstName = "Steven", LastName = "Gerrard" }, new Person() { FirstName = "John", LastName = "Arne Riise" }, new Person() { FirstName = "Harry", LastName = "Kewell" }, new Person() { FirstName = "Milan", LastName = "Baroš" }, new Person() { FirstName = "Hugooool9", LastName = "Jose" } } }; // Act footballTeamValidation.Update(footballTeam); // Assert footballTeamValidation.IsValid.ShouldBeFalse(); footballTeamValidation.Failures.Count.ShouldBe(2); }
public void Update2_ConfiguringValidationWithAddForEach_ItUpdateTheValidationCorrectly() { // Arrange var personValidation = new CompositeValidation <Person>() .NotNull(nameof(Person.FirstName), x => x.FirstName) .MinimumLength(nameof(Person.FirstName), x => x.FirstName, 3) .MaximumLength(nameof(Person.FirstName), x => x.FirstName, 10) .NotNull(nameof(Person.LastName), x => x.LastName) .MinimumLength(nameof(Person.LastName), x => x.LastName, 3) .MaximumLength(nameof(Person.LastName), x => x.LastName, 10); const string maximumPlayersMessage = "a Football team can not have more 11 players"; var footballTeamValidation = new CompositeValidation <FootballTeam>() .AddForEach(personValidation, team => team.Players) .MaximumSize("Players", x => x.Players, 11, maximumPlayersMessage); var footballTeam = new FootballTeam() { Name = "Liverpool 2005", Players = new List <Person>() { new Person() { FirstName = "Jerzy", LastName = "Dudek" }, new Person() { FirstName = "Steve", LastName = "Finnan" }, new Person() { FirstName = "Jamie", LastName = "Carragher" }, new Person() { FirstName = "Sami", LastName = "Hyypia" }, new Person() { FirstName = "Djimi", LastName = "Traoré" }, new Person() { FirstName = "Xabi", LastName = "Alonso" }, new Person() { FirstName = "Luis", LastName = "García" }, new Person() { FirstName = "Steven", LastName = "Gerrard" }, new Person() { FirstName = "John", LastName = "Arne Riise" }, new Person() { FirstName = "Harry", LastName = "Kewell" }, new Person() { FirstName = "Milan", LastName = "Baroš" }, new Person() { FirstName = "Hugo", LastName = "Jose" } } }; // Act footballTeamValidation.Update(footballTeam); // Assert footballTeamValidation.IsValid.ShouldBeFalse(); footballTeamValidation.Failures.Count.ShouldBe(1); footballTeamValidation.Failures.First().Message.ShouldBe(maximumPlayersMessage); }