mirror of https://github.com/AMT-Cheif/drift.git
Add integration test to save and restore databases
This commit is contained in:
parent
9b2b73cd20
commit
ae7c9df049
|
@ -0,0 +1,50 @@
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:moor_ffi/moor_ffi.dart';
|
||||||
|
import 'package:path/path.dart';
|
||||||
|
import 'package:test/test.dart';
|
||||||
|
import 'package:tests/database/database.dart';
|
||||||
|
|
||||||
|
final File mainFile =
|
||||||
|
File(join(Directory.systemTemp.path, 'moor-save-and-restore-tests-1'));
|
||||||
|
final File createdForSwap =
|
||||||
|
File(join(Directory.systemTemp.path, 'moor-save-and-restore-tests-2'));
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
test('can save and restore a database', () async {
|
||||||
|
if (await mainFile.exists()) {
|
||||||
|
await mainFile.delete();
|
||||||
|
}
|
||||||
|
if (await createdForSwap.exists()) {
|
||||||
|
await createdForSwap.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
const nameInSwap = 'swap user';
|
||||||
|
const nameInMain = 'main';
|
||||||
|
|
||||||
|
// Prepare the file we're swapping in later
|
||||||
|
final dbForSetup = Database(VmDatabase(createdForSwap));
|
||||||
|
await dbForSetup.into(dbForSetup.users).insert(
|
||||||
|
UsersCompanion.insert(name: nameInSwap, birthDate: DateTime.now()));
|
||||||
|
await dbForSetup.close();
|
||||||
|
|
||||||
|
// Open the main file
|
||||||
|
var db = Database(VmDatabase(mainFile));
|
||||||
|
await db.into(db.users).insert(
|
||||||
|
UsersCompanion.insert(name: nameInMain, birthDate: DateTime.now()));
|
||||||
|
await db.close();
|
||||||
|
|
||||||
|
// Copy swap file to main file
|
||||||
|
await mainFile.writeAsBytes(await createdForSwap.readAsBytes(),
|
||||||
|
flush: true);
|
||||||
|
|
||||||
|
// Re-open database
|
||||||
|
db = Database(VmDatabase(mainFile));
|
||||||
|
final users = await db.select(db.users).get();
|
||||||
|
|
||||||
|
expect(
|
||||||
|
users.map((u) => u.name),
|
||||||
|
allOf(contains(nameInSwap), isNot(contains(nameInMain))),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
Loading…
Reference in New Issue