コード例 #1
0
        public void ValidationIsPerformedOnCollectionElementsUsingSuppliedRuleset()
        {
            object instance1 = new ObjectCollectionValidatorFixtureReferencedTestClass();
            object instance2 = new ObjectCollectionValidatorFixtureReferencedTestClass();
            object target    = new object[] { instance1, instance2 };

            Validator validator = new ObjectCollectionValidator(typeof(ObjectCollectionValidatorFixtureReferencedTestClass), "RuleB");

            ValidationResults validationResults = new ValidationResults();

            validator.DoValidate(target, this, "key", validationResults);                       // setting the currentTarget and the key

            Assert.IsFalse(validationResults.IsValid);
            IList <ValidationResult> resultsList = ValidationTestHelper.GetResultsList(validationResults);

            Assert.AreEqual(2, resultsList.Count);

            Assert.AreEqual("PropertyInReferencedObject-RuleB", resultsList[0].Message);
            Assert.AreEqual("PropertyInReferencedObject", resultsList[0].Key);
            Assert.AreEqual(null, resultsList[0].Tag);
            Assert.AreSame(instance1, resultsList[0].Target);

            Assert.AreEqual("PropertyInReferencedObject-RuleB", resultsList[1].Message);
            Assert.AreEqual("PropertyInReferencedObject", resultsList[1].Key);
            Assert.AreEqual(null, resultsList[1].Tag);
            Assert.AreSame(instance2, resultsList[1].Target);
        }
コード例 #2
0
        public void ValidationOfNullLogsNoError()
        {
            Validator validator = new ObjectCollectionValidator(typeof(ObjectCollectionValidatorFixtureReferencedTestClass));

            ValidationResults validationResults = validator.Validate(null);

            Assert.IsTrue(validationResults.IsValid);
        }
コード例 #3
0
        public void ValidationOfCollectionWithNullLogsNoError()
        {
            object    target    = new ObjectCollectionValidatorFixtureReferencedTestClass[] { null };
            Validator validator = new ObjectCollectionValidator(typeof(ObjectCollectionValidatorFixtureReferencedTestClass));

            ValidationResults validationResults = new ValidationResults();

            validator.DoValidate(target, this, "key", validationResults);                       // setting the currentTarget and the key

            Assert.IsTrue(validationResults.IsValid);
        }
コード例 #4
0
        public void ValidatesUsingTheRulesForTheActualTypeIfValidatingTheActualType()
        {
            // TODO - change to avoid relying on reflection order
            object instance1 = new ObjectCollectionValidatorFixtureReferencedTestClass();
            object instance2 = new DerivedObjectCollectionValidatorFixtureReferencedTestClass();
            object target    = new object[] { instance1, instance2 };

            Validator validator = new ObjectCollectionValidator();

            ValidationResults validationResults = new ValidationResults();

            validator.DoValidate(target, this, "key", validationResults); // setting the currentTarget and the key

            Assert.IsFalse(validationResults.IsValid);
            IList <ValidationResult> resultsList = ValidationTestHelper.GetResultsList(validationResults);

            Assert.AreEqual(6, resultsList.Count);

            Assert.AreEqual("ReferencedObject", resultsList[0].Message);
            Assert.AreEqual(null, resultsList[0].Key);
            Assert.AreEqual(null, resultsList[0].Tag);
            Assert.AreSame(instance1, resultsList[0].Target);

            Assert.AreEqual("PropertyInReferencedObject", resultsList[1].Message);
            Assert.AreEqual("PropertyInReferencedObject", resultsList[1].Key);
            Assert.AreEqual(null, resultsList[1].Tag);
            Assert.AreSame(instance1, resultsList[1].Target);

            Assert.AreEqual("DerivedReferencedObject", resultsList[2].Message);
            Assert.AreEqual(null, resultsList[2].Key);
            Assert.AreEqual(null, resultsList[2].Tag);
            Assert.AreSame(instance2, resultsList[2].Target);

            Assert.AreEqual("PropertyInDerivedReferencedObject", resultsList[3].Message);
            Assert.AreEqual("PropertyInDerivedReferencedObject", resultsList[3].Key);
            Assert.AreEqual(null, resultsList[3].Tag);
            Assert.AreSame(instance2, resultsList[3].Target);

            Assert.AreEqual("PropertyInReferencedObject", resultsList[4].Message);
            Assert.AreEqual("PropertyInReferencedObject", resultsList[4].Key);
            Assert.AreEqual(null, resultsList[4].Tag);
            Assert.AreSame(instance2, resultsList[4].Target);

            Assert.AreEqual("PropertyInDerivedReferencedObject-DataAnnotations", resultsList[5].Message);
            Assert.AreEqual("PropertyInDerivedReferencedObject", resultsList[5].Key);
            Assert.AreEqual(null, resultsList[5].Tag);
            Assert.AreSame(instance2, resultsList[5].Target);
        }
コード例 #5
0
        public void ValidationOfCollectionWithObjectsOfNonCompatibleTypeLogsError()
        {
            object    target    = new object[] { 10 };
            Validator validator = new ObjectCollectionValidator(typeof(ObjectCollectionValidatorFixtureReferencedTestClass));

            ValidationResults validationResults = new ValidationResults();

            validator.DoValidate(target, this, "key", validationResults);                       // setting the currentTarget and the key

            Assert.IsFalse(validationResults.IsValid);
            IDictionary <string, ValidationResult> resultsMapping = ValidationTestHelper.GetResultsMapping(validationResults);

            Assert.AreEqual(1, resultsMapping.Count);
            Assert.IsTrue(resultsMapping.ContainsKey(Resources.ObjectCollectionValidatorIncompatibleElementInTargetCollection));
            Assert.AreEqual(null, resultsMapping[Resources.ObjectCollectionValidatorIncompatibleElementInTargetCollection].Key);
            Assert.AreEqual(null, resultsMapping[Resources.ObjectCollectionValidatorIncompatibleElementInTargetCollection].Tag);
            Assert.AreEqual(10, resultsMapping[Resources.ObjectCollectionValidatorIncompatibleElementInTargetCollection].Target);
            Assert.AreSame(validator, resultsMapping[Resources.ObjectCollectionValidatorIncompatibleElementInTargetCollection].Validator);
        }
コード例 #6
0
        static void ValidatingACollectionOfObjects()
        {
            // Create a collection of two objects, one with valid values and one with invalid values.
            List <IProduct> productList  = new List <IProduct>();
            Product         validProduct = new Product();

            PopulateValidProduct(validProduct);
            productList.Add(validProduct);
            Product invalidProduct = new Product();

            PopulateInvalidProduct(invalidProduct);
            productList.Add(invalidProduct);
            Console.WriteLine("Created and populated a collection of the Product class.");
            // Create an Object Collection Validator for the collection type.
            Validator collValidator = new ObjectCollectionValidator(typeof(Product));
            // Validate all of the objects in the collection.
            ValidationResults results = collValidator.Validate(productList);

            // Display the results.
            ShowValidationResults(results);
        }
コード例 #7
0
        public void NullElementsInCollectionAreSkipped()
        {
            object instance1 = new ObjectCollectionValidatorFixtureReferencedTestClass();
            object instance2 = new ObjectCollectionValidatorFixtureReferencedTestClass();
            object target    = new object[] { instance1, null, instance2 };

            Validator validator = new ObjectCollectionValidator(typeof(ObjectCollectionValidatorFixtureReferencedTestClass));

            ValidationResults validationResults = new ValidationResults();

            validator.DoValidate(target, this, "key", validationResults);                       // setting the currentTarget and the key

            Assert.IsFalse(validationResults.IsValid);
            IList <ValidationResult> resultsList = ValidationTestHelper.GetResultsList(validationResults);

            Assert.AreEqual(4, resultsList.Count);

            Assert.AreEqual("ReferencedObject", resultsList[0].Message);
            Assert.AreEqual(null, resultsList[0].Key);
            Assert.AreEqual(null, resultsList[0].Tag);
            Assert.AreSame(instance1, resultsList[0].Target);

            Assert.AreEqual("PropertyInReferencedObject", resultsList[1].Message);
            Assert.AreEqual("PropertyInReferencedObject", resultsList[1].Key);
            Assert.AreEqual(null, resultsList[1].Tag);
            Assert.AreSame(instance1, resultsList[1].Target);

            Assert.AreEqual("ReferencedObject", resultsList[2].Message);
            Assert.AreEqual(null, resultsList[2].Key);
            Assert.AreEqual(null, resultsList[2].Tag);
            Assert.AreSame(instance2, resultsList[2].Target);

            Assert.AreEqual("PropertyInReferencedObject", resultsList[3].Message);
            Assert.AreEqual("PropertyInReferencedObject", resultsList[3].Key);
            Assert.AreEqual(null, resultsList[3].Tag);
            Assert.AreSame(instance2, resultsList[3].Target);
        }
コード例 #8
0
        public Response <Model.Customer> Create(Model.Customer customer)
        {
            ICustomerRepository        customerRepository = null;
            IAddressRepository         addressRepository  = null;
            Validator <Model.Customer> validator          = ValidationFactory.CreateValidator <Model.Customer>("Create");
            Validator validatorAddress = new ObjectCollectionValidator(typeof(Model.Address), "Create");

            try
            {
                #region Validation

                if (!validator.Validate(customer).IsValid)
                {
                    response.Status     = ResponseStatus.ErrorValidation;
                    response.ErrorValue = (int)ErrorCode.InvalidData;

                    foreach (var result in validator.Validate(customer))
                    {
                        if (!response.Validations.ContainsKey(result.Key))
                        {
                            response.Validations.Add(result.Key, result.Message);
                        }
                    }

                    return(response);
                }

                if (customer.Addresses.IsNullOrEmpty())
                {
                    response.Status     = ResponseStatus.ErrorValidation;
                    response.ErrorValue = (int)ErrorCode.InvalidData;

                    response.Validations.Add("Address", "Address must have at least one");

                    return(response);
                }
                else
                {
                    if (!validatorAddress.Validate(customer.Addresses).IsValid)
                    {
                        response.Status     = ResponseStatus.ErrorValidation;
                        response.ErrorValue = (int)ErrorCode.InvalidData;

                        foreach (var result in validatorAddress.Validate(customer.Addresses))
                        {
                            if (!response.Validations.ContainsKey(result.Key))
                            {
                                response.Validations.Add(result.Key, result.Message);
                            }
                        }

                        return(response);
                    }
                    else // Validate Email
                    {
                        foreach (Model.Address address in customer.Addresses)
                        {
                            if (!address.PrimaryEmail.IsNullOrEmpty())
                            {
                                Validator <Model.Address> valEmail = ValidationFactory.CreateValidator <Model.Address>("Email");

                                if (!valEmail.Validate(address).IsValid)
                                {
                                    response.Status     = ResponseStatus.ErrorValidation;
                                    response.ErrorValue = (int)ErrorCode.InvalidData;

                                    foreach (var result in valEmail.Validate(address))
                                    {
                                        if (!response.Validations.ContainsKey(result.Key))
                                        {
                                            response.Validations.Add(result.Key, result.Message);
                                        }
                                    }

                                    return(response);
                                }
                            }
                        }
                    }
                }

                #endregion Validation

                #region Create
                using (var ctx = new ChickenScratchContext())
                {
                    // Set default
                    customer.Status      = "A";
                    customer.TokenSecret = Guid.NewGuid().ToString();
                    customer.FromDate    = DateTime.UtcNow;
                    customer.ToDate      = DateTime.UtcNow.AddYears(1);

                    // Create Customer
                    customerRepository = new CustomerRepository(ctx);
                    customerRepository.Add(customer);

                    // Create Adrress
                    addressRepository = new AddressRepository(ctx);
                    addressRepository.Inserts(customer.Addresses);

                    customerRepository.Save();

                    response.Result = customer;
                    response.Status = ResponseStatus.Success;
                }

                #endregion Create

                return(response);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #9
0
        /// <summary>
        /// Method to get validation results for collection of attribute driven class
        /// </summary>
        /// <typeparam name="T">Generic type</typeparam>
        /// <param name="items">collection of item</param>
        /// <returns>returns validation result</returns>
        public static ValidationResults GetValidationResult <T>(List <T> items) where T : class
        {
            Validator collectionValidator = new ObjectCollectionValidator(typeof(T));

            return(collectionValidator.Validate(items));
        }