public void ItShouldBePossibleToOrderByMultipleColumns() { var expr = Select.Column <Person>(p => p.Name) .Column <Person>(p => Sql.Sum(p.Age), Over.OrderBy <Person>(p => p.Age, Direction.Ascending, NullsOrdering.NullsLast).ThenBy <Person>(p => p.Name, Direction.Descending)) .From <Person>(); var result = expr.ToSqlExpression(); Assert.That(result, Is.EqualTo(TokenGeneration_SelectPartitionTests_Results.orderByMultipleColumnsExpression)); }
public void ItShouldBePossibleToOrderByAColumn() { var expr = Select.Column <Person>(p => p.Name) .Column <Person>(p => Sql.Sum(p.Age), Over.OrderBy <Person>(p => p.Age)) .From <Person>(); var result = expr.ToSqlExpression(); Assert.That(result, Is.EqualTo(TokenGeneration_SelectPartitionTests_Results.orderByColumnExpression)); }
public void ItShouldBePossibleToDoPagingWithACommonTableExpression() { // To be honest, this case should be covered by the other test cases so this test case is a bit redundant. // However, using common table expressions for paging is a quite common technique and it's good to know for sure that it works as expected, so // let's do some bad practice testing and test something that's already covered by other tests! var expr = With.Table <PersonLitePagingResult>( Select.Column <Person>(p => Sql.RowNumber(), Over.OrderBy <Person>(p => p.Age)) .Column <Person>(p => new { p.Name, p.Age }) .From <Person>() ).Query( Select.Column <PersonLitePagingResult>(p => new { p.Name, p.Age }) .From <PersonLitePagingResult>() .Where <PersonLitePagingResult>(p => p.RowNumber >= 10 && p.RowNumber < 20) ); var result = expr.ToSqlExpression(); Assert.That(result, Is.EqualTo(TokenGeneration_CommonTableExpressions_Results.commonPagingExpression)); }