/* * Copyright (c) 2024-2026 Fabian Freund. * * This file is part of WebLibre * (see https://weblibre.eu). * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ // 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:weblibre/features/geckoview/features/top_sites/data/database/database.dart'; import 'package:flutter_test/flutter_test.dart'; import 'generated/schema.dart'; import 'generated/schema_v1.dart' as v1; void main() { driftRuntimeOptions.dontWarnAboutMultipleDatabases = true; late SchemaVerifier verifier; setUpAll(() { verifier = SchemaVerifier(GeneratedHelper()); }); group('simple database migrations', () { const versions = GeneratedHelper.versions; for (final (i, fromVersion) in versions.indexed) { group('from $fromVersion', () { for (final toVersion in versions.skip(i + 1)) { test('to $toVersion', () async { final schema = await verifier.schemaAt(fromVersion); final db = TopSiteDatabase(schema.newConnection()); await verifier.migrateAndValidate(db, toVersion); await db.close(); }); } }); } }); test('v1 schema creation works', () async { final schema = await verifier.schemaAt(1); final db = TopSiteDatabase(schema.newConnection()); await verifier.migrateAndValidate(db, 1); await db.close(); }); }