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); }
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); }
/// <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)); }
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); }
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); }
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); }
public AddressCollectionValidator() { MinCount = 1; MaxCount = 2; Item = CollectionRuleItem.Create(PersonValidator._addressValidator).DuplicateCheck(x => x.Street); }
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); }
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); }
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); }
public PersonDetailValidator(IValidator <Person> personValidator) { IncludeBase(personValidator); Property(x => x.History).Collection(item: CollectionRuleItem.Create(_workHistoryValidator).UniqueKeyDuplicateCheck()); }