Skip to content

Instantly share code, notes, and snippets.

@DjangoLC
Created June 22, 2021 20:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DjangoLC/acd35edc0e924ef8727ac7dda61993e0 to your computer and use it in GitHub Desktop.
Save DjangoLC/acd35edc0e924ef8727ac7dda61993e0 to your computer and use it in GitHub Desktop.
ViewModelTest
package com.kavak.android.kavakops.modules.home.viewModel
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import com.kavak.android.content_data.repository.PostalCodesRepo
import com.kavak.android.content_domain.ColonyData
import com.kavak.android.content_usecases.zipCodesAndColonies.GetColoniesByPostalCodeUseCase
import com.kavak.android.kavakops.providers.SchedulerProvider
import com.kavak.android.kavakops.utils.LiveDataTestUtil
import io.reactivex.Single
import io.reactivex.observers.TestObserver
import org.junit.*
import org.junit.rules.TestRule
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.MockitoAnnotations
import org.mockito.junit.MockitoJUnitRunner
import org.mockito.kotlin.mock
import org.mockito.kotlin.whenever
//@ExtendWith(InstantExecutorExtension::class)
@RunWith(MockitoJUnitRunner::class)
class HomeViewModelTest {
@get:Rule
var rule: TestRule = InstantTaskExecutorRule()
@Mock
private val postalCodesRepo = mock<PostalCodesRepo>()
@Mock
private val schedulerProvider = mock<SchedulerProvider>()
private lateinit var useCase: GetColoniesByPostalCodeUseCase
private lateinit var homeViewModel: HomeViewModel
@Before
fun setUp() {
MockitoAnnotations.openMocks(this)
/*RxAndroidPlugins.setInitMainThreadSchedulerHandler {
Schedulers.trampoline()
}*/
useCase = GetColoniesByPostalCodeUseCase(postalCodesRepo)
homeViewModel = HomeViewModel(useCase, schedulerProvider)
}
@Test
fun getZipCodes() {
val postalCodeObserver = TestObserver<ColonyData>()
val liveDataTestUtil = LiveDataTestUtil<ColonyData>()
val dummyData = ColonyData(
colony = listOf(),
department = "",
latitude = "",
longitude = "",
municipality = "",
neighborhood = "",
postalCode = "",
province = "",
region = "",
state = "",
street = ""
)
val observable = Single.just(
dummyData
)
whenever(schedulerProvider.getSchedulersForSingle<ColonyData>()).thenReturn {
observable
}
whenever(postalCodesRepo.getColoniesByPostalCode("96566")).thenReturn(
observable
)
whenever(useCase.invoke("96566")).thenReturn(
observable
)
observable.subscribe(postalCodeObserver)
homeViewModel.getColoniesByPostalCode()
postalCodeObserver.assertTerminated()
.assertNoErrors()
.assertResult(
dummyData
)
.dispose()
val dummyDataRetrieved = liveDataTestUtil.getValue(homeViewModel.zipCodes)
Assert.assertEquals(dummyData, dummyDataRetrieved)
}
@After
fun tearDown() {
val a = null
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment