Improve database tests
This commit is contained in:
@@ -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(),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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()
|
||||||
Reference in New Issue
Block a user