drift/moor/test/ffi/vm_database_test.dart

38 lines
1.1 KiB
Dart

import 'package:moor/ffi.dart';
import 'package:moor/moor.dart';
import 'package:sqlite3/sqlite3.dart';
import 'package:test/test.dart';
void main() {
group('VmDatabase.opened', () {
test('disposes the underlying database by default', () async {
final underlying = sqlite3.openInMemory();
final db = VmDatabase.opened(underlying);
await db.ensureOpen(_FakeExecutorUser());
await db.close();
expect(() => underlying.execute('SELECT 1'), throwsStateError);
});
test('can avoid disposing the underlying instance', () async {
final underlying = sqlite3.openInMemory();
final db = VmDatabase.opened(underlying, closeUnderlyingOnClose: false);
await db.ensureOpen(_FakeExecutorUser());
await db.close();
expect(() => underlying.execute('SELECT 1'), isNot(throwsA(anything)));
underlying.dispose();
});
});
}
class _FakeExecutorUser extends QueryExecutorUser {
@override
Future<void> beforeOpen(QueryExecutor executor, OpeningDetails details) {
return Future.value();
}
@override
int get schemaVersion => 1;
}