public void TestPaginate() { var lst = new List <InputModel>(); for (var i = 0; i < 122; i++) { lst.Add(new InputModel { MyIntVal = i, MyVal = $"Num {i}" }); } var qry = QueryModifiers.Paginate <InputModel, OutputModel>(lst.AsQueryable(), 0, 10); Assert.NotEmpty(qry.ResultList); Assert.Equal("Num 9", qry.ResultList[9].MyVal); Assert.Equal(10, qry.ResultList.Count); Assert.Equal(13, qry.TotalPages); Assert.Equal(122, qry.TotalItems); }
public void TestQueryModifiers() { long customerCount = AwDal.Count(db => db.QueryAllCustomers()); Assert.AreEqual(847, customerCount); QueryModifiers mods = new QueryModifiers(); customerCount = AwDal.Count(db => db.QueryAllCustomers(), mods); Assert.AreEqual(847, customerCount); mods.AddSortCriteria("CustomerID"); var customers = AwDal.List(db => db.QueryAllCustomers(), mods); var customer = customers.First(); Assert.AreEqual("Orlando", customer.FirstName); Assert.AreEqual("Gee", customer.LastName); mods.AddPaging(0, 5); customers = AwDal.List(db => db.QueryAllCustomers(), mods); Assert.AreEqual(5, customers.Count); customer = customers.First(); Assert.AreEqual("Orlando", customer.FirstName); Assert.AreEqual("Gee", customer.LastName); mods.Paging = null; mods.AddFilter("FirstName", DynamicFilterOperator.Equal, "John"); mods.AddFilter("NameStyle", DynamicFilterOperator.Equal, false); customers = AwDal.List(db => db.QueryAllCustomers(), mods); Assert.AreEqual(20, customers.Count); customer = customers[2]; Assert.AreEqual(309, customer.CustomerID); Assert.AreEqual("John", customer.FirstName); Assert.AreEqual("Arthur", customer.LastName); mods.AddPaging(pageIndex: 2, pageSize: 3); customers = AwDal.List(db => db.QueryAllCustomers(), mods); Assert.AreEqual(3, customers.Count); customer = customers[0]; Assert.AreEqual(471, customer.CustomerID); Assert.AreEqual("John", customer.FirstName); Assert.AreEqual("Ford", customer.LastName); mods = new QueryModifiers(); mods.AddSortCriteria("FirstName").AddSortCriteria("LastName", QueryModifiers.SortOrder.Descending); mods.AddPaging(pageIndex: 0, pageSize: 3); customers = AwDal.List(db => db.QueryAllCustomers(), mods); Assert.AreEqual(3, customers.Count); customer = customers[1]; Assert.AreEqual(29943, customer.CustomerID); Assert.AreEqual("A.", customer.FirstName); Assert.AreEqual("Leonetti", customer.LastName); mods.AddFilter("LastName", DynamicFilterOperator.StringStartsWith, "Ve"); customers = AwDal.List(db => db.QueryAllCustomers(), mods); Assert.IsTrue(customers.All(c => c.LastName.StartsWith("Ve"))); //int hash1 = mods.GetHashCode(); string mods1 = mods.ToString(); mods.Filters.Clear(); mods.AddFilter("LastName", DynamicFilterOperator.StringContains, "er"); //int hash2 = mods.GetHashCode(); string mods2 = mods.ToString(); Assert.AreNotEqual(mods1, mods2); customers = AwDal.List(db => db.QueryAllCustomers(), mods); Assert.IsTrue(customers.All(c => c.LastName.Contains("er"))); customer = customers[2]; Assert.AreEqual(29583, customer.CustomerID); Assert.AreEqual("Alan", customer.FirstName); Assert.AreEqual("Brewer", customer.LastName); mods = new QueryModifiers().AddPaging(pageIndex: 1, pageSize: 5).AddSortCriteria("LastName").AddFilter("CustomerID", DynamicFilterOperator.LessThan, 10); customers = AwDal.List(db => db.QueryAllCustomers(), mods); Assert.IsTrue(customers.All(c => c.CustomerID < 10)); Assert.AreEqual(2, customers.Count); customer = customers[0]; Assert.AreEqual(5, customer.CustomerID); Assert.AreEqual("Lucy", customer.FirstName); Assert.AreEqual("Harrington", customer.LastName); }