diff --git a/app/build.gradle b/app/build.gradle index 5ebd089fc..34cb14f91 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -144,4 +144,4 @@ dependencies { androidTestImplementation 'androidx.room:room-testing:2.4.2' androidTestImplementation 'com.squareup.moshi:moshi-kotlin:1.13.0' -} \ No newline at end of file +} diff --git a/app/src/androidTest/assets/categories/simple.json b/app/src/androidTest/assets/categories/simple.json index 90f6ecf1a..58a2ab058 100644 --- a/app/src/androidTest/assets/categories/simple.json +++ b/app/src/androidTest/assets/categories/simple.json @@ -4,5 +4,6 @@ "sortKey": 1, "order": "NEWEST", "createdAt": 1335906000000, - "isTrackingEnabled": true -} \ No newline at end of file + "isTrackingEnabled": true, + "isVisibleInLibrary": true +} diff --git a/app/src/androidTest/assets/kotatsu_test.bak b/app/src/androidTest/assets/kotatsu_test.bak new file mode 100755 index 000000000..a6eae4cdc Binary files /dev/null and b/app/src/androidTest/assets/kotatsu_test.bak differ diff --git a/app/src/androidTest/java/org/koitharu/kotatsu/settings/backup/AppBackupAgentTest.kt b/app/src/androidTest/java/org/koitharu/kotatsu/settings/backup/AppBackupAgentTest.kt index 1d0ca5498..57dd36fd0 100644 --- a/app/src/androidTest/java/org/koitharu/kotatsu/settings/backup/AppBackupAgentTest.kt +++ b/app/src/androidTest/java/org/koitharu/kotatsu/settings/backup/AppBackupAgentTest.kt @@ -1,6 +1,9 @@ package org.koitharu.kotatsu.settings.backup +import android.content.res.AssetManager import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.platform.app.InstrumentationRegistry +import kotlinx.coroutines.flow.first import kotlinx.coroutines.test.runTest import org.junit.Before import org.junit.Test @@ -14,6 +17,7 @@ import org.koitharu.kotatsu.core.db.MangaDatabase import org.koitharu.kotatsu.core.db.entity.toMangaTags import org.koitharu.kotatsu.favourites.domain.FavouritesRepository import org.koitharu.kotatsu.history.domain.HistoryRepository +import java.io.File import kotlin.test.* @RunWith(AndroidJUnit4::class) @@ -30,7 +34,7 @@ class AppBackupAgentTest : KoinTest { } @Test - fun testBackupRestore() = runTest { + fun backupAndRestore() = runTest { val category = favouritesRepository.createCategory( title = SampleData.favouriteCategory.title, sortOrder = SampleData.favouriteCategory.order, @@ -64,4 +68,25 @@ class AppBackupAgentTest : KoinTest { val allTags = database.tagsDao.findTags(SampleData.tag.source.name).toMangaTags() assertContains(allTags, SampleData.tag) } -} \ No newline at end of file + + @Test + fun restoreOldBackup() { + val agent = AppBackupAgent() + val backup = File.createTempFile("backup_", ".tmp") + InstrumentationRegistry.getInstrumentation().context.assets + .open("kotatsu_test.bak", AssetManager.ACCESS_STREAMING) + .use { input -> + backup.outputStream().use { output -> + input.copyTo(output) + } + } + backup.inputStream().use { + agent.restoreBackupFile(it.fd, backup.length(), backupRepository) + } + runTest { + assertEquals(6, historyRepository.observeAll().first().size) + assertEquals(2, favouritesRepository.observeCategories().first().size) + assertEquals(15, favouritesRepository.getAllManga().size) + } + } +}