public void Max_ForNullableIntegerPropertyWithMaxValueSelector_ValidatesPropertyAccordingly() { var errorMessage = "Value above max"; var vm = CreateParent(b => b .Check(x => x.NullableIntegerProperty) .Max(x => x.Limit, errorMessage) ); vm.Limit = 3; vm.SetValue(x => x.NullableIntegerProperty, null); ValidationAssert.IsValid(vm); vm.SetValue(x => x.NullableIntegerProperty, vm.Limit); ValidationAssert.IsValid(vm); vm.SetValue(x => x.NullableIntegerProperty, vm.Limit + 1); var expectedResult = CreateValidationResult( Error(errorMessage).For(vm, x => x.NullableIntegerProperty) ); ValidationAssert.AreEqual(expectedResult, vm.ValidationResult); }
public void IsUnique_WithDuplicateStringProperties_InvalidatesViewModel() { var error = "Duplicate item"; var vm = CreateParent(b => b .CheckCollection(x => x.Children, x => x.StringProperty) .IsUnique(StringComparison.CurrentCultureIgnoreCase, error) ); var item1 = new ChildVM("Item 1") { StringProperty = "VAL1" }; var item2 = new ChildVM("Item 2") { StringProperty = "VAL2" }; var item3 = new ChildVM("Item 3") { StringProperty = "VAL3" }; vm.Children.Add(item1); vm.Children.Add(item2); vm.Children.Add(item3); ValidationAssert.IsValid(vm); item3.StringProperty = "VAL2"; var expectedResult = CreateValidationResult( Error(error).For(item3, x => x.StringProperty), Error(error).For(item2, x => x.StringProperty) ); ValidationAssert.AreEqual(expectedResult, vm.ValidationResult); }
public void Max_ForNullableIntegerProperty_ValidatesPropertyAccordingly() { var errorMessage = "Value above max"; int max = 10; int aboveMax = max + 1; var vm = CreateParent(b => b .Check(x => x.NullableIntegerProperty) .Max(max, errorMessage) ); vm.SetValue(x => x.NullableIntegerProperty, null); ValidationAssert.IsValid(vm); vm.SetValue(x => x.NullableIntegerProperty, max); ValidationAssert.IsValid(vm); vm.SetValue(x => x.NullableIntegerProperty, aboveMax); var expectedResult = CreateValidationResult( Error(errorMessage).For(vm, x => x.NullableIntegerProperty) ); ValidationAssert.AreEqual(expectedResult, vm.ValidationResult); }
public void Min_ForNullableIntegerProperty_ValidatesPropertyAccordingly() { var errorMessage = "Value below min"; int min = 10; int belowMin = min - 1; var vm = CreateParent(b => b .Check(x => x.NullableIntegerProperty) .Min(min, errorMessage) ); vm.SetValue(x => x.NullableIntegerProperty, null); ValidationAssert.IsValid(vm); vm.SetValue(x => x.NullableIntegerProperty, min); ValidationAssert.IsValid(vm); vm.SetValue(x => x.NullableIntegerProperty, belowMin); var expectedResult = CreateValidationResult( Error(errorMessage).For(vm, x => x.NullableIntegerProperty) ); ValidationAssert.AreEqual(expectedResult, vm.ValidationResult); }
public void IsUnique_WithDuplicateItemViewModels_InvalidatesDuplicateItems() { var error = "Duplicate item"; var vm = CreateParent(b => b .CheckCollection(x => x.Children) .IsUnique(error) ); var item1 = new ChildVM() { IntegerProperty = 1, StringProperty = "Item1" }; vm.Children.Add(item1); Assert.IsTrue(vm.IsValid); vm.Children.Add(item1); var expectedResult = CreateValidationResult( Error(error).For(item1), Error(error).For(item1) ); ValidationAssert.AreEqual(expectedResult, vm.ValidationResult); }
private static void AssertBehaviorResults(TestVM vm, ExpectedResults results) { ValidationAssert.AreEqual( results.Properties, vm.GetResultFromBehavior(ValidationResultScope.PropertiesOnly) ); ValidationAssert.AreEqual( results.ViewModel, vm.GetResultFromBehavior(ValidationResultScope.ViewModelValidationsOnly) ); ValidationAssert.AreEqual( results.Self, vm.GetResultFromBehavior(ValidationResultScope.Self) ); ValidationAssert.AreEqual( results.Descenants, vm.GetResultFromBehavior(ValidationResultScope.Descendants) ); ValidationAssert.AreEqual( results.All, vm.GetResultFromBehavior(ValidationResultScope.All) ); }
public void Revalidate_ValidationFails_UpdatesValidationState() { SetPropertyToValidValue(); SetPropertyToInvalidValue(); VM.PropertyResultToReturn = InvalidValidationResult; RevalidateProperty(); ValidationAssert.AreEqual(InvalidValidationResult, VM.ValidationResult); }
public void Join_WhenResultsContainSameErrorInstance_FiltersDuplicateErrors() { var error = CreateValidationError(); var s1 = CreateValidationResult(error); var s2 = CreateValidationResult(error); var joined = ValidationResult.Join(s1, s2); ValidationAssert.AreEqual(new ValidationResult(error), joined); }
public void Join_WhenResultsContainEqualErrors_DoesNotFiltersErrors() { var firstEqualError = CreateValidationError("Equal error"); var secondEqualError = CreateValidationError("Equal error"); Assert.AreEqual(firstEqualError, secondEqualError, "Assumption failed"); var s1 = CreateValidationResult(firstEqualError); var s2 = CreateValidationResult(secondEqualError); var joined = ValidationResult.Join(s1, s2); var expected = new ValidationResult(new[] { firstEqualError, secondEqualError }); ValidationAssert.AreEqual(expected, joined); }
public void Revalidate_WhenDescendantAddsValidationError_AddsErrorToAncestorValidationResult() { Results.SetupFailing().PropertyValidation .Targeting(Child, x => x.ChildProperty) .On(Child); Results.SetupFailing().ViewModelValidation .Targeting(Child) .On(Child); Child.Revalidate(x => x.ChildProperty); Results.VerifySetupValidationResults(); var expectedAncestorResult = new ValidationResult( Results.ValidatorSetups.SelectMany(x => x.Result.Errors) ); ValidationAssert.AreEqual(expectedAncestorResult, Grandparent.ValidationResult); }
public void Min_ForIntegerPropertyWithMinValueSelector_ValidatesPropertyAccordingly() { var errorMessage = "Value below min"; var vm = CreateParent(b => b .Check(x => x.IntegerProperty) .Min(x => x.Limit, errorMessage) ); vm.Limit = 3; vm.SetValue(x => x.IntegerProperty, vm.Limit); ValidationAssert.IsValid(vm); vm.SetValue(x => x.IntegerProperty, vm.Limit - 1); var expectedResult = CreateValidationResult( Error(errorMessage).For(vm, x => x.IntegerProperty) ); ValidationAssert.AreEqual(expectedResult, vm.ValidationResult); }
public void IsUnique_WithCustomDuplicateEqualityComparer_InvalidatesViewModel() { var error = "Duplicate item"; var vm = CreateParent(b => b .CheckCollection(x => x.Children) .IsUnique(new CustomChildVMComparer(), error) ); var item1 = new ChildVM() { IntegerProperty = 1, StringProperty = "Item1" }; var item2 = new ChildVM() { IntegerProperty = 2, StringProperty = "Item2" }; var item3 = new ChildVM() { IntegerProperty = 3, StringProperty = "Item3" }; vm.Children.Add(item1); vm.Children.Add(item2); vm.Children.Add(item3); Assert.IsTrue(vm.IsValid); item2.IntegerProperty = 1; item2.StringProperty = "Item1"; var expectedResult = CreateValidationResult( Error(error).For(item2), Error(error).For(item1) ); ValidationAssert.AreEqual(expectedResult, vm.ValidationResult); }
public void IsUnique_WithDuplicateIntegerProperties_InvalidatesViewModel() { var error = "Duplicate item"; var vm = CreateParent(b => b .CheckCollection(x => x.Children, x => x.IntegerProperty) .IsUnique(error) ); var item1 = new ChildVM() { IntegerProperty = 1 }; var item2 = new ChildVM() { IntegerProperty = 2 }; var item3 = new ChildVM() { IntegerProperty = 3 }; vm.Children.Add(item1); vm.Children.Add(item2); vm.Children.Add(item3); Assert.IsTrue(vm.IsValid); item2.IntegerProperty = 1; var expectedResult = CreateValidationResult( Error(error).For(item2, x => x.IntegerProperty), Error(error).For(item1, x => x.IntegerProperty) ); ValidationAssert.AreEqual(expectedResult, vm.ValidationResult); }
public void ValueInRange_ForNullableIntergerProperty_ValidatesPropertyAccordingly() { var errorMessage = "Value not in range"; int min = 1; int max = 10; int valueOutOfRange = max + 1; var vm = CreateParent(b => b .Check(x => x.NullableIntegerProperty) .ValueInRange(min, max, errorMessage) ); vm.SetValue(x => x.NullableIntegerProperty, null); ValidationAssert.IsValid(vm); vm.SetValue(x => x.NullableIntegerProperty, valueOutOfRange); var expectedResult = CreateValidationResult( Error(errorMessage).For(vm, x => x.NullableIntegerProperty) ); ValidationAssert.AreEqual(expectedResult, vm.ValidationResult); }