예제 #1
0
            public void ReturnsChangesForAddedFieldWarning()
            {
                var fieldValidationResults1 = new List <IFieldValidationResult>();

                fieldValidationResults1.Add(FieldValidationResult.CreateError("MyProperty", "FieldError"));

                var businessRuleValidationResults1 = new List <IBusinessRuleValidationResult>();

                businessRuleValidationResults1.Add(BusinessRuleValidationResult.CreateWarning("BusinessRuleWarning"));
                businessRuleValidationResults1.Add(BusinessRuleValidationResult.CreateError("BusinessRuleError"));
                var context1 = new ValidationContext(fieldValidationResults1, businessRuleValidationResults1);

                var fieldValidationResults2 = new List <IFieldValidationResult>();

                fieldValidationResults2.Add(FieldValidationResult.CreateWarning("MyProperty", "FieldWarning"));
                fieldValidationResults2.Add(FieldValidationResult.CreateError("MyProperty", "FieldError"));

                var businessRuleValidationResults2 = new List <IBusinessRuleValidationResult>();

                businessRuleValidationResults2.Add(BusinessRuleValidationResult.CreateWarning("BusinessRuleWarning"));
                businessRuleValidationResults2.Add(BusinessRuleValidationResult.CreateError("BusinessRuleError"));
                var context2 = new ValidationContext(fieldValidationResults2, businessRuleValidationResults2);

                var changes = ValidationContextHelper.GetChanges(context1, context2);

                Assert.AreEqual(1, changes.Count);
                Assert.AreEqual("MyProperty", ((IFieldValidationResult)changes[0].ValidationResult).PropertyName);
                Assert.AreEqual("FieldWarning", changes[0].ValidationResult.Message);
                Assert.AreEqual(ValidationResultType.Warning, changes[0].ValidationResult.ValidationResultType);
                Assert.AreEqual(ValidationContextChangeType.Added, changes[0].ChangeType);
            }
예제 #2
0
            public void ReturnsEmptyCollectionForEqualValidationContexts()
            {
                var fieldValidationResults1 = new List <IFieldValidationResult>();

                fieldValidationResults1.Add(FieldValidationResult.CreateWarning("MyProperty", "FieldWarning"));
                fieldValidationResults1.Add(FieldValidationResult.CreateError("MyProperty", "FieldError"));

                var businessRuleValidationResults1 = new List <IBusinessRuleValidationResult>();

                businessRuleValidationResults1.Add(BusinessRuleValidationResult.CreateWarning("BusinessRuleWarning"));
                businessRuleValidationResults1.Add(BusinessRuleValidationResult.CreateError("BusinessRuleError"));
                var context1 = new ValidationContext(fieldValidationResults1, businessRuleValidationResults1);

                var fieldValidationResults2 = new List <IFieldValidationResult>();

                fieldValidationResults2.Add(FieldValidationResult.CreateWarning("MyProperty", "FieldWarning"));
                fieldValidationResults2.Add(FieldValidationResult.CreateError("MyProperty", "FieldError"));

                var businessRuleValidationResults2 = new List <IBusinessRuleValidationResult>();

                businessRuleValidationResults2.Add(BusinessRuleValidationResult.CreateWarning("BusinessRuleWarning"));
                businessRuleValidationResults2.Add(BusinessRuleValidationResult.CreateError("BusinessRuleError"));
                var context2 = new ValidationContext(fieldValidationResults2, businessRuleValidationResults2);

                var changes = ValidationContextHelper.GetChanges(context1, context2);

                Assert.AreEqual(0, changes.Count);
            }
예제 #3
0
        partial void AttributeBasedValidation(string propertyName, ValidationResultCollection results)
        {
            var property = Properties.Metadata.Properties[propertyName];

            if (property.CanRead)
            {
                var context = ValidationContextHelper.Create(this);
                context.MemberName = property.Name;
                Validator.TryValidateProperty(property.InvokeGet(this), context, results);
            }
        }
예제 #4
0
 public void ThrowsArgumentNullExceptionForNullSecondArgument()
 {
     ExceptionTester.CallMethodAndExpectException <ArgumentNullException>(() => ValidationContextHelper.GetChanges(new ValidationContext(), null));
 }
예제 #5
0
            public void ReturnsChangesForComplexScenario()
            {
                var fieldValidationResults1 = new List <IFieldValidationResult>();

                fieldValidationResults1.Add(FieldValidationResult.CreateWarning("MyProperty", "FieldWarning"));
                fieldValidationResults1.Add(FieldValidationResult.CreateError("MyProperty", "FieldError"));

                var businessRuleValidationResults1 = new List <IBusinessRuleValidationResult>();

                businessRuleValidationResults1.Add(BusinessRuleValidationResult.CreateWarning("BusinessRuleWarning"));
                businessRuleValidationResults1.Add(BusinessRuleValidationResult.CreateError("BusinessRuleError"));
                var context1 = new ValidationContext(fieldValidationResults1, businessRuleValidationResults1);

                var fieldValidationResults2 = new List <IFieldValidationResult>();

                fieldValidationResults2.Add(FieldValidationResult.CreateWarning("MyProperty", "FieldWarningTextHasChanged"));
                fieldValidationResults2.Add(FieldValidationResult.CreateError("NewProperty", "FieldErrorForNewProperty"));

                var businessRuleValidationResults2 = new List <IBusinessRuleValidationResult>();

                businessRuleValidationResults2.Add(BusinessRuleValidationResult.CreateWarning("BusinessRuleWarningTextHasChanged"));
                var context2 = new ValidationContext(fieldValidationResults2, businessRuleValidationResults2);

                var changes = ValidationContextHelper.GetChanges(context1, context2);

                Assert.AreEqual(7, changes.Count);
                int counter;

                // Field warning text has changed, thus removed
                counter = 0;
                Assert.AreEqual("MyProperty", ((IFieldValidationResult)changes[counter].ValidationResult).PropertyName);
                Assert.AreEqual("FieldWarning", changes[counter].ValidationResult.Message);
                Assert.AreEqual(ValidationResultType.Warning, changes[counter].ValidationResult.ValidationResultType);
                Assert.AreEqual(ValidationContextChangeType.Removed, changes[counter].ChangeType);

                // Field error has been removed
                counter++;
                Assert.AreEqual("MyProperty", ((IFieldValidationResult)changes[counter].ValidationResult).PropertyName);
                Assert.AreEqual("FieldError", changes[counter].ValidationResult.Message);
                Assert.AreEqual(ValidationResultType.Error, changes[counter].ValidationResult.ValidationResultType);
                Assert.AreEqual(ValidationContextChangeType.Removed, changes[counter].ChangeType);

                // Field warning text has changed, thus added
                counter++;
                Assert.AreEqual("MyProperty", ((IFieldValidationResult)changes[counter].ValidationResult).PropertyName);
                Assert.AreEqual("FieldWarningTextHasChanged", changes[counter].ValidationResult.Message);
                Assert.AreEqual(ValidationResultType.Warning, changes[counter].ValidationResult.ValidationResultType);
                Assert.AreEqual(ValidationContextChangeType.Added, changes[counter].ChangeType);

                // Field error added
                counter++;
                Assert.AreEqual("NewProperty", ((IFieldValidationResult)changes[counter].ValidationResult).PropertyName);
                Assert.AreEqual("FieldErrorForNewProperty", changes[counter].ValidationResult.Message);
                Assert.AreEqual(ValidationResultType.Error, changes[counter].ValidationResult.ValidationResultType);
                Assert.AreEqual(ValidationContextChangeType.Added, changes[counter].ChangeType);

                // Business rule text has changed, thus removed
                counter++;
                Assert.AreEqual("BusinessRuleWarning", changes[counter].ValidationResult.Message);
                Assert.AreEqual(ValidationResultType.Warning, changes[counter].ValidationResult.ValidationResultType);
                Assert.AreEqual(ValidationContextChangeType.Removed, changes[counter].ChangeType);

                // Business rule error has been removed
                counter++;
                Assert.AreEqual("BusinessRuleError", changes[counter].ValidationResult.Message);
                Assert.AreEqual(ValidationResultType.Error, changes[counter].ValidationResult.ValidationResultType);
                Assert.AreEqual(ValidationContextChangeType.Removed, changes[counter].ChangeType);

                // Business rule text has changed, thus added
                counter++;
                Assert.AreEqual("BusinessRuleWarningTextHasChanged", changes[counter].ValidationResult.Message);
                Assert.AreEqual(ValidationResultType.Warning, changes[counter].ValidationResult.ValidationResultType);
                Assert.AreEqual(ValidationContextChangeType.Added, changes[counter].ChangeType);
            }