drift/sqlparser/test/engine/autocomplete/table_name_test.dart

47 lines
1.2 KiB
Dart

import 'package:sqlparser/sqlparser.dart';
import 'package:sqlparser/src/engine/autocomplete/engine.dart';
import 'package:test/test.dart';
import '../../analysis/data.dart';
import 'utils.dart';
void main() {
group('suggests table name', () {
test('after SELECT FROM', () {
expect(_compute('a: SELECT * FROM ^'), suggestsTables);
});
test('in join', () {
expect(_compute('a: SELECT * FROM demo INNER JOIN ^;'), suggestsTables);
});
test('after update', () {
expect(_compute('a: UPDATE ^ SET'), suggestsTables);
});
test('after insert', () {
expect(_compute('a: INSERT INTO ^;'), suggestsTables);
});
test('in index', () {
final suggestion = _compute('CREATE INDEX IF NOT EXISTS name ON ^ (id)');
expect(suggestion, suggestsTables);
});
test('in triger', () {
final suggestion = _compute('CREATE TRIGGER name BEFORE DELETE ON ^');
expect(suggestion, suggestsTables);
});
});
}
ComputedSuggestions _compute(String moorFile) {
return completionsFor(moorFile, setup: _setupEngine);
}
void _setupEngine(SqlEngine engine) {
engine..registerTable(demoTable)..registerTable(anotherTable);
}
Matcher get suggestsTables => suggestsAll(['demo', 'tbl', 'sqlite_master']);