Improve database tests

This commit is contained in:
Koitharu
2022-07-19 10:01:23 +03:00
parent f18c18230b
commit b5bb8efe0a
2 changed files with 42 additions and 38 deletions

View File

@@ -6,8 +6,6 @@ import androidx.test.platform.app.InstrumentationRegistry
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.koitharu.kotatsu.core.db.migrations.*
import java.io.IOException
import kotlin.test.assertEquals import kotlin.test.assertEquals
@RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class)
@@ -19,10 +17,20 @@ class MangaDatabaseTest {
MangaDatabase::class.java, MangaDatabase::class.java,
) )
private val migrations = databaseMigrations
@Test @Test
@Throws(IOException::class) fun versions() {
fun migrateAll() { 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) assertEquals(DATABASE_VERSION, migrations.last().endVersion)
}
@Test
fun migrateAll() {
helper.createDatabase(TEST_DB, 1).close() helper.createDatabase(TEST_DB, 1).close()
for (migration in migrations) { for (migration in migrations) {
helper.runMigrationsAndValidate( 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 { private companion object {
const val TEST_DB = "test-db" const val TEST_DB = "test-db"
val migrations = arrayOf(
Migration1To2(),
Migration2To3(),
Migration3To4(),
Migration4To5(),
Migration5To6(),
Migration6To7(),
Migration7To8(),
Migration8To9(),
Migration9To10(),
Migration10To11(),
Migration11To12(),
)
} }
} }

View File

@@ -4,6 +4,7 @@ import android.content.Context
import androidx.room.Database import androidx.room.Database
import androidx.room.Room import androidx.room.Room
import androidx.room.RoomDatabase import androidx.room.RoomDatabase
import androidx.room.migration.Migration
import org.koitharu.kotatsu.bookmarks.data.BookmarkEntity import org.koitharu.kotatsu.bookmarks.data.BookmarkEntity
import org.koitharu.kotatsu.bookmarks.data.BookmarksDao import org.koitharu.kotatsu.bookmarks.data.BookmarksDao
import org.koitharu.kotatsu.core.db.dao.MangaDao import org.koitharu.kotatsu.core.db.dao.MangaDao
@@ -65,22 +66,23 @@ abstract class MangaDatabase : RoomDatabase() {
abstract val scrobblingDao: ScrobblingDao abstract val scrobblingDao: ScrobblingDao
} }
fun MangaDatabase(context: Context): MangaDatabase = Room.databaseBuilder( val databaseMigrations: Array<Migration>
context, get() = arrayOf(
MangaDatabase::class.java, Migration1To2(),
"kotatsu-db" Migration2To3(),
).addMigrations( Migration3To4(),
Migration1To2(), Migration4To5(),
Migration2To3(), Migration5To6(),
Migration3To4(), Migration6To7(),
Migration4To5(), Migration7To8(),
Migration5To6(), Migration8To9(),
Migration6To7(), Migration9To10(),
Migration7To8(), Migration10To11(),
Migration8To9(), Migration11To12(),
Migration9To10(), )
Migration10To11(),
Migration11To12(), fun MangaDatabase(context: Context): MangaDatabase = Room
).addCallback( .databaseBuilder(context, MangaDatabase::class.java, "kotatsu-db")
DatabasePrePopulateCallback(context.resources) .addMigrations(*databaseMigrations)
).build() .addCallback(DatabasePrePopulateCallback(context.resources))
.build()