public void CanValidateUsingProperties()
        {
            var fullyValidData         = TestingDataFactory.Unique.CreateUniqueData();
            var duplicatedIdData       = TestingDataFactory.Unique.CreateDuplicatedIdData();
            var duplicatedLastNameData = TestingDataFactory.Unique.CreateDuplicatedLastNameData();
            var duplicatedNamesData    = TestingDataFactory.Unique.CreateDuplicatedNamesData();

            var validator = new CollectionValidator <GenericParameter>();

            validator.Unique(null, x => x.ID);

            Assert.IsTrue(validator.Validate(fullyValidData.Collection).IsValid);
            Assert.IsTrue(validator.Validate(duplicatedLastNameData.Collection).IsValid);
            Assert.IsTrue(validator.Validate(duplicatedNamesData.Collection).IsValid);
            Assert.IsFalse(validator.Validate(duplicatedIdData.Collection).IsValid);

            validator = new CollectionValidator <GenericParameter>().Unique(null, x => x.LastName);

            Assert.IsTrue(validator.Validate(fullyValidData.Collection).IsValid);
            Assert.IsFalse(validator.Validate(duplicatedLastNameData.Collection).IsValid);
            Assert.IsFalse(validator.Validate(duplicatedNamesData.Collection).IsValid);
            Assert.IsTrue(validator.Validate(duplicatedIdData.Collection).IsValid);

            validator.Unique(null, x => x.ID);
            Assert.IsTrue(validator.Validate(fullyValidData.Collection).IsValid);
            Assert.IsFalse(validator.Validate(duplicatedLastNameData.Collection).IsValid);
            Assert.IsFalse(validator.Validate(duplicatedNamesData.Collection).IsValid);
            Assert.IsFalse(validator.Validate(duplicatedIdData.Collection).IsValid);

            validator = new CollectionValidator <GenericParameter>().Unique(null, x => x.LastName, x => x.FirstName);
            Assert.IsTrue(validator.Validate(fullyValidData.Collection).IsValid);
            Assert.IsTrue(validator.Validate(duplicatedLastNameData.Collection).IsValid);
            Assert.IsFalse(validator.Validate(duplicatedNamesData.Collection).IsValid);
            Assert.IsTrue(validator.Validate(duplicatedIdData.Collection).IsValid);
        }
        public void CanValidateUsingProperties()
        {
            var fullyValidData = UniqueTestingDataFactory.CreateUniqueData();
            var duplicatedIdData = UniqueTestingDataFactory.CreateDuplicatedIdData();
            var duplicatedLastNameData = UniqueTestingDataFactory.CreateDuplicatedLastNameData();
            var duplicatedNamesData = UniqueTestingDataFactory.CreateDuplicatedNamesData();

            var validator = new CollectionValidator<GenericParameter>();
            validator.Unique(null, x => x.ID);

            Assert.IsTrue(validator.Validate(fullyValidData.Collection).IsValid);
            Assert.IsTrue(validator.Validate(duplicatedLastNameData.Collection).IsValid);
            Assert.IsTrue(validator.Validate(duplicatedNamesData.Collection).IsValid);
            Assert.IsFalse(validator.Validate(duplicatedIdData.Collection).IsValid);

            validator = new CollectionValidator<GenericParameter>().Unique(null, x => x.LastName);

            Assert.IsTrue(validator.Validate(fullyValidData.Collection).IsValid);
            Assert.IsFalse(validator.Validate(duplicatedLastNameData.Collection).IsValid);
            Assert.IsFalse(validator.Validate(duplicatedNamesData.Collection).IsValid);
            Assert.IsTrue(validator.Validate(duplicatedIdData.Collection).IsValid);

            validator.Unique(null, x => x.ID);
            Assert.IsTrue(validator.Validate(fullyValidData.Collection).IsValid);
            Assert.IsFalse(validator.Validate(duplicatedLastNameData.Collection).IsValid);
            Assert.IsFalse(validator.Validate(duplicatedNamesData.Collection).IsValid);
            Assert.IsFalse(validator.Validate(duplicatedIdData.Collection).IsValid);

            validator = new CollectionValidator<GenericParameter>().Unique(null, x => x.LastName, x => x.FirstName);
            Assert.IsTrue(validator.Validate(fullyValidData.Collection).IsValid);
            Assert.IsTrue(validator.Validate(duplicatedLastNameData.Collection).IsValid);
            Assert.IsFalse(validator.Validate(duplicatedNamesData.Collection).IsValid);
            Assert.IsTrue(validator.Validate(duplicatedIdData.Collection).IsValid);
        }
        public void CanValidateElements()
        {
            var normalCollection         = TestingDataFactory.Unique.CreateUniqueData();
            var shortFirstNameCollection = TestingDataFactory.ElementValidation.CollectionWithShortFirstNames();
            var emptyLastNameCollection  = TestingDataFactory.ElementValidation.CollectionWithEmptyLastNames();
            var nullElementCollection    = TestingDataFactory.ElementValidation.CollectionWithNullElement();

            var validator =
                new CollectionValidator <GenericParameter>()
                .ElementValidation(new InlineValidator <GenericParameter>
            {
                v => v.RuleFor(x => x.FirstName).Length(2, 10)
            })
                .ElementValidation(x => x.LastName, lastName => lastName.NotEmpty())
                .ElementValidation(x => x.NotNull())
                .ElementValidationMessage(ErrorMessageText);

            Assert.IsTrue(validator.Validate(normalCollection.Collection).IsValid);
            Assert.IsFalse(validator.Validate(shortFirstNameCollection).IsValid);
            Assert.IsFalse(validator.Validate(emptyLastNameCollection).IsValid);

            var result = validator.Validate(nullElementCollection);

            Assert.IsFalse(validator.Validate(nullElementCollection).IsValid);
            Assert.AreEqual(result.First().ErrorMessage, ErrorMessageText);
        }
 public void CanValidateSimpleUnique()
 {
     var validTstingData = UniqueTestingDataFactory.CreateSimpleUniqueData();
     var invalidTestingData = UniqueTestingDataFactory.CreateSimpleNotUniqueData();
     var validator = new CollectionValidator<string>().Unique();
     Assert.IsTrue(validator.Validate(validTstingData.Collection).IsValid);
     Assert.IsFalse(validator.Validate(invalidTestingData.Collection).IsValid);
 }
        public void CanValidateSimpleUnique()
        {
            var validTstingData    = TestingDataFactory.Unique.CreateSimpleUniqueData();
            var invalidTestingData = TestingDataFactory.Unique.CreateSimpleNotUniqueData();
            var validator          = new CollectionValidator <string>().Unique();

            Assert.IsTrue(validator.Validate(validTstingData.Collection).IsValid);
            Assert.IsFalse(validator.Validate(invalidTestingData.Collection).IsValid);
        }
        public void CanValidateCountAndDuplicates()
        {
            var list = new List<int> { 1, 2, 3, 4, 5 };

            var validator = new CollectionValidator<int>().CountGreaterThan(3).Unique();
            Assert.IsTrue(validator.Validate(list).IsValid);

            list.Add(2);
            var result = validator.Validate(list);
            Assert.IsFalse(result.IsValid);
        }
        public void CanValidateSingleElementCollection()
        {
            var single   = new[] { 1 };
            var multiple = new[] { 1, 2 };
            var empty    = new int[0];

            var validator = new CollectionValidator <int>().Single();

            Assert.IsTrue(validator.Validate(single).IsValid);
            Assert.IsFalse(validator.Validate(multiple).IsValid);
            Assert.IsFalse(validator.Validate(empty).IsValid);
        }
        public void CanValidateCountAndElements()
        {
            var invalidCollection = TestingDataFactory.ElementValidation.SimpleRange(2, 7);
            var validCollection   = TestingDataFactory.ElementValidation.SimpleRange(3, 6);

            var validator =
                new CollectionValidator <int>().CountLessThan(5)
                .CountGreaterThan(2)
                .ElementValidation(x => x.LessThanOrEqualTo(6))
                .ElementValidation(x => x.GreaterThan(2));

            Assert.IsTrue(validator.Validate(validCollection).IsValid);
            Assert.IsFalse(validator.Validate(invalidCollection).IsValid);
        }
        public void CanValidateDuplicatesAndElements()
        {
            var validCollection   = TestingDataFactory.ComposedValidation.DuplicatesAndElementsValidData();
            var invalidCollection = TestingDataFactory.ComposedValidation.DuplicatesAndElementsInvalidData();

            var validator =
                new CollectionValidator <GenericParameter>().ElementValidation(x => x.NotNull())
                .ElementValidation(
                    x => x.FirstName, firstName => firstName.NotEmpty())
                .Unique(null, x => x.ID);

            Assert.IsTrue(validator.Validate(validCollection).IsValid);
            Assert.IsFalse(validator.Validate(invalidCollection).IsValid);
        }
        public void CanValidateCountAndDuplicates()
        {
            var list = new List <int> {
                1, 2, 3, 4, 5
            };

            var validator = new CollectionValidator <int>().CountGreaterThan(3).Unique();

            Assert.IsTrue(validator.Validate(list).IsValid);

            list.Add(2);
            var result = validator.Validate(list);

            Assert.IsFalse(result.IsValid);
        }
        public void TestExtensionSimple2()
        {
            var collection = new[] { 1.0M, 2.0M, 3.0M };
            var validator  = new CollectionValidator <decimal>().SumEqualTo(6.0M);

            Assert.IsTrue(validator.Validate(collection).IsValid);
        }
        public void TestExtensionSimple()
        {
            var collection = new[] { 1, 2, 3, -1 };
            var validator  = new CollectionValidator <int>().SumEqualTo(5);

            Assert.IsTrue(validator.Validate(collection).IsValid);
        }
        public void SumGreaterThan()
        {
            var single    = new[] { 1, 2, 3 };
            var validator = new CollectionValidator <int>().SumGreaterThan((x) => x, 5);

            Assert.IsTrue(validator.Validate(single).IsValid);
        }
        public void CanValidateAggregate()
        {
            var single    = new[] { 1, 2, 3 };
            var validator = new CollectionValidator <int>().AggregateEqualTo((x) => x, (collection) => collection.Sum(), 6);

            Assert.IsTrue(validator.Validate(single).IsValid);
        }
        public void Validate_Collection_Test_Null_Last_Modified_Date()
        {
            //Assign
            var collection          = new Collection();
            var collectionValidator = new CollectionValidator();

            //Act
            Guid   collectionId = Guid.NewGuid();
            Guid   touchpointId = Guid.NewGuid();
            string ukprn        = "12345678";

            collection.CollectionId = collectionId;
            collection.TouchPointId = touchpointId;
            collection.UKPRN        = ukprn;

            var result = collectionValidator.Validate(collection).Result;

            //Assert
            Assert.AreEqual(1, result.Count());
            Assert.IsNotNull(collection);
            Assert.AreEqual(collectionId, collection.CollectionId);
            Assert.AreEqual(touchpointId, collection.TouchPointId);
            Assert.AreEqual(null, collection.LastModifiedDate);
            Assert.AreEqual(ukprn, collection.UKPRN);
        }
        public void SumEqualTo()
        {
            var single    = new[] { 1, 2, 3 };
            var validator = new CollectionValidator <int>().SumEqualTo((x) => x, 6);

            Assert.IsTrue(validator.Validate(single).IsValid);
        }
        public void Validate_Collection_Test_Null_TouhPoint_Id()
        {
            //Assign
            var collection          = new Collection();
            var collectionValidator = new CollectionValidator();

            //Act
            Guid     collectionId = Guid.NewGuid();
            DateTime lastUpdated  = DateTime.Now;
            string   ukprn        = "12345678";

            collection.CollectionId     = collectionId;
            collection.LastModifiedDate = lastUpdated;
            collection.UKPRN            = ukprn;

            var result = collectionValidator.Validate(collection).Result;

            //Assert
            Assert.AreEqual(1, result.Count());
            Assert.IsNotNull(collection);
            Assert.AreEqual(collectionId, collection.CollectionId);
            Assert.AreEqual(Guid.Empty, collection.TouchPointId);
            Assert.AreEqual(lastUpdated, collection.LastModifiedDate);
            Assert.AreEqual(ukprn, collection.UKPRN);
        }
        public void CanValidateCount()
        {
            var arr = new[] { 1, 2, 3, 4, 5 };

            var range6To8Validator = new CollectionValidator<int>().CountGreaterThan(6).CountLessThan(8);
            Assert.IsFalse(range6To8Validator.Validate(arr).IsValid);

            var range2To4Validator = new CollectionValidator<int>().CountGreaterThan(2).CountLessThan(4);
            Assert.IsFalse(range2To4Validator.Validate(arr).IsValid);

            var range3To6Validator = new CollectionValidator<int>().CountGreaterThan(3).CountLessThan(6);
            Assert.IsTrue(range3To6Validator.Validate(arr).IsValid);
        }
        public void CanValidateCount()
        {
            var arr = new[] { 1, 2, 3, 4, 5 };

            var range6To8Validator = new CollectionValidator <int>().CountGreaterThan(6).CountLessThan(8);

            Assert.IsFalse(range6To8Validator.Validate(arr).IsValid);

            var range2To4Validator = new CollectionValidator <int>().CountGreaterThan(2).CountLessThan(4);

            Assert.IsFalse(range2To4Validator.Validate(arr).IsValid);

            var range3To6Validator = new CollectionValidator <int>().CountGreaterThan(3).CountLessThan(6);

            Assert.IsTrue(range3To6Validator.Validate(arr).IsValid);
        }