Add DatabaseMocker to mock NewPipeDatabase
This commit is contained in:
parent
8a5e2ffa57
commit
7d6688f497
|
@ -1,7 +1,5 @@
|
|||
package org.schabi.newpipe.local.playlist
|
||||
|
||||
import androidx.room.Room
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
|
@ -10,6 +8,7 @@ import org.junit.rules.Timeout
|
|||
import org.schabi.newpipe.database.AppDatabase
|
||||
import org.schabi.newpipe.database.stream.model.StreamEntity
|
||||
import org.schabi.newpipe.extractor.stream.StreamType
|
||||
import org.schabi.newpipe.testUtil.TestDatabase
|
||||
import org.schabi.newpipe.testUtil.TrampolineSchedulerRule
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
|
@ -22,17 +21,11 @@ class LocalPlaylistManagerTest {
|
|||
val trampolineScheduler = TrampolineSchedulerRule()
|
||||
|
||||
@get:Rule
|
||||
val timeout = Timeout(10, TimeUnit.SECONDS)
|
||||
val timeout = Timeout(1, TimeUnit.SECONDS)
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
database = Room.inMemoryDatabaseBuilder(
|
||||
ApplicationProvider.getApplicationContext(),
|
||||
AppDatabase::class.java
|
||||
)
|
||||
.allowMainThreadQueries()
|
||||
.build()
|
||||
|
||||
database = TestDatabase.createReplacingNewPipeDatabase()
|
||||
manager = LocalPlaylistManager(database)
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
package org.schabi.newpipe.testUtil
|
||||
|
||||
import androidx.room.Room
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import org.junit.Assert.assertSame
|
||||
import org.schabi.newpipe.NewPipeDatabase
|
||||
import org.schabi.newpipe.database.AppDatabase
|
||||
|
||||
class TestDatabase {
|
||||
companion object {
|
||||
fun createReplacingNewPipeDatabase(): AppDatabase {
|
||||
val database = Room.inMemoryDatabaseBuilder(
|
||||
ApplicationProvider.getApplicationContext(),
|
||||
AppDatabase::class.java
|
||||
)
|
||||
.allowMainThreadQueries()
|
||||
.build()
|
||||
|
||||
val databaseField = NewPipeDatabase::class.java.getDeclaredField("databaseInstance")
|
||||
databaseField.isAccessible = true
|
||||
databaseField.set(NewPipeDatabase::class, database)
|
||||
|
||||
assertSame(
|
||||
"Mocking database failed!",
|
||||
database,
|
||||
NewPipeDatabase.getInstance(ApplicationProvider.getApplicationContext())
|
||||
)
|
||||
|
||||
return database
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue