Add integration test to save and restore databases

This commit is contained in:
Simon Binder 2020-03-10 20:43:39 +01:00
parent 9b2b73cd20
commit ae7c9df049
No known key found for this signature in database
GPG Key ID: 7891917E4147B8C0
1 changed files with 50 additions and 0 deletions

View File

@ -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))),
);
});
}