public void CanFetchTwoColumns() { var spec = Customer.Query.Fetch(x => x.Address).Fetch(x => x.ContactName); var queryable = new EmptyQueryable<Customer>("q").ApplySpecs(spec); Assert.AreEqual("q.Fetch(x => x.Address).Fetch(x => x.ContactName)", queryable.Expression.ToString()); }
public void CanRecordTwoLevelLinqExpressionsWithProjection() { var queryable = new EmptyQueryable <DateTime>(Parameter <DateTime>("q")); var newQuery = queryable.Where(x => x > DateTime.Now).Distinct().Select(x => x.Day); newQuery.Expression.ToString().Should().Be("q.Where(x => (x > DateTime.Now)).Distinct().Select(x => x.Day)"); }
public void CanFetchThenTwoColumns() { var spec = Product.Query.Fetch(x => x.Category).ThenFetch(x => x.Name); var queryable = new EmptyQueryable<Product>("q").ApplySpecs(spec); Assert.AreEqual("q.Fetch(x => x.Category).ThenFetch(x => x.Name)", queryable.Expression.ToString()); }
public void CanRecordTwoLevelLinqExpressions() { var queryable = new EmptyQueryable <int>(Parameter <int>("q")); var newQuery = queryable.Where(x => x > 2).Distinct(); newQuery.Expression.ToString().Should().Be("q.Where(x => (x > 2)).Distinct()"); }
public void CanFilterWithStackReference() { string value = "asd"; var spec = Customer.Query.Filter(x => x.CompanyName == value); var queryable = new EmptyQueryable<Customer>("q").ApplySpecs(spec); queryable.Expression.ToString().Should().Be("q.Where(x => (x.CompanyName == \"asd\"))"); }
public void CanOrderByTwoColumnsWithSecondDescending() { var spec = Customer.Do.OrderBy(x => x.Address).ThenByDesc(x => x.ContactName); var queryable = new EmptyQueryable<Customer>("q").ApplySpecs(spec); Assert.AreEqual("q.OrderBy(x => x.Address).ThenByDescending(x => x.ContactName)", queryable.Expression.ToString()); }
public void CanFilterWithStackReference() { string value = "asd"; int a = 2, b = 10; var spec = Customer.Query.Expr(q => q.Where(x => x.CompanyName == value).Skip(a).Take(b)); var queryable = new EmptyQueryable<Customer>("q").ApplySpecs(spec); queryable.Expression.ToString().Should().Be("q.Where(x => (x.CompanyName == \"asd\")).Skip(2).Take(10)"); }
public void CanRecordLinqExpressionsWithOrderBy() { var queryable = new EmptyQueryable <DateTime>(Parameter <DateTime>("q")); var newQuery = queryable.OrderBy(x => x.Day); Assert.AreEqual("q.OrderBy(x => x.Day)", newQuery.Expression.ToString()); }
public void CanRecordTwoLevelLinqExpressionsWithAggregate() { var queryable = new EmptyQueryable <DateTime>(Parameter <DateTime>("q")); var newQuery = queryable.Where(x => x > DateTime.Now).Distinct().GroupBy(x => x.Day).Select(x => x.Max()); Assert.AreEqual("q.Where(x => (x > DateTime.Now)).Distinct().GroupBy(x => x.Day).Select(x => x.Max())", newQuery.Expression.ToString()); }
public void CanSerializeFilter() { var spec = Customer.Query.Expr(q => q.Where(x => x.CompanyName == "asd")); var spec2 = SimpleSerializer.Binary().RoundTrip(spec); Assert.AreNotSame(spec, spec2); var queryable1 = new EmptyQueryable<Customer>("q").ApplySpecs(spec); var queryable2 = new EmptyQueryable<Customer>("q").ApplySpecs(spec2); queryable2.Expression.ToString().Should().Be(queryable1.Expression.ToString()); }
public void CanImplicitConvertExpressionToSpecBuilder() { Expression<Func<IQueryable<int>, IQueryable<int>>> expr = q => q.Where(x => x % 2 == 0).Reverse(); SpecBuilder<int> spec = expr; IQueryable<int> queryable = new EmptyQueryable<int>("h"); queryable = queryable.ApplySpecs(spec); queryable.Expression.ToString().Should().Be( "h.Where(x => ((x % 2) == 0)).Reverse()"); }
public void CanFetchManyByFirstColumn() { var spec = Category.Query.FetchMany(x => x.Products); var queryable = new EmptyQueryable<Category>("q").ApplySpecs(spec); queryable.Expression.ToString().Should().Be("q.FetchMany(x => x.Products)"); }
public void CanFetchByFirstColumn() { var spec = Customer.Query.Fetch(x => x.Address); var queryable = new EmptyQueryable<Customer>("q").ApplySpecs(spec); queryable.Expression.ToString().Should().Be("q.Fetch(x => x.Address)"); }
public void CanSimpleFilter() { var spec = Customer.Query.Expr(q => q.Where(x => x.CompanyName == "asd").Skip(2).Take(10)); var queryable = new EmptyQueryable<Customer>("q").ApplySpecs(spec); queryable.Expression.ToString().Should().Be("q.Where(x => (x.CompanyName == \"asd\")).Skip(2).Take(10)"); }
public void CanTakeAndSkip() { var spec = Customer.Do.Take(10).Skip(11); var queryable = new EmptyQueryable<Customer>("q").ApplySpecs(spec); queryable.Expression.ToString().Should().Be("q.Take(10).Skip(11)"); }
public void CanOrderByFirstColumnDesc() { var spec = Customer.Do.OrderByDesc(x => x.Address); var queryable = new EmptyQueryable<Customer>("q").ApplySpecs(spec); queryable.Expression.ToString().Should().Be("q.OrderByDescending(x => x.Address)"); }