Unit Tests for LocationPickerViewModel (#4846)

* LocationPickerViewModel Unit Tests added

* LocationPickerViewModel Unit Tests added
This commit is contained in:
Ayan Sarkar 2022-02-23 00:00:37 +05:30 committed by GitHub
parent d81587b85a
commit 18a9170691
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -0,0 +1,72 @@
package fr.free.nrw.commons.locationpicker
import android.app.Application
import androidx.lifecycle.MutableLiveData
import com.mapbox.mapboxsdk.camera.CameraPosition
import com.nhaarman.mockitokotlin2.any
import com.nhaarman.mockitokotlin2.times
import com.nhaarman.mockitokotlin2.verify
import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.LocationPicker.LocationPickerViewModel
import org.junit.Before
import org.junit.Test
import org.mockito.Mock
import org.mockito.Mockito.mock
import org.mockito.MockitoAnnotations
import org.powermock.reflect.Whitebox
import retrofit2.Call
import retrofit2.Response
class LocationPickerViewModelUnitTests {
private lateinit var viewModel: LocationPickerViewModel
@Mock
private lateinit var application: Application
@Mock
private lateinit var call: Call<CameraPosition>
@Mock
private lateinit var response: Response<CameraPosition>
@Mock
private lateinit var result: MutableLiveData<CameraPosition>
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
viewModel = LocationPickerViewModel(application)
Whitebox.setInternalState(viewModel, "result", result)
}
@Test
fun `Test onResponse when response body is null`() {
viewModel.onResponse(call, response)
verify(call, times(0)).isExecuted
verify(response, times(1)).body()
verify(result, times(1)).value = null
}
@Test
fun `Test onResponse when response body is not null`() {
whenever(response.body()).thenReturn(mock(CameraPosition::class.java))
viewModel.onResponse(call, response)
verify(call, times(0)).isExecuted
verify(response, times(2)).body()
verify(result, times(1)).value = any()
}
@Test
fun testOnFailure() {
viewModel.onFailure(call, mock(Throwable::class.java))
verify(call, times(0)).isExecuted
}
@Test
fun testGetResult() {
viewModel.result
}
}