drift/extras/integration_tests/tests/lib/suite/migrations.dart

48 lines
1.5 KiB
Dart

import 'package:test/test.dart';
import 'package:tests/data/sample_data.dart' as people;
import 'package:tests/database/database.dart';
import 'suite.dart';
void migrationTests(TestExecutor executor) {
test('creates users table when opening version 1', () async {
final database = Database(executor.createExecutor(), schemaVersion: 1);
// we write 3 users when the database is created
final count = await database.userCountQuery().getSingle();
expect(count, 3);
await database.close();
});
test('saves and restores database', () async {
var database = Database(executor.createExecutor(), schemaVersion: 1);
await database.writeUser(people.florian);
await database.close();
database = Database(executor.createExecutor(), schemaVersion: 2);
// the 3 initial users plus People.florian
final count = await database.userCountQuery().getSingle();
expect(count, 4);
expect(database.schemaVersionChangedFrom, 1);
expect(database.schemaVersionChangedTo, 2);
await database.close();
});
test('runs the migrator when downgrading', () async {
var database = Database(executor.createExecutor(), schemaVersion: 2);
await database.executor.ensureOpen(); // Create the database
await database.close();
database = Database(executor.createExecutor(), schemaVersion: 1);
await database.executor.ensureOpen(); // Let the migrator run
expect(database.schemaVersionChangedFrom, 2);
expect(database.schemaVersionChangedTo, 1);
await database.close();
});
}