public void CascadeValidate() { // Arrange var manager = new Manager() { Reports = { new Employee() { EmployeeId = 1 }, new Employee() { EmployeeId = 2 }, new Employee() { EmployeeId = 3 }, } }; foreach (var dataRow in manager.Reports) { this.ValidationEngine.Validate(typeof(Employee), dataRow, Arg.Any<string[]>()) .Returns(new[]{new ValidationResult() { PropertyName = "Id", Context = dataRow, Message = string.Format("Item {0}", dataRow.EmployeeId) }, }); } // Act var results = this.Validator.Validate(manager).ToList(); // Assert Assert.That(results, Has.Count.EqualTo(3)); foreach(var employee in manager.Reports) { this.ValidationEngine.Received().Validate(typeof(Employee), employee, Arg.Is<string[]>(arg => arg.Length == 0)); } for (var i = 0; i < 3; i++) { var result = results[i]; Assert.That(result.PropertyName, Is.EqualTo(string.Format("Reports[{0}].Id", i))); } }
public void Validate() { // Arrange var validatorProvider = new DefaultValidatorProvider(); validatorProvider.RegisterValidator(new SaveEmployeeValidator()); Validator.SetValidatorProvider(validatorProvider); var manager = new Manager(); // Act var validator = new AncestorTypeValidator<Manager, Employee>(RulesSets.Crud.Save); var results = validator.Validate(manager); // Assert Assert.That(results, Is.Not.Empty); }
public void CascadeOverManager_Should_SetPropertyNamesCorrectlyForAllDescendants() { // Arrange var config = new ValidationConfiguration(); config.Configure(); var manager = new Manager() { Reports = new List<Employee>() { new Employee { ContactInfo = new[] { new ContactInfo(), } }, } }; // Act var results = Validator.Validate(manager, RulesSets.Crud.Save); // Assert var result = results.FirstOrDefault(vr => vr.PropertyName == "Reports[0].ContactInfo[0].Text"); Assert.That(result, Is.Not.Null); }
public void Cascade_WithGenericType_InValidValues() { // Arrange var validatorProvider = new DefaultValidatorProvider(); validatorProvider.RegisterValidator(new SaveEmployeeValidator()); validatorProvider.RegisterValidator(new SaveManagerValidator()); Validator.SetValidatorProvider(validatorProvider); var validator = Properties<Manager> .For(e => e.Reports) .Cascade<Employee>("Save") ; // Act var manager = new Manager(); var reports = Builder<Manager> .CreateListOfSize(1) .All() .Do(m => m.Age += 20) .Do(m => m.Address = Builder<Address>.CreateNew().Build()) .Do(m => m.ContactInfo = Builder<ContactInfo>.CreateListOfSize(3).Build()) .Do(m => m.ReportsTo = null) .Build(); manager.Reports = reports.Cast<Employee>().ToList(); var results = validator.Validate(manager).ToList(); // Assert Assert.That(results, Is.Not.Empty); for (var i = 0; i < manager.Reports.Count; i++) { var expectedPropertyName = string.Format("Reports[{0}].ReportsTo", i); var expectedResults = results.Where(vr => vr.PropertyName == expectedPropertyName).ToList(); Assert.That(expectedResults, Is.Not.Empty); foreach (var expectedResult in expectedResults) Assert.That(expectedResult.Context == manager); } }
public void Cascade_WithGenericType_InvalidValuesForSubType() { // Arrange var validatorProvider = new DefaultValidatorProvider(); validatorProvider.RegisterValidator(new SaveEmployeeValidator()); validatorProvider.RegisterValidator(new SaveManagerValidator()); Validator.SetValidatorProvider(validatorProvider); var validator = Properties<Manager> .For(e => e.Reports) .Cascade<Employee>("Save") ; // Act var manager = new Manager(); var reports = Builder<Manager> .CreateListOfSize(1) .All() .Do(m => m.Age += 20) .Do(m => m.Address = Builder<Address>.CreateNew().Build()) .Do(m => m.ContactInfo = Builder<ContactInfo>.CreateListOfSize(3).Build()) .Do(m => m.ReportsTo = manager) .Do(m => m.IsSalaried = true) .Do(m => m.Reports = new List<Employee>()) .Build(); manager.Reports = reports.Cast<Employee>().ToList(); var results = validator.Validate(manager).ToList(); // Assert Assert.That(results, Is.Empty); }
public void methodName() { // Arrange this.ValidationEngine = Substitute.For<IValidationEngine>(); var report = new Manager(); // Act this.ValidationEngine.Validate(typeof(Manager), report, Arg.Is<string[]>(row => row.Contains("Save"))).Returns(new[] { new ValidationResult(), }); // Assert var results = this.ValidationEngine.Validate(typeof (Manager), report, new[] {"Save"}); Assert.That(results, Is.Not.Empty); }
public void Cascade_Enumerable_InValidValues() { // Arrange this.ValidationEngine = Substitute.For<IValidationEngine>(); Simple.Validation.Validator.SetValidationEngine(this.ValidationEngine); var validator = Properties<Manager> .For(e => e.Reports) .Cascade("Save") ; // Act var manager = new Manager(); var reports = Builder<Manager> .CreateListOfSize(1) .All() .Do(m => m.Reports = Builder<Employee> .CreateListOfSize(10) .All() .Build()) .Build(); manager.Reports = reports.Cast<Employee>().ToList(); foreach(var report in reports) { this.ValidationEngine .Validate(typeof(Manager), report, "Save") .Returns(new [] { new ValidationResult() { PropertyName = "Age", Message = string.Format("Report {0} has an error", report.EmployeeId), }, }); } var results = validator.Validate(manager).ToList(); // Assert Assert.That(results, Is.Not.Empty); for (var i = 0; i < manager.Reports.Count; i++) { var expectedPropertyName = string.Format("Reports[{0}].Age", i); var expectedResults = results.Where(vr => vr.PropertyName == expectedPropertyName).ToList(); Assert.That(expectedResults, Is.Not.Empty); foreach (var expectedResult in expectedResults) { Assert.That(expectedResult.Context == manager); } } }
public void Cascade_Enumerable_ValidValues() { // Arrange var validator = Properties<Manager> .For(e => e.Reports) .Cascade("Save") ; // Act var manager = new Manager(); var reports = Builder<Manager> .CreateListOfSize(1) .All() .Do(m => m.Age += 20) .Do(m => m.Address = Builder<Address>.CreateNew().Build()) .Do(m => m.ContactInfo = Builder<ContactInfo>.CreateListOfSize(3).Build()) .Do(m => m.ReportsTo = manager) .Do(m => m.IsSalaried = true) .Do(m => m.Reports = Builder<Employee> .CreateListOfSize(10) .All() .Do(e => e.Address = Builder<Address>.CreateNew().Build()) .Do(e => e.ReportsTo = m) .Do(e => e.ContactInfo = Builder<ContactInfo>.CreateListOfSize(3).Build()) .Do(e => e.Age += 20) .Do(e => e.IsHourly = true) .Do(e => e.IsSalaried = false) .Build()) .Build(); manager.Reports = reports.Cast<Employee>().ToList(); var results = validator.Validate(manager).ToList(); // Assert Assert.That(results, Is.Empty); }