Skip to content

Commit cd3dfea

Browse files
committed
refactor: Add test DI module
1 parent 16fd390 commit cd3dfea

File tree

3 files changed

+59
-28
lines changed

3 files changed

+59
-28
lines changed

app/src/test/java/to/bitkit/androidServices/LightningNodeServiceTest.kt

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import dagger.hilt.android.testing.HiltAndroidRule
1212
import dagger.hilt.android.testing.HiltAndroidTest
1313
import dagger.hilt.android.testing.HiltTestApplication
1414
import dagger.hilt.android.testing.UninstallModules
15-
import kotlinx.coroutines.CoroutineDispatcher
1615
import kotlinx.coroutines.flow.MutableSharedFlow
1716
import kotlinx.coroutines.runBlocking
1817
import org.junit.After
@@ -41,10 +40,8 @@ import to.bitkit.CurrentActivity
4140
import to.bitkit.R
4241
import to.bitkit.data.AppCacheData
4342
import to.bitkit.data.CacheStore
44-
import to.bitkit.di.BgDispatcher
43+
import to.bitkit.di.DbModule
4544
import to.bitkit.di.DispatchersModule
46-
import to.bitkit.di.IoDispatcher
47-
import to.bitkit.di.UiDispatcher
4845
import to.bitkit.domain.commands.NotifyPaymentReceived
4946
import to.bitkit.domain.commands.NotifyPaymentReceivedHandler
5047
import to.bitkit.models.NewTransactionSheetDetails
@@ -57,48 +54,26 @@ import to.bitkit.services.NodeEventHandler
5754
import to.bitkit.test.BaseUnitTest
5855

5956
@HiltAndroidTest
60-
@UninstallModules(DispatchersModule::class)
57+
@UninstallModules(DispatchersModule::class, DbModule::class)
6158
@Config(application = HiltTestApplication::class)
6259
@RunWith(RobolectricTestRunner::class)
6360
class LightningNodeServiceTest : BaseUnitTest() {
6461

65-
@get:Rule(order = 0)
66-
val mainDispatcherRule = coroutinesTestRule
67-
6862
@get:Rule(order = 1)
6963
var hiltRule = HiltAndroidRule(this)
7064

7165
@BindValue
72-
@JvmField
7366
val lightningRepo = mock<LightningRepo>()
7467

7568
@BindValue
76-
@JvmField
7769
val walletRepo = mock<WalletRepo>()
7870

7971
@BindValue
80-
@JvmField
8172
val notifyPaymentReceivedHandler = mock<NotifyPaymentReceivedHandler>()
8273

8374
@BindValue
84-
@JvmField
8575
val cacheStore = mock<CacheStore>()
8676

87-
@BindValue
88-
@UiDispatcher
89-
@JvmField
90-
val uiDispatcher: CoroutineDispatcher = testDispatcher
91-
92-
@BindValue
93-
@BgDispatcher
94-
@JvmField
95-
val bgDispatcher: CoroutineDispatcher = testDispatcher
96-
97-
@BindValue
98-
@IoDispatcher
99-
@JvmField
100-
val ioDispatcher: CoroutineDispatcher = testDispatcher
101-
10277
private val handlerCaptor: KArgumentCaptor<NodeEventHandler?> = argumentCaptor()
10378
private val cacheDataFlow = MutableSharedFlow<AppCacheData>(replay = 1)
10479
private val context = ApplicationProvider.getApplicationContext<Context>()
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package to.bitkit.di
2+
3+
import android.content.Context
4+
import androidx.room.Room
5+
import dagger.Module
6+
import dagger.Provides
7+
import dagger.hilt.android.qualifiers.ApplicationContext
8+
import dagger.hilt.components.SingletonComponent
9+
import dagger.hilt.testing.TestInstallIn
10+
import kotlinx.coroutines.CoroutineDispatcher
11+
import kotlinx.coroutines.ExperimentalCoroutinesApi
12+
import kotlinx.coroutines.test.UnconfinedTestDispatcher
13+
import to.bitkit.data.AppDb
14+
import to.bitkit.data.dao.TransferDao
15+
import javax.inject.Singleton
16+
17+
@OptIn(ExperimentalCoroutinesApi::class)
18+
@Module
19+
@TestInstallIn(
20+
components = [SingletonComponent::class],
21+
replaces = [DispatchersModule::class, DbModule::class]
22+
)
23+
object TestModule {
24+
25+
@Provides
26+
@Singleton
27+
@UiDispatcher
28+
fun provideUiDispatcher(): CoroutineDispatcher = UnconfinedTestDispatcher()
29+
30+
@Provides
31+
@Singleton
32+
@IoDispatcher
33+
fun provideIoDispatcher(): CoroutineDispatcher = UnconfinedTestDispatcher()
34+
35+
@Provides
36+
@Singleton
37+
@BgDispatcher
38+
fun provideBgDispatcher(): CoroutineDispatcher = UnconfinedTestDispatcher()
39+
40+
@Provides
41+
@Singleton
42+
fun provideAppDb(
43+
@ApplicationContext context: Context,
44+
): AppDb {
45+
return Room.inMemoryDatabaseBuilder(
46+
context,
47+
AppDb::class.java
48+
)
49+
.allowMainThreadQueries()
50+
.build()
51+
}
52+
53+
@Provides
54+
@Singleton
55+
fun provideTransferDao(db: AppDb): TransferDao = db.transferDao()
56+
}

app/src/test/java/to/bitkit/test/BaseUnitTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import org.junit.Rule
1111
abstract class BaseUnitTest(
1212
testDispatcher: TestDispatcher = UnconfinedTestDispatcher()
1313
) {
14-
@get:Rule
14+
@get:Rule(order = 0)
1515
val coroutinesTestRule = MainDispatcherRule(testDispatcher)
1616

1717
protected val testDispatcher get() = coroutinesTestRule.testDispatcher

0 commit comments

Comments
 (0)