public void AutomaticRecusiveValidatableCollectionEnsureElements() { ValidatableMock obj = new ValidatableMock(); NotifierValidator val = new NotifierValidator(); val.RegisterNotifier(obj); int counter = 0; ((INotifyCollectionChanged)val.Messages).CollectionChanged += (s, e) => counter++; var first = obj.RecursiveValidatableCollection.First(); var ignoredFirst = obj.IgnoredRecursiveValidatableCollection.First(); obj.RecursiveValidatableCollection.Remove(first); obj.IgnoredRecursiveValidatableCollection.Remove(ignoredFirst); Assert.Equal(1, counter); Assert.Single(val.Messages); Assert.Equal(1, val.Messages.Count(r => r.Path == $"" && r.PropertyName == nameof(obj.RecursiveValidatableCollection))); var added = new RecursiveValidatableMock(); var ignoredAdded = new RecursiveValidatableMock(); obj.RecursiveValidatableCollection.Add(added); obj.IgnoredRecursiveValidatableCollection.Add(ignoredAdded); Assert.Equal(2, counter); Assert.Empty(val.Messages); Assert.Equal(0, val.Messages.Count(r => r.Path == $"" && r.PropertyName == nameof(obj.RecursiveValidatableCollection))); }
public void ManualRecursiveValidatableCollection() { ValidatableMock obj = new ValidatableMock(); RecursiveValidatableMock first = obj.RecursiveValidatableCollection.First(); first.Id = 0; // Make invalid because must be greater than 0 obj.IgnoredName = null; // Must be ignored obj.IgnoredRecursiveValidatable = null; // Must be ignored obj.IgnoredRecursiveValidatableCollection.First().Id = 0; // Must be ignored ICollection <NotifierValidatorMessage> res = NotifierValidator.Validate(obj); PrintValidatorResults(res); Assert.Single(res); Assert.Equal(1, res.Count(r => r.Path == $"{nameof(obj.RecursiveValidatableCollection)}[{first}]" && r.PropertyName == nameof(obj.Id))); }
public void AutomaticRecusiveValidatableCollectionNull() { ValidatableMock obj = new ValidatableMock(); NotifierValidator val = new NotifierValidator(); val.RegisterNotifier(obj); int counter = 0; ((INotifyCollectionChanged)val.Messages).CollectionChanged += (s, e) => counter++; obj.RecursiveValidatableCollection = null; obj.IgnoredRecursiveValidatableCollection = null; PrintValidatorResults(val.Messages); Assert.Equal(1, counter); Assert.Single(val.Messages); Assert.Equal(1, val.Messages.Count(r => r.Path == $"" && r.PropertyName == nameof(obj.RecursiveValidatableCollection))); obj.RecursiveValidatableCollection = new ObservableCollection <RecursiveValidatableMock>(); obj.IgnoredRecursiveValidatableCollection = new ObservableCollection <RecursiveValidatableMock>(); PrintValidatorResults(val.Messages); var added = new RecursiveValidatableMock(); var ignoredAdded = new RecursiveValidatableMock(); obj.RecursiveValidatableCollection.Add(added); obj.IgnoredRecursiveValidatableCollection.Add(ignoredAdded); PrintValidatorResults(val.Messages); Assert.Equal(2, counter); Assert.Empty(val.Messages); Assert.Equal(0, val.Messages.Count(r => r.Path == $"" && r.PropertyName == nameof(obj.RecursiveValidatableCollection))); added.Id = -1; ignoredAdded.Id = -1; PrintValidatorResults(val.Messages); Assert.Equal(3, counter); Assert.Single(val.Messages); Assert.Equal(1, val.Messages.Count(r => r.Path == $"{nameof(obj.RecursiveValidatableCollection)}[{added}]" && r.PropertyName == nameof(obj.Id))); }
public void AutomaticRecusiveValidatableCollection() { ValidatableMock obj = new ValidatableMock(); NotifierValidator val = new NotifierValidator(); val.RegisterNotifier(obj); int counter = 0; ((INotifyCollectionChanged)val.Messages).CollectionChanged += (s, e) => counter++; var first = obj.RecursiveValidatableCollection.First(); var ignoredFirst = obj.IgnoredRecursiveValidatableCollection.First(); first.Id = 0; // Make invalid because must be greater than 0 ignoredFirst.Id = 0; // Must be ignored PrintValidatorResults(val.Messages); Assert.Equal(1, counter); Assert.Single(val.Messages); Assert.Equal(1, val.Messages.Count(r => r.Path == $"{nameof(obj.RecursiveValidatableCollection)}[{first}]" && r.PropertyName == nameof(obj.Id))); first.Name = "Fuxion678901"; // Make invalid because has more than 10 character length ignoredFirst.Name = "Fuxion678901"; // Must be ignored PrintValidatorResults(val.Messages); Assert.Equal(2, counter); Assert.Equal(2, val.Messages.Count); Assert.Equal(1, val.Messages.Count(r => r.Path == $"{nameof(obj.RecursiveValidatableCollection)}[{first}]" && r.PropertyName == nameof(obj.Name))); first.Id = 1; // Make valid ignoredFirst.Id = 1; // Must be ignored PrintValidatorResults(val.Messages); Assert.Equal(3, counter); Assert.Single(val.Messages); Assert.Equal(0, val.Messages.Count(r => r.Path == $"{nameof(obj.RecursiveValidatableCollection)}[{first}]" && r.PropertyName == nameof(obj.Id))); // When Id is valid again, and change to 0, the entry for name must change its Path for new first.ToString result Assert.Equal(1, val.Messages.Count(r => r.Path == $"{nameof(obj.RecursiveValidatableCollection)}[{first}]" && r.PropertyName == nameof(obj.Name))); var added = new RecursiveValidatableMock { Id = 1, Name = "Valid" }; var ignoredAdded = new RecursiveValidatableMock { Id = 1, Name = "Valid" }; obj.RecursiveValidatableCollection.Add(added); obj.IgnoredRecursiveValidatableCollection.Add(ignoredAdded); added.Id = -1; // Make invalid because must be greater than 0 ignoredAdded.Id = -1; // Must be ignored PrintValidatorResults(val.Messages); Assert.Equal(4, counter); Assert.Equal(2, val.Messages.Count); Assert.Equal(1, val.Messages.Count(r => r.Path == $"{nameof(obj.RecursiveValidatableCollection)}[{added}]" && r.PropertyName == nameof(obj.Id))); obj.RecursiveValidatableCollection.Remove(added); obj.IgnoredRecursiveValidatableCollection.Remove(ignoredAdded); PrintValidatorResults(val.Messages); Assert.Equal(0, val.Messages.Count(r => r.Path == $"{nameof(obj.RecursiveValidatableCollection)}[{added}]" && r.PropertyName == nameof(obj.Id))); added.Name = "Fuxion678901"; // Make invalid because has more than 10 character length ignoredAdded.Name = "Fuxion678901"; // Must be ignored PrintValidatorResults(val.Messages); Assert.Equal(5, counter); Assert.Single(val.Messages); Assert.Equal(0, val.Messages.Count(r => r.Path == $"{nameof(obj.RecursiveValidatableCollection)}[{added}]" && r.PropertyName == nameof(obj.Name))); val.UnregisterNotifier(first); val.UnregisterNotifier(ignoredFirst); Assert.Empty(val.Messages); }