public void OrderBy_Duplicate_Test() { var builder = new QueryModelBuilder(); builder.AddClause(new MainFromClause("x", typeof(Contact), Expression.Constant(null))); builder.AddClause(new OrderByClause { Orderings = { new Ordering(GetExpression((Contact c) => c.FirstName), OrderingDirection.Asc) } }); builder.AddClause(new OrderByClause { Orderings = { new Ordering(GetExpression((Contact c) => c.LastName), OrderingDirection.Desc) } }); builder.AddClause(new SelectClause(Expression.Constant(null))); var visitor = new SDataQueryModelVisitor(); visitor.VisitQueryModel(builder.Build()); Assert.That(visitor.OrderBy, Is.EqualTo("LastName desc,FirstName asc")); }
public void Select_Nested_Test() { var builder = new QueryModelBuilder(); builder.AddClause(new MainFromClause("x", typeof(Contact), Expression.Constant(null))); builder.AddClause(new SelectClause(GetExpression((Contact c) => c.Address.PostalCode))); var visitor = new SDataQueryModelVisitor(); visitor.VisitQueryModel(builder.Build()); Assert.That(visitor.Select, Is.EqualTo("Address/PostalCode")); }
public void Select_Array_Test() { var builder = new QueryModelBuilder(); builder.AddClause(new MainFromClause("x", typeof(Contact), Expression.Constant(null))); builder.AddClause(new SelectClause(GetExpression((Contact c) => new[] { c.FirstName, c.LastName }))); var visitor = new SDataQueryModelVisitor(); visitor.VisitQueryModel(builder.Build()); Assert.That(visitor.Select, Is.EqualTo("FirstName,LastName")); }
public void Select_Complex_Test() { var builder = new QueryModelBuilder(); builder.AddClause(new MainFromClause("x", typeof(Contact), Expression.Constant(null))); builder.AddClause(new SelectClause(GetExpression((Contact c) => c.Civility.ToString().Length))); var visitor = new SDataQueryModelVisitor(); visitor.VisitQueryModel(builder.Build()); Assert.That(visitor.Select, Is.EqualTo("Civility")); }
public void MainType_Test() { var builder = new QueryModelBuilder(); builder.AddClause(new MainFromClause("x", typeof(Contact), Expression.Constant(null))); builder.AddClause(new SelectClause(Expression.Constant(null))); var visitor = new SDataQueryModelVisitor(); visitor.VisitQueryModel(builder.Build()); Assert.That(visitor.MainType, Is.EqualTo(typeof(Contact))); }
public void ResultOperator_WithPrecedence_Test() { var builder = new QueryModelBuilder(); builder.AddClause(new MainFromClause("x", typeof(Contact), Expression.Constant(null))); builder.AddClause(new SelectClause(new QuerySourceReferenceExpression(builder.MainFromClause))); builder.AddResultOperator(new WithPrecedenceResultOperator(3)); var visitor = new SDataQueryModelVisitor(); visitor.VisitQueryModel(builder.Build()); Assert.That(visitor.Precedence, Is.EqualTo(3)); }
public void ResultOperator_Fetch_Permissions_Test() { var builder = new QueryModelBuilder(); builder.AddClause(new MainFromClause("x", typeof(Contact), Expression.Constant(null))); builder.AddClause(new SelectClause(Expression.Constant(null))); builder.AddResultOperator(new FetchResultOperator(GetExpression((Contact c) => c.Permissions))); var visitor = new SDataQueryModelVisitor(); visitor.VisitQueryModel(builder.Build()); Assert.That(visitor.Include, Is.EqualTo("$permissions")); }
public void Where_Test() { var builder = new QueryModelBuilder(); builder.AddClause(new MainFromClause("x", typeof(Contact), Expression.Constant(null))); builder.AddClause(new WhereClause(GetExpression((Contact c) => c.Active))); builder.AddClause(new SelectClause(Expression.Constant(null))); var visitor = new SDataQueryModelVisitor(); visitor.VisitQueryModel(builder.Build()); Assert.That(visitor.Where, Is.EqualTo("Active")); }
public void ResultOperator_Skip_Test() { var builder = new QueryModelBuilder(); builder.AddClause(new MainFromClause("x", typeof(Contact), Expression.Constant(null))); builder.AddClause(new SelectClause(Expression.Constant(null))); builder.AddResultOperator(new SkipResultOperator(Expression.Constant(10))); var visitor = new SDataQueryModelVisitor(); visitor.VisitQueryModel(builder.Build()); Assert.That(visitor.StartIndex, Is.EqualTo(11)); }
public void Select_ProtocolProperty_Test() { var builder = new QueryModelBuilder(); builder.AddClause(new MainFromClause("x", typeof(Contact), Expression.Constant(null))); builder.AddClause(new SelectClause(GetExpression((Contact c) => c.Key))); var visitor = new SDataQueryModelVisitor(); visitor.VisitQueryModel(builder.Build()); Assert.That(visitor.Select, Is.Null); Assert.That(visitor.Precedence, Is.EqualTo(0)); }
public void ResultOperator_Take_Multiple_Test() { var builder = new QueryModelBuilder(); builder.AddClause(new MainFromClause("x", typeof(Contact), Expression.Constant(null))); builder.AddClause(new SelectClause(Expression.Constant(null))); builder.AddResultOperator(new TakeResultOperator(Expression.Constant(10))); builder.AddResultOperator(new TakeResultOperator(Expression.Constant(5))); builder.AddResultOperator(new TakeResultOperator(Expression.Constant(8))); var visitor = new SDataQueryModelVisitor(); visitor.VisitQueryModel(builder.Build()); Assert.That(visitor.Count, Is.EqualTo(5)); }
public void ResultOperator_WithExtensionArg_Test() { var builder = new QueryModelBuilder(); builder.AddClause(new MainFromClause("x", typeof(Contact), Expression.Constant(null))); builder.AddClause(new SelectClause(Expression.Constant(null))); builder.AddResultOperator(new WithExtensionArgResultOperator("foo", "bar")); builder.AddResultOperator(new WithExtensionArgResultOperator("hello", "world")); var visitor = new SDataQueryModelVisitor(); visitor.VisitQueryModel(builder.Build()); Assert.That(visitor.ExtensionArgs, Is.EqualTo(new Dictionary <string, string> { { "foo", "bar" }, { "hello", "world" } })); }
public void OrderBy_ProtocolProperty_Test() { var builder = new QueryModelBuilder(); builder.AddClause(new MainFromClause("x", typeof(Contact), Expression.Constant(null))); builder.AddClause(new OrderByClause { Orderings = { new Ordering(GetExpression((Contact c) => c.Key), OrderingDirection.Asc) } }); builder.AddClause(new SelectClause(Expression.Constant(null))); var visitor = new SDataQueryModelVisitor(); visitor.VisitQueryModel(builder.Build()); Assert.That(visitor.OrderBy, Is.EqualTo("$key asc")); }