diff --git a/features/migration/impl/src/main/kotlin/io/element/android/features/migration/impl/MigrationPresenter.kt b/features/migration/impl/src/main/kotlin/io/element/android/features/migration/impl/MigrationPresenter.kt index 21d18f1e6c..c219c83bcd 100644 --- a/features/migration/impl/src/main/kotlin/io/element/android/features/migration/impl/MigrationPresenter.kt +++ b/features/migration/impl/src/main/kotlin/io/element/android/features/migration/impl/MigrationPresenter.kt @@ -45,10 +45,7 @@ class MigrationPresenter @Inject constructor( LaunchedEffect(migrationStoreVersion) { val migrationValue = migrationStoreVersion ?: return@LaunchedEffect if (migrationValue == -1) { - // Fresh install, no migration needed - Timber.d("Fresh install, no migration needed.") - migrationStore.setApplicationMigrationVersion(lastMigration) - return@LaunchedEffect + Timber.d("Fresh install, or previous installed application did not have the migration mechanism.") } if (migrationValue == lastMigration) { Timber.d("Current app migration version: $migrationValue. No migration needed.") diff --git a/features/migration/impl/src/test/kotlin/io/element/android/features/migration/impl/MigrationPresenterTest.kt b/features/migration/impl/src/test/kotlin/io/element/android/features/migration/impl/MigrationPresenterTest.kt index 9213d35a62..082c20c29c 100644 --- a/features/migration/impl/src/test/kotlin/io/element/android/features/migration/impl/MigrationPresenterTest.kt +++ b/features/migration/impl/src/test/kotlin/io/element/android/features/migration/impl/MigrationPresenterTest.kt @@ -27,12 +27,9 @@ class MigrationPresenterTest { val warmUpRule = WarmUpRule() @Test - fun `present - no migration should occurs on fresh installation, and last version should be stored`() = runTest { + fun `present - run all migrations on fresh installation, and last version should be stored`() = runTest { val migrations = (1..10).map { order -> - FakeAppMigration( - order = order, - migrateLambda = LambdaNoParamRecorder(ensureNeverCalled = true) { }, - ) + FakeAppMigration(order = order) } val store = InMemoryMigrationStore(initialApplicationMigrationVersion = -1) val presenter = createPresenter( @@ -44,12 +41,15 @@ class MigrationPresenterTest { }.test { val initialState = awaitItem() assertThat(initialState.migrationAction).isEqualTo(AsyncData.Uninitialized) - skipItems(1) + skipItems(migrations.size) awaitItem().also { state -> assertThat(state.migrationAction).isEqualTo(AsyncData.Success(Unit)) } assertThat(store.applicationMigrationVersion().first()).isEqualTo(migrations.maxOf { it.order }) } + for (migration in migrations) { + migration.migrateLambda.assertions().isCalledOnce() + } } @Test