private void AssertInvalidExpression(Expression <Func <Order, bool> > exp, string expectedMessage) { var builder = new ListOptionsBuilder <Order>(); var ex = Assert.Throws <FilterExpressionException>(() => builder.AddFilter(exp)); StringAssert.Contains(expectedMessage, ex.Message); }
public void can_build_list_options_flluently() { int a = 10, b = 20; var opts = new ListOptionsBuilder <Product <CustomXP> >() .SearchFor("something") .SearchOn(p => p.Name, p => p.Description) .SortByReverse(p => p.Active) .SortBy(p => p.ID) .AddFilter(p => p.Active && !p.Inventory.Enabled && (p.xp.Foo == "*zing" || p.xp.Foo == "*zang" || p.xp.Foo == "*zong") && p.VariantCount >= (a * 2) + b) .Page(5) .PageSize(100) .Build(); Assert.AreEqual("something", opts.Search); Assert.AreEqual("Name,Description", opts.SearchOn); Assert.AreEqual("!Active,ID", opts.SortBy); Assert.AreEqual(4, opts.Filters.Count); CollectionAssert.Contains(opts.Filters, new KeyValuePair <string, string>("Active", "true")); CollectionAssert.Contains(opts.Filters, new KeyValuePair <string, string>("Inventory.Enabled", "!true")); CollectionAssert.Contains(opts.Filters, new KeyValuePair <string, string>("xp.Foo", "*zing|*zang|*zong")); CollectionAssert.Contains(opts.Filters, new KeyValuePair <string, string>("VariantCount", "!<40")); Assert.AreEqual(5, opts.Page); Assert.AreEqual(100, opts.PageSize); }