diff --git a/test/cloud_ride_identity_migration_test.dart b/test/cloud_ride_identity_migration_test.dart index a6f1155..43fdbbe 100644 --- a/test/cloud_ride_identity_migration_test.dart +++ b/test/cloud_ride_identity_migration_test.dart @@ -95,4 +95,28 @@ void main() { final rideId = await db.startRide(); expect(await db.getCloudRideId(rideId), startsWith('ride_')); }); + + test('a restored ride keeps its cloud identity even when its local ID changes', () async { + const cloudId = 'ride_9f4d8a3e2b1c7d6e5f4a3b2c1d0e9f8a'; + final original = AppDatabase.forTesting(NativeDatabase.memory()); + final restored = AppDatabase.forTesting(NativeDatabase.memory()); + addTearDown(original.close); + addTearDown(restored.close); + + final originalId = await original.startRide(); + await original.customStatement( + 'UPDATE rides SET cloud_ride_id = ? WHERE id = ?', + [cloudId, originalId], + ); + expect(await original.getCloudRideId(originalId), cloudId); + + final restoredId = await restored.startRide(); + await restored.customStatement( + 'UPDATE rides SET cloud_ride_id = ? WHERE id = ?', + [cloudId, restoredId], + ); + + expect(restoredId, isNot(originalId)); + expect(await restored.getCloudRideId(restoredId), cloudId); + }); }