From b5bb8efe0a43c1002fa023a3efda697f48cc9bf5 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Tue, 19 Jul 2022 10:01:23 +0300 Subject: [PATCH] Improve database tests --- .../kotatsu/core/db/MangaDatabaseTest.kt | 40 ++++++++++--------- .../koitharu/kotatsu/core/db/MangaDatabase.kt | 40 ++++++++++--------- 2 files changed, 42 insertions(+), 38 deletions(-) diff --git a/app/src/androidTest/java/org/koitharu/kotatsu/core/db/MangaDatabaseTest.kt b/app/src/androidTest/java/org/koitharu/kotatsu/core/db/MangaDatabaseTest.kt index 63b302b47..23c8b9796 100644 --- a/app/src/androidTest/java/org/koitharu/kotatsu/core/db/MangaDatabaseTest.kt +++ b/app/src/androidTest/java/org/koitharu/kotatsu/core/db/MangaDatabaseTest.kt @@ -6,8 +6,6 @@ import androidx.test.platform.app.InstrumentationRegistry import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith -import org.koitharu.kotatsu.core.db.migrations.* -import java.io.IOException import kotlin.test.assertEquals @RunWith(AndroidJUnit4::class) @@ -19,10 +17,20 @@ class MangaDatabaseTest { MangaDatabase::class.java, ) + private val migrations = databaseMigrations + @Test - @Throws(IOException::class) - fun migrateAll() { + fun versions() { + assertEquals(1, migrations.first().startVersion) + repeat(migrations.size) { i -> + assertEquals(i + 1, migrations[i].startVersion) + assertEquals(i + 2, migrations[i].endVersion) + } assertEquals(DATABASE_VERSION, migrations.last().endVersion) + } + + @Test + fun migrateAll() { helper.createDatabase(TEST_DB, 1).close() for (migration in migrations) { helper.runMigrationsAndValidate( @@ -34,22 +42,16 @@ class MangaDatabaseTest { } } + @Test + fun prePopulate() { + val resources = InstrumentationRegistry.getInstrumentation().targetContext.resources + helper.createDatabase(TEST_DB, DATABASE_VERSION).use { + DatabasePrePopulateCallback(resources).onCreate(it) + } + } + private companion object { const val TEST_DB = "test-db" - - val migrations = arrayOf( - Migration1To2(), - Migration2To3(), - Migration3To4(), - Migration4To5(), - Migration5To6(), - Migration6To7(), - Migration7To8(), - Migration8To9(), - Migration9To10(), - Migration10To11(), - Migration11To12(), - ) } -} \ No newline at end of file +} diff --git a/app/src/main/java/org/koitharu/kotatsu/core/db/MangaDatabase.kt b/app/src/main/java/org/koitharu/kotatsu/core/db/MangaDatabase.kt index a648911bf..d3dff3cc6 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/db/MangaDatabase.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/db/MangaDatabase.kt @@ -4,6 +4,7 @@ import android.content.Context import androidx.room.Database import androidx.room.Room import androidx.room.RoomDatabase +import androidx.room.migration.Migration import org.koitharu.kotatsu.bookmarks.data.BookmarkEntity import org.koitharu.kotatsu.bookmarks.data.BookmarksDao import org.koitharu.kotatsu.core.db.dao.MangaDao @@ -65,22 +66,23 @@ abstract class MangaDatabase : RoomDatabase() { abstract val scrobblingDao: ScrobblingDao } -fun MangaDatabase(context: Context): MangaDatabase = Room.databaseBuilder( - context, - MangaDatabase::class.java, - "kotatsu-db" -).addMigrations( - Migration1To2(), - Migration2To3(), - Migration3To4(), - Migration4To5(), - Migration5To6(), - Migration6To7(), - Migration7To8(), - Migration8To9(), - Migration9To10(), - Migration10To11(), - Migration11To12(), -).addCallback( - DatabasePrePopulateCallback(context.resources) -).build() \ No newline at end of file +val databaseMigrations: Array + get() = arrayOf( + Migration1To2(), + Migration2To3(), + Migration3To4(), + Migration4To5(), + Migration5To6(), + Migration6To7(), + Migration7To8(), + Migration8To9(), + Migration9To10(), + Migration10To11(), + Migration11To12(), + ) + +fun MangaDatabase(context: Context): MangaDatabase = Room + .databaseBuilder(context, MangaDatabase::class.java, "kotatsu-db") + .addMigrations(*databaseMigrations) + .addCallback(DatabasePrePopulateCallback(context.resources)) + .build() \ No newline at end of file