|  | 
| 1 | 1 | import 'package:checks/checks.dart'; | 
| 2 |  | -import 'package:drift/backends.dart'; | 
| 3 | 2 | import 'package:drift/drift.dart'; | 
| 4 | 3 | import 'package:drift/native.dart'; | 
| 5 | 4 | import 'package:drift_dev/api/migrations_native.dart'; | 
| @@ -111,21 +110,15 @@ void main() { | 
| 111 | 110 |       await before.customStatement('ALTER TABLE accounts ADD extra_column int'); | 
| 112 | 111 |       await check(verifier.migrateAndValidate( | 
| 113 | 112 |         before, 2, validateDropped: true)).throws<SchemaMismatch>(); | 
|  | 113 | +      // Override the schema version. | 
|  | 114 | +      // TODO(upstream): Expose a better interface for testing this. | 
|  | 115 | +      await before.customStatement('PRAGMA user_version = 999;'); | 
| 114 | 116 |       await before.close(); | 
| 115 | 117 | 
 | 
| 116 | 118 |       // We need a new connection because migrations are only run when the | 
| 117 | 119 |       // database is first opened (see [DelegatedDatabase.ensureOpen]), and | 
| 118 | 120 |       // running custom statements opens it. | 
| 119 | 121 |       final after = AppDatabase(schema.newConnection()); | 
| 120 |  | -      // Trick the drift into believing that the schema version is | 
| 121 |  | -      // higher than it actually is, so that a downgrade migration is triggered. | 
| 122 |  | -      // This relies on some relevant implementation details: | 
| 123 |  | -      // - [DelegatedDatabase._runMigrations] | 
| 124 |  | -      // - [VerifierImplementation.migrateAndValidate] | 
| 125 |  | -      // TODO(upstream): Expose a better interface for testing this. | 
| 126 |  | -      await ((after.executor as DelegatedDatabase) | 
| 127 |  | -        .delegate.versionDelegate as DynamicVersionDelegate).setSchemaVersion(999); | 
| 128 |  | - | 
| 129 | 122 |       await verifier.migrateAndValidate(after, 2, validateDropped: true); | 
| 130 | 123 |       await after.close(); | 
| 131 | 124 |     }); | 
|  | 
0 commit comments