Example #1
0
        public async Task Create_NewValidator_CollectionDuplicate()
        {
            var e = new TestEntity();

            e.Items.Add(new TestItem {
                Code = "ABC", Text = "Abc"
            });
            e.Items.Add(new TestItem {
                Code = "DEF", Text = "Abc"
            });
            e.Items.Add(new TestItem {
                Code = "ABC", Text = "Def"
            });
            e.Items.Add(new TestItem {
                Code = "XYZ", Text = "Xyz"
            });

            var v = Validator.Create <TestItem>();

            var r = await Validator.Create <TestEntity>()
                    .HasProperty(x => x.Items, p => p.Collection(item: CollectionRuleItem.Create(v).DuplicateCheck(y => y.Code)))
                    .ValidateAsync(e);

            Assert.IsNotNull(r);
            Assert.IsTrue(r.HasErrors);

            Assert.AreEqual(1, r.Messages.Count);
            Assert.AreEqual("Items contains duplicates; Code value 'ABC' specified more than once.", r.Messages[0].Text);
            Assert.AreEqual(MessageType.Error, r.Messages[0].Type);
            Assert.AreEqual("Items", r.Messages[0].Property);
        }
Example #2
0
        public async Task Validate_Item_Duplicates()
        {
            var iv = Validator.Create <TestItem>().HasProperty(x => x.Code, p => p.Mandatory());

            var v1 = await new TestItem[0].Validate().Collection(item: CollectionRuleItem.Create(iv).DuplicateCheck(x => x.Code)).RunAsync();

            Assert.IsFalse(v1.HasError);

            var tis = new TestItem[] { new TestItem {
                                           Code = "ABC", Text = "Abc"
                                       }, new TestItem {
                                           Code = "DEF", Text = "Def"
                                       }, new TestItem {
                                           Code = "GHI", Text = "Ghi"
                                       } };

            v1 = await tis.Validate().Collection(item:  CollectionRuleItem.Create(iv).DuplicateCheck(x => x.Code)).RunAsync();

            Assert.IsFalse(v1.HasError);

            tis[2].Code = "ABC";
            v1          = await tis.Validate().Collection(item: CollectionRuleItem.Create(iv).DuplicateCheck(x => x.Code)).RunAsync();

            Assert.IsTrue(v1.HasError);
            Assert.AreEqual(1, v1.Messages.Count);
            Assert.AreEqual("Value contains duplicates; Code value 'ABC' specified more than once.", v1.Messages[0].Text);
            Assert.AreEqual(MessageType.Error, v1.Messages[0].Type);
            Assert.AreEqual("Value", v1.Messages[0].Property);
        }
Example #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="EmployeeValidator"/> class.
        /// </summary>
        public EmployeeValidator(IEmployeeDataSvc employeeDataSvc)
        {
            _employeeDataSvc = Check.NotNull(employeeDataSvc, nameof(employeeDataSvc));

            Property(x => x.Email).Mandatory().Common(CommonValidators.Email);
            Property(x => x.FirstName).Mandatory().Common(CommonValidators.PersonName);
            Property(x => x.LastName).Mandatory().Common(CommonValidators.PersonName);
            Property(x => x.Gender).Mandatory().IsValid();
            Property(x => x.Birthday).Mandatory().CompareValue(CompareOperator.LessThanEqual, ExecutionContext.Current.Timestamp.AddYears(-18), errorText: "Birthday is invalid as the Employee must be at least 18 years of age.");
            Property(x => x.StartDate).Mandatory().CompareValue(CompareOperator.GreaterThanEqual, new DateTime(1999, 01, 01, 0, 0, 0, DateTimeKind.Utc), "January 1, 1999");
            Property(x => x.PhoneNo).Mandatory().Common(CommonValidators.PhoneNo);
            Property(x => x.Address).Entity(_addressValidator);
            Property(x => x.EmergencyContacts).Collection(maxCount: 5, item: CollectionRuleItem.Create(_emergencyContactValidator).UniqueKeyDuplicateCheck(ignoreWhereUniqueKeyIsInitial: true));
        }
Example #4
0
        public async Task Validate_ItemInt()
        {
            var iv = Validator.CreateCommon <int>(r => r.Text("Number").CompareValue(CompareOperator.LessThanEqual, 5));

            var v1 = await new int[] { 1, 2, 3, 4, 5 }.Validate().Collection(item: CollectionRuleItem.Create(iv)).RunAsync();

            Assert.IsFalse(v1.HasError);

            v1 = await new int[] { 6, 2, 3, 4, 5 }.Validate().Collection(item: CollectionRuleItem.Create(iv)).RunAsync();
            Assert.IsTrue(v1.HasError);
            Assert.AreEqual(1, v1.Messages.Count);
            Assert.AreEqual("Number must be less than or equal to 5.", v1.Messages[0].Text);
            Assert.AreEqual(MessageType.Error, v1.Messages[0].Type);
            Assert.AreEqual("Value[0]", v1.Messages[0].Property);
        }
Example #5
0
        public async Task Validate_Item()
        {
            var iv = Validator.Create <TestItem>().HasProperty(x => x.Code, p => p.Mandatory());

            var v1 = await new TestItem[0].Validate().Collection(item: CollectionRuleItem.Create(iv)).RunAsync();

            Assert.IsFalse(v1.HasError);

            v1 = await new TestItem[] { new TestItem() }.Validate().Collection(item: CollectionRuleItem.Create(iv)).RunAsync();
            Assert.IsTrue(v1.HasError);
            Assert.AreEqual(1, v1.Messages.Count);
            Assert.AreEqual("Code is required.", v1.Messages[0].Text);
            Assert.AreEqual(MessageType.Error, v1.Messages[0].Type);
            Assert.AreEqual("Value[0].Code", v1.Messages[0].Property);
        }
Example #6
0
        public async Task Coll_Validator_Duplicate()
        {
            var vxc = Validator.CreateCollection <List <TestItem>, TestItem>(item: CollectionRuleItem.Create(new TestItemValidator()).DuplicateCheck(x => x.Code));
            var tc  = new List <TestItem> {
                new TestItem {
                    Code = "A", Text = "A"
                }, new TestItem {
                    Code = "A", Text = "A"
                }
            };

            var r = await vxc.ValidateAsync(tc);

            Assert.IsTrue(r.HasErrors);
            Assert.AreEqual(1, r.Messages.Count);
            Assert.AreEqual(MessageType.Error, r.Messages[0].Type);
            Assert.AreEqual("Value contains duplicates; Code value 'A' specified more than once.", r.Messages[0].Text);
            Assert.AreEqual("Value", r.Messages[0].Property);
        }
Example #7
0
 public AddressCollectionValidator()
 {
     MinCount = 1;
     MaxCount = 2;
     Item     = CollectionRuleItem.Create(PersonValidator._addressValidator).DuplicateCheck(x => x.Street);
 }
Example #8
0
        public async Task Coll_Validator_OK()
        {
            var vxc = Validator.CreateCollection <List <TestItem>, TestItem>(minCount: 1, maxCount: 2, item: CollectionRuleItem.Create(new TestItemValidator()).DuplicateCheck(x => x.Code));
            var tc  = new List <TestItem> {
                new TestItem {
                    Code = "A", Text = "A"
                }, new TestItem {
                    Code = "B", Text = "B"
                }
            };

            var r = await vxc.ValidateAsync(tc);

            Assert.IsFalse(r.HasErrors);
        }
Example #9
0
        public async Task Coll_Validator_MinCount()
        {
            var vxc = Validator.CreateCollection <List <TestItem>, TestItem>(minCount: 3, item: CollectionRuleItem.Create(new TestItemValidator()));
            var tc  = new List <TestItem> {
                new TestItem {
                    Code = "A", Text = "A"
                }, new TestItem {
                    Code = "B", Text = "B"
                }
            };

            var r = await vxc.ValidateAsync(tc);

            Assert.IsTrue(r.HasErrors);
            Assert.AreEqual(1, r.Messages.Count);
            Assert.AreEqual(MessageType.Error, r.Messages[0].Type);
            Assert.AreEqual("Value must have at least 3 item(s).", r.Messages[0].Text);
            Assert.AreEqual("Value", r.Messages[0].Property);
        }
Example #10
0
        public async Task Coll_Validator_MaxCount()
        {
            var vxc = Validator.CreateCollection <List <TestItem>, TestItem>(minCount: 1, maxCount: 2, item: CollectionRuleItem.Create(new TestItemValidator()));
            var tc  = new List <TestItem> {
                new TestItem {
                    Code = "A", Text = "aaa"
                }, new TestItem {
                    Code = "B", Text = "bbb"
                }, new TestItem {
                    Code = "C", Text = "ccc"
                }
            };

            var r = await vxc.ValidateAsync(tc);

            Assert.IsTrue(r.HasErrors);
            Assert.AreEqual(3, r.Messages.Count);
            Assert.AreEqual(MessageType.Error, r.Messages[0].Type);
            Assert.AreEqual("Description is invalid.", r.Messages[0].Text);
            Assert.AreEqual("Value[0].Text", r.Messages[0].Property);
            Assert.AreEqual(MessageType.Error, r.Messages[1].Type);
            Assert.AreEqual("Description is invalid.", r.Messages[1].Text);
            Assert.AreEqual("Value[1].Text", r.Messages[1].Property);
            Assert.AreEqual(MessageType.Error, r.Messages[2].Type);
            Assert.AreEqual("Value must not exceed 2 item(s).", r.Messages[2].Text);
            Assert.AreEqual("Value", r.Messages[2].Property);
        }
Example #11
0
 public PersonDetailValidator(IValidator <Person> personValidator)
 {
     IncludeBase(personValidator);
     Property(x => x.History).Collection(item: CollectionRuleItem.Create(_workHistoryValidator).UniqueKeyDuplicateCheck());
 }