Add new defaultDispatcher argument.

Change-Id: I81c5e020fe2632f1c1ad6ca411df59fb0e867ce9
pull/1238/head
Jaehwa Noh 1 month ago
parent 99d02f79e4
commit 93c26f99f2

@ -29,6 +29,7 @@ import androidx.navigation.testing.TestNavHostController
import com.google.samples.apps.nowinandroid.core.data.repository.CompositeUserNewsResourceRepository
import com.google.samples.apps.nowinandroid.core.testing.repository.TestNewsRepository
import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository
import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule
import com.google.samples.apps.nowinandroid.core.testing.util.TestNetworkMonitor
import com.google.samples.apps.nowinandroid.core.testing.util.TestTimeZoneMonitor
import dagger.hilt.android.testing.HiltAndroidTest
@ -54,16 +55,19 @@ import kotlin.test.assertTrue
@HiltAndroidTest
class NiaAppStateTest {
@get:Rule
@get:Rule(0)
val composeTestRule = createComposeRule()
@get:Rule(1)
val mainDispatcherRule = MainDispatcherRule()
// Create the test dependencies.
private val networkMonitor = TestNetworkMonitor()
private val timeZoneMonitor = TestTimeZoneMonitor()
private val userNewsResourceRepository =
CompositeUserNewsResourceRepository(TestNewsRepository(), TestUserDataRepository())
CompositeUserNewsResourceRepository(TestNewsRepository(), TestUserDataRepository(), mainDispatcherRule.testDispatcher)
// Subject under test.
private lateinit var state: NiaAppState

@ -24,20 +24,26 @@ import com.google.samples.apps.nowinandroid.core.model.data.mapToUserNewsResourc
import com.google.samples.apps.nowinandroid.core.testing.repository.TestNewsRepository
import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository
import com.google.samples.apps.nowinandroid.core.testing.repository.emptyUserData
import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.runTest
import kotlinx.datetime.Instant
import org.junit.Rule
import org.junit.Test
import kotlin.test.assertEquals
class CompositeUserNewsResourceRepositoryTest {
@get:Rule
val dispatcherRule = MainDispatcherRule()
private val newsRepository = TestNewsRepository()
private val userDataRepository = TestUserDataRepository()
private val userNewsResourceRepository = CompositeUserNewsResourceRepository(
newsRepository = newsRepository,
userDataRepository = userDataRepository,
defaultDispatcher = dispatcherRule.testDispatcher,
)
@Test

@ -39,6 +39,7 @@ class GetFollowableTopicsUseCaseTest {
val useCase = GetFollowableTopicsUseCase(
topicsRepository,
userDataRepository,
mainDispatcherRule.testDispatcher,
)
@Test

@ -30,7 +30,11 @@ import org.junit.runner.Description
* for the duration of the test.
*/
class MainDispatcherRule(
private val testDispatcher: TestDispatcher = UnconfinedTestDispatcher(),
/**
* Expose testDispatcher to share the scheduler to the test.
* See more in [Documentation](https://developer.android.com/kotlin/coroutines/test#injecting-test-dispatchers)
*/
val testDispatcher: TestDispatcher = UnconfinedTestDispatcher(),
) : TestWatcher() {
override fun starting(description: Description) = Dispatchers.setMain(testDispatcher)

@ -48,6 +48,7 @@ class BookmarksViewModelTest {
private val userNewsResourceRepository = CompositeUserNewsResourceRepository(
newsRepository = newsRepository,
userDataRepository = userDataRepository,
dispatcherRule.testDispatcher,
)
private lateinit var viewModel: BookmarksViewModel

@ -65,11 +65,13 @@ class ForYouViewModelTest {
private val userNewsResourceRepository = CompositeUserNewsResourceRepository(
newsRepository = newsRepository,
userDataRepository = userDataRepository,
defaultDispatcher = mainDispatcherRule.testDispatcher,
)
private val getFollowableTopicsUseCase = GetFollowableTopicsUseCase(
topicsRepository = topicsRepository,
userDataRepository = userDataRepository,
defaultDispatcher = mainDispatcherRule.testDispatcher,
)
private val savedStateHandle = SavedStateHandle()

@ -59,6 +59,7 @@ class InterestsViewModelTest {
private val getFollowableTopicsUseCase = GetFollowableTopicsUseCase(
topicsRepository = topicsRepository,
userDataRepository = userDataRepository,
defaultDispatcher = mainDispatcherRule.testDispatcher,
)
private lateinit var viewModel: InterestsViewModel

@ -57,6 +57,7 @@ class SearchViewModelTest {
private val getSearchContentsUseCase = GetSearchContentsUseCase(
searchContentsRepository = searchContentsRepository,
userDataRepository = userDataRepository,
dispatcherRule.testDispatcher,
)
private val recentSearchRepository = TestRecentSearchRepository()
private val getRecentQueryUseCase = GetRecentSearchQueriesUseCase(recentSearchRepository)

@ -52,6 +52,7 @@ class TopicViewModelTest {
private val userNewsResourceRepository = CompositeUserNewsResourceRepository(
newsRepository = newsRepository,
userDataRepository = userDataRepository,
defaultDispatcher = dispatcherRule.testDispatcher,
)
private lateinit var viewModel: TopicViewModel

Loading…
Cancel
Save