public void FormatAsString()
        {
            DatonKey k = new PersistonKey("Emp", "3", false);

            Assert.AreEqual("Emp|=3", k.ToString());

            k = new PersistonKey("Emp", "3", true);
            Assert.AreEqual("Emp|+", k.ToString());

            var criteria = new[]
            {
                new ViewonKey.Criterion("Region", "NE"),
                new ViewonKey.Criterion("Funny", "1")
            };

            k = new ViewonKey("EmpList", criteria, sortColumnName: "LastName", pageNo: 2);
            Assert.AreEqual("EmpList|_page=2|_sort=LastName|Funny=1|Region=NE", k.ToString());

            //now with crazy characters
            criteria = new[]
            {
                new ViewonKey.Criterion("Crazy", "Angry \"O'Leary\" :| :\\"), //actual: Angry "O'Leary" :| :\
                new ViewonKey.Criterion("Zany", "a=|b|"),
                new ViewonKey.Criterion("Loopy", "\\/")                       //actual: \/
            };
            k = new ViewonKey("EmpList", criteria);
            Assert.AreEqual(@"EmpList|Crazy=Angry ""O'Leary"" :\| :\\|Loopy=\\/|Zany=a=\|b\|", k.ToString());
        }
Example #2
0
        public override Task ValidateCriteria(IUser user, ViewonKey key, Action <string> fail)
        {
            var companyCri = key.Criteria.FirstOrDefault(c => c.Name == "Company");

            if (companyCri != null && companyCri.PackedValue.StartsWith("The", StringComparison.InvariantCultureIgnoreCase))
            {
                fail("Cannot search for companies starting with 'the'");
            }
            return(Task.CompletedTask);
        }
Example #3
0
        public override Task ValidateCriteria(IUser user, ViewonKey key, Action <string> fail)
        {
            var companyCri = key.Criteria.FirstOrDefault(c => c.Name == "LastName"); //assume this exists for the tests

            if (companyCri.PackedValue.StartsWith("THE"))
            {
                fail("THE");
            }
            return(Task.CompletedTask);
        }
Example #4
0
        /// <summary>
        /// Sample validation function (registered in Startup)
        /// </summary>
        public static Task <IEnumerable <string> > ValidateCustomer(Daton daton, ViewonKey _, IUser user)
        {
            var cust   = daton as Customer;
            var errors = new List <string>();

            //silly rule to demonstrate custom validation:
            if (cust.Company.StartsWith("The", StringComparison.InvariantCultureIgnoreCase))
            {
                errors.Add("Companies cannot start with 'the' ");
            }
            //note that you can use multi language strings here by checking user.LangCode

            //This longer return expression is used when we are not doing async validation. For async validation,
            //make the validation method async and return errors directly.
            return(Task.FromResult(errors as IEnumerable <string>)); //sync return
            //return errors; //async return
        }
Example #5
0
        public async Task ValidateViewon()
        {
            var ddict = new DataDictionary();

            ddict.AddDatonUsingClassAnnotation(typeof(EmployeeList));
            var datondef  = ddict.DatonDefs["EmployeeList"];
            var validator = new Validator(new User());

            var viewonKey = new ViewonKey("EmployeeList", new[] { new ViewonKey.Criterion("LastName", "Wash") });
            await validator.ValidateCriteria(datondef, viewonKey);

            Assert.AreEqual(0, validator.Errors.Count); //last name is ok

            viewonKey = new ViewonKey("EmployeeList", new[] { new ViewonKey.Criterion("LastName", "Washington") });
            await validator.ValidateCriteria(datondef, viewonKey);

            Assert.AreEqual(1, validator.Errors.Count); //last name criteria is too long

            viewonKey = new ViewonKey("EmployeeList", new[] { new ViewonKey.Criterion("LastName", "THEM") });
            await validator.ValidateCriteria(datondef, viewonKey);

            Assert.AreEqual(1, validator.Errors.Count); //last name is not valid by custom rule
        }