Преглед изворни кода

CallRecordingViewModelTest: enable testing LiveData and Rx without Looper

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
Álvaro Brey пре 2 година
родитељ
комит
4687341755

+ 1 - 0
app/build.gradle

@@ -290,6 +290,7 @@ dependencies {
 
 
     testImplementation 'junit:junit:4.13.2'
     testImplementation 'junit:junit:4.13.2'
     testImplementation 'org.mockito:mockito-core:5.1.1'
     testImplementation 'org.mockito:mockito-core:5.1.1'
+    testImplementation 'androidx.arch.core:core-testing:2.1.0'
 
 
     androidTestImplementation "androidx.test:core:1.5.0"
     androidTestImplementation "androidx.test:core:1.5.0"
 
 

+ 22 - 2
app/src/test/java/com/nextcloud/talk/viewmodels/CallRecordingViewModelTest.kt

@@ -1,12 +1,20 @@
 package com.nextcloud.talk.viewmodels
 package com.nextcloud.talk.viewmodels
 
 
+import androidx.arch.core.executor.testing.InstantTaskExecutorRule
 import com.nextcloud.talk.test.fakes.FakeCallRecordingRepository
 import com.nextcloud.talk.test.fakes.FakeCallRecordingRepository
 import com.vividsolutions.jts.util.Assert
 import com.vividsolutions.jts.util.Assert
+import io.reactivex.android.plugins.RxAndroidPlugins
+import io.reactivex.schedulers.Schedulers
 import org.junit.Before
 import org.junit.Before
+import org.junit.BeforeClass
+import org.junit.Rule
 import org.junit.Test
 import org.junit.Test
 import org.mockito.MockitoAnnotations
 import org.mockito.MockitoAnnotations
 
 
-internal class CallRecordingViewModelTest {
+class CallRecordingViewModelTest {
+
+    @get:Rule
+    val instantExecutorRule = InstantTaskExecutorRule()
 
 
     val repository = FakeCallRecordingRepository()
     val repository = FakeCallRecordingRepository()
 
 
@@ -19,10 +27,22 @@ internal class CallRecordingViewModelTest {
     fun testCallRecordingViewModel_startRecord() {
     fun testCallRecordingViewModel_startRecord() {
         val viewModel = CallRecordingViewModel(repository)
         val viewModel = CallRecordingViewModel(repository)
 
 
+        viewModel.setData("foo")
+
         viewModel.clickRecordButton()
         viewModel.clickRecordButton()
 
 
         // implement extension function for liveData to await value?!
         // implement extension function for liveData to await value?!
 
 
-        Assert.equals(CallRecordingViewModel.RecordingStartedState, viewModel.viewState)
+        Assert.equals(CallRecordingViewModel.RecordingStartLoadingState, viewModel.viewState.value)
+    }
+
+    companion object {
+        @JvmStatic
+        @BeforeClass
+        fun setUpClass() {
+            RxAndroidPlugins.setInitMainThreadSchedulerHandler {
+                Schedulers.trampoline()
+            }
+        }
     }
     }
 }
 }