From 18a9170691199725254067504bb1f8508f25447d Mon Sep 17 00:00:00 2001 From: Ayan Sarkar <71203077+Ayan-10@users.noreply.github.com> Date: Wed, 23 Feb 2022 00:00:37 +0530 Subject: [PATCH] Unit Tests for LocationPickerViewModel (#4846) * LocationPickerViewModel Unit Tests added * LocationPickerViewModel Unit Tests added --- .../LocationPickerViewModelUnitTests.kt | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 app/src/test/kotlin/fr/free/nrw/commons/locationpicker/LocationPickerViewModelUnitTests.kt diff --git a/app/src/test/kotlin/fr/free/nrw/commons/locationpicker/LocationPickerViewModelUnitTests.kt b/app/src/test/kotlin/fr/free/nrw/commons/locationpicker/LocationPickerViewModelUnitTests.kt new file mode 100644 index 000000000..e4a228ff1 --- /dev/null +++ b/app/src/test/kotlin/fr/free/nrw/commons/locationpicker/LocationPickerViewModelUnitTests.kt @@ -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 + + @Mock + private lateinit var response: Response + + @Mock + private lateinit var result: MutableLiveData + + @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 + } + +} \ No newline at end of file