srctree

Robin Linden parent d38f0b30 097f4fe5
Update the Tox test to not require mockk

This required some previously internal repository constructors to bemade public, but it's worth it to drop a dependency.

This commit also removes the now-unused mockk dependency. We've beenunable to update it for a very long time as the versions after the onewe're using only supports API 21 and newer, and dropping support for API19 just for a mocking library doesn't seem reasonable.

inlinesplit
core/src/main/kotlin/repository/ContactRepository.kt added: 37, removed: 15, total 22
@@ -13,7 +13,7 @@ import javax.inject.Inject
import javax.inject.Singleton
 
@Singleton
class ContactRepository @Inject internal constructor(
class ContactRepository @Inject constructor(
private val dao: ContactDao,
) {
fun exists(publicKey: String): Boolean = dao.exists(publicKey)
 
core/src/main/kotlin/repository/UserRepository.kt added: 37, removed: 15, total 22
@@ -13,7 +13,7 @@ import javax.inject.Inject
import javax.inject.Singleton
 
@Singleton
class UserRepository @Inject internal constructor(
class UserRepository @Inject constructor(
private val userDao: UserDao,
) {
fun exists(publicKey: String): Boolean =
 
domain/build.gradle.kts added: 37, removed: 15, total 22
@@ -92,5 +92,4 @@ dependencies {
// Conflicts with a lot of things due to having embedded "byte buddy" instead of depending on it.A
exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-debug")
}
androidTestImplementation(libs.test.mockk)
}
 
domain/src/androidTest/kotlin/tox/ToxTest.kt added: 37, removed: 15, total 22
@@ -1,30 +1,54 @@
// SPDX-FileCopyrightText: 2020-2022 aTox contributors
// SPDX-FileCopyrightText: 2020-2022 Robin Lindén <dev@robinlinden.eu>
//
// SPDX-License-Identifier: GPL-3.0-only
 
package ltd.evilcorp.domain.tox
 
import androidx.room.Room
import androidx.test.ext.junit.runners.AndroidJUnit4
import io.mockk.mockk
import androidx.test.platform.app.InstrumentationRegistry
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.delay
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest
import ltd.evilcorp.core.db.Database
import ltd.evilcorp.core.repository.ContactRepository
import ltd.evilcorp.core.repository.UserRepository
import org.junit.Test
import org.junit.runner.RunWith
 
class FakeBootstrapNodeRegistry : BootstrapNodeRegistry {
override fun get(n: Int): List<BootstrapNode> = listOf()
override fun reset() {
// Do nothing.
}
}
 
class FakeSaveManager : SaveManager {
override fun list(): List<String> = listOf()
override fun load(pk: PublicKey): ByteArray? = null
override fun save(pk: PublicKey, saveData: ByteArray) {
// Do nothing.
}
}
 
@RunWith(AndroidJUnit4::class)
class ToxTest {
@ExperimentalCoroutinesApi
@Test
fun quitting_does_not_crash() = runTest {
val instrumentation = InstrumentationRegistry.getInstrumentation()
val db = Room.inMemoryDatabaseBuilder(instrumentation.context, Database::class.java).build()
val userRepository = UserRepository(db.userDao())
val contactRepository = ContactRepository(db.contactDao())
 
repeat(10) {
val tox = Tox(
TestScope(),
mockk(relaxUnitFun = true),
mockk(relaxUnitFun = true),
mockk(relaxUnitFun = true),
mockk(),
contactRepository,
userRepository,
FakeSaveManager(),
FakeBootstrapNodeRegistry(),
).apply { isBootstrapNeeded = false }
tox.start(SaveOptions(null, false, ProxyType.None, "", 0), null, ToxEventListener(), ToxAvEventListener())
delay(25)
 
gradle/libs.versions.toml added: 37, removed: 15, total 22
@@ -80,7 +80,6 @@ test-espresso-contrib = { module = "androidx.test.espresso:espresso-contrib", ve
test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "espresso" }
test-junit-core = "junit:junit:4.13.2"
test-junit-ext = "androidx.test.ext:junit:1.1.3"
test-mockk = "io.mockk:mockk-android:1.11.0"
test-rules = { module = "androidx.test:rules", version.ref = "androidx-test" }
test-runner = { module = "androidx.test:runner", version.ref = "androidx-test" }