- CalendarDao: filter all 6 task queries (watchTasksForDate, watchTasksForDateInRoom, watchOverdueTasks, watchOverdueTasksInRoom, getTaskCount, getTaskCountInRoom) by isActive=true - DailyPlanDao: filter all 3 queries (watchAllTasksWithRoomName, getOverdueAndTodayTaskCount, getOverdueTaskCount) by isActive=true - RoomsDao: filter watchRoomWithStats task query by isActive=true - Update migration test: add schema_v3.dart, test v1->v3 and v2->v3 paths - Update database_test schemaVersion assertion to expect 3 - Fix test helpers in home_screen_test and task_list_screen_test to pass isActive=true
53 lines
1.8 KiB
Dart
53 lines
1.8 KiB
Dart
// dart format width=80
|
|
// ignore_for_file: unused_local_variable, unused_import
|
|
import 'package:drift/drift.dart';
|
|
import 'package:drift_dev/api/migrations_native.dart';
|
|
import 'package:household_keeper/core/database/database.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'generated/schema.dart';
|
|
|
|
import 'generated/schema_v1.dart' as v1;
|
|
import 'generated/schema_v2.dart' as v2;
|
|
import 'generated/schema_v3.dart' as v3;
|
|
|
|
void main() {
|
|
driftRuntimeOptions.dontWarnAboutMultipleDatabases = true;
|
|
late SchemaVerifier verifier;
|
|
|
|
setUpAll(() {
|
|
verifier = SchemaVerifier(GeneratedHelper());
|
|
});
|
|
|
|
group('simple database migrations', () {
|
|
// These simple tests verify all possible schema updates with a simple (no
|
|
// data) migration. This is a quick way to ensure that written database
|
|
// migrations properly alter the schema.
|
|
//
|
|
// Note: since AppDatabase.schemaVersion == 3, all migration paths
|
|
// end at v3. We only test migrations to the current schema version.
|
|
final fromVersions = [1, 2];
|
|
for (final fromVersion in fromVersions) {
|
|
test('from $fromVersion to 3', () async {
|
|
final schema = await verifier.schemaAt(fromVersion);
|
|
final db = AppDatabase(schema.newConnection());
|
|
await verifier.migrateAndValidate(db, 3);
|
|
await db.close();
|
|
});
|
|
}
|
|
});
|
|
|
|
test('migration from v2 to v3 does not corrupt data', () async {
|
|
// The v2 -> v3 migration adds the isActive column (default true).
|
|
// Existing tasks should remain and be accessible with isActive = true.
|
|
await verifier.testWithDataIntegrity(
|
|
oldVersion: 2,
|
|
newVersion: 3,
|
|
createOld: v2.DatabaseAtV2.new,
|
|
createNew: v3.DatabaseAtV3.new,
|
|
openTestedDatabase: AppDatabase.new,
|
|
createItems: (batch, oldDb) {},
|
|
validateItems: (newDb) async {},
|
|
);
|
|
});
|
|
}
|