drift/sqlparser/test/parser/select/order_by_test.dart

56 lines
1.4 KiB
Dart

import 'package:sqlparser/sqlparser.dart';
import 'package:sqlparser/src/utils/ast_equality.dart';
import 'package:test/test.dart';
import '../utils.dart';
void main() {
test('parses order by clauses', () {
final parsed = SqlEngine()
.parse('SELECT * FROM tbl ORDER BY -a, b DESC')
.rootNode as SelectStatement;
enforceHasSpan(parsed);
enforceEqual(
parsed.orderBy!,
OrderBy(
terms: [
OrderingTerm(
expression: UnaryExpression(
token(TokenType.minus),
Reference(columnName: 'a'),
),
),
OrderingTerm(
orderingMode: OrderingMode.descending,
expression: Reference(columnName: 'b'),
),
],
),
);
});
test('parses clauses with NULLS FIRST or NULLS LAST', () {
final parsed = SqlEngine(EngineOptions(useMoorExtensions: true))
.parse(r'SELECT * FROM tbl ORDER BY $a NULLS LAST, b NULLS FIRST')
.rootNode as SelectStatement;
enforceHasSpan(parsed);
enforceEqual(
parsed.orderBy!,
OrderBy(
terms: [
OrderingTerm(
expression: DartExpressionPlaceholder(name: 'a'),
nulls: OrderingBehaviorForNulls.last,
),
OrderingTerm(
expression: Reference(columnName: 'b'),
nulls: OrderingBehaviorForNulls.first,
),
],
),
);
});
}