mirror of https://github.com/AMT-Cheif/drift.git
41 lines
1.3 KiB
Dart
41 lines
1.3 KiB
Dart
import 'package:test/test.dart';
|
|
import 'package:sqlparser/sqlparser.dart';
|
|
|
|
void main() {
|
|
test('resolves simple functions', () {
|
|
final context = SqlEngine().analyze('SELECT ABS(-3)');
|
|
|
|
final select = context.root as SelectStatement;
|
|
final column = select.columns.single as ExpressionResultColumn;
|
|
|
|
expect((column.expression as FunctionExpression).resolved, abs);
|
|
});
|
|
|
|
test('correctly resolves return columns', () {
|
|
final id = TableColumn('id');
|
|
final content = TableColumn('content');
|
|
|
|
final demoTable = Table(
|
|
name: 'demo',
|
|
resolvedColumns: [id, content],
|
|
);
|
|
final engine = SqlEngine()..registerTable(demoTable);
|
|
|
|
final context = engine.analyze('SELECT id, d.content, * FROM demo AS d');
|
|
|
|
final select = context.root as SelectStatement;
|
|
final resolvedColumns = select.resolvedColumns;
|
|
|
|
expect(
|
|
resolvedColumns.map((c) => c.name), ['id', 'content', 'id', 'content']);
|
|
|
|
final firstColumn = select.columns[0] as ExpressionResultColumn;
|
|
final secondColumn = select.columns[1] as ExpressionResultColumn;
|
|
final from = select.from[0] as TableReference;
|
|
|
|
expect((firstColumn.expression as Reference).resolved, id);
|
|
expect((secondColumn.expression as Reference).resolved, content);
|
|
expect(from.resolved, demoTable);
|
|
});
|
|
}
|