Skip to content

Commit 9b3369b

Browse files
committed
refactor(test): remove 'TestClass' AnkiDroid references
Once moved to `libanki`, textual references will be broken 'ioDispatcher' is an AnkiDroid-level concern
1 parent e2d7860 commit 9b3369b

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

AnkiDroid/src/test/java/com/ichi2/testutils/JvmTest.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@ import androidx.annotation.CallSuper
2121
import com.ichi2.anki.CollectionManager
2222
import com.ichi2.anki.common.time.MockTime
2323
import com.ichi2.anki.common.time.TimeManager
24+
import com.ichi2.anki.ioDispatcher
2425
import com.ichi2.anki.libanki.Collection
2526
import com.ichi2.anki.libanki.Storage
2627
import com.ichi2.anki.observability.ChangeManager
2728
import kotlinx.coroutines.Dispatchers
2829
import kotlinx.coroutines.runBlocking
30+
import kotlinx.coroutines.test.TestDispatcher
2931
import kotlinx.coroutines.test.TestScope
3032
import kotlinx.coroutines.test.UnconfinedTestDispatcher
3133
import kotlinx.coroutines.test.resetMain
@@ -120,6 +122,11 @@ open class JvmTest : TestClass {
120122
println("""-- completed test "${testName.methodName}"""")
121123
}
122124

125+
override fun setupTestDispatcher(dispatcher: TestDispatcher) {
126+
super.setupTestDispatcher(dispatcher)
127+
ioDispatcher = dispatcher
128+
}
129+
123130
fun <T> assumeThat(
124131
actual: T,
125132
matcher: Matcher<T>?,

AnkiDroid/src/test/java/com/ichi2/testutils/TestClass.kt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
package com.ichi2.testutils
1818

1919
import android.annotation.SuppressLint
20-
import com.ichi2.anki.ioDispatcher
21-
import com.ichi2.anki.isCollectionEmpty
2220
import com.ichi2.anki.libanki.Card
2321
import com.ichi2.anki.libanki.CardType
2422
import com.ichi2.anki.libanki.Collection
@@ -34,6 +32,7 @@ import com.ichi2.anki.libanki.testutils.TestCollectionManager
3432
import com.ichi2.anki.libanki.testutils.ext.addNote
3533
import kotlinx.coroutines.Dispatchers
3634
import kotlinx.coroutines.test.StandardTestDispatcher
35+
import kotlinx.coroutines.test.TestDispatcher
3736
import kotlinx.coroutines.test.TestScope
3837
import kotlinx.coroutines.test.UnconfinedTestDispatcher
3938
import kotlinx.coroutines.test.setMain
@@ -45,7 +44,8 @@ import kotlin.time.Duration.Companion.milliseconds
4544

4645
/**
4746
* marker interface for classes which contain tests and access the Anki collection
48-
* @see AndroidTest
47+
*
48+
* Android (AnkiDroid/Robolectric) is not required for these tests to run
4949
*/
5050
interface TestClass {
5151
val col: Collection
@@ -189,7 +189,7 @@ interface TestClass {
189189
}
190190
}
191191

192-
/** Ensures [isCollectionEmpty] returns `false` */
192+
/** Ensures `DeckUtils.isCollectionEmpty` returns `false` */
193193
fun ensureNonEmptyCollection() {
194194
addNotes(1)
195195
}
@@ -296,6 +296,9 @@ interface TestClass {
296296
col.updateNote(this)
297297
}
298298

299+
fun setupTestDispatcher(dispatcher: TestDispatcher) {
300+
}
301+
299302
/** * A wrapper around the standard [kotlinx.coroutines.test.runTest] that
300303
* takes care of updating the dispatcher used by CollectionManager as well.
301304
* * An argument could be made for using [StandardTestDispatcher] and
@@ -320,7 +323,7 @@ interface TestClass {
320323
) {
321324
val dispatcher = UnconfinedTestDispatcher()
322325
Dispatchers.setMain(dispatcher)
323-
ioDispatcher = dispatcher
326+
setupTestDispatcher(dispatcher)
324327
repeat(times) {
325328
if (times != 1) Timber.d("------ Executing test $it/$times ------")
326329
kotlinx.coroutines.test.runTest(context, dispatchTimeoutMs.milliseconds) {

0 commit comments

Comments
 (0)