Fix base URL view model coverage calculation
This commit is contained in:
@@ -1,10 +0,0 @@
|
|||||||
package gq.kirmanak.mealient.test
|
|
||||||
|
|
||||||
import android.app.Application
|
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
|
||||||
import org.junit.runner.RunWith
|
|
||||||
import org.robolectric.annotation.Config
|
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4::class)
|
|
||||||
@Config(application = Application::class, manifest = Config.NONE)
|
|
||||||
abstract class RobolectricTest
|
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
package gq.kirmanak.mealient.ui.baseurl
|
package gq.kirmanak.mealient.ui.baseurl
|
||||||
|
|
||||||
|
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
|
||||||
|
import com.google.common.truth.Truth.assertThat
|
||||||
import gq.kirmanak.mealient.data.auth.AuthRepo
|
import gq.kirmanak.mealient.data.auth.AuthRepo
|
||||||
import gq.kirmanak.mealient.data.baseurl.ServerInfoRepo
|
import gq.kirmanak.mealient.data.baseurl.ServerInfoRepo
|
||||||
import gq.kirmanak.mealient.data.baseurl.VersionDataSource
|
import gq.kirmanak.mealient.data.baseurl.VersionDataSource
|
||||||
@@ -9,20 +11,22 @@ import gq.kirmanak.mealient.logging.Logger
|
|||||||
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_BASE_URL
|
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_BASE_URL
|
||||||
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_VERSION
|
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_VERSION
|
||||||
import gq.kirmanak.mealient.test.FakeLogger
|
import gq.kirmanak.mealient.test.FakeLogger
|
||||||
import gq.kirmanak.mealient.test.RobolectricTest
|
import gq.kirmanak.mealient.ui.OperationUiState
|
||||||
import io.mockk.MockKAnnotations
|
import io.mockk.MockKAnnotations
|
||||||
import io.mockk.coEvery
|
import io.mockk.coEvery
|
||||||
import io.mockk.coVerify
|
import io.mockk.coVerify
|
||||||
import io.mockk.impl.annotations.MockK
|
import io.mockk.impl.annotations.MockK
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
import kotlinx.coroutines.test.TestScope
|
import kotlinx.coroutines.test.*
|
||||||
import kotlinx.coroutines.test.advanceUntilIdle
|
import org.junit.After
|
||||||
import kotlinx.coroutines.test.runTest
|
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
import java.io.IOException
|
||||||
|
|
||||||
@OptIn(ExperimentalCoroutinesApi::class)
|
@OptIn(ExperimentalCoroutinesApi::class)
|
||||||
class BaseURLViewModelTest : RobolectricTest() {
|
class BaseURLViewModelTest {
|
||||||
|
|
||||||
@MockK(relaxUnitFun = true)
|
@MockK(relaxUnitFun = true)
|
||||||
lateinit var serverInfoRepo: ServerInfoRepo
|
lateinit var serverInfoRepo: ServerInfoRepo
|
||||||
@@ -36,6 +40,9 @@ class BaseURLViewModelTest : RobolectricTest() {
|
|||||||
@MockK
|
@MockK
|
||||||
lateinit var versionDataSource: VersionDataSource
|
lateinit var versionDataSource: VersionDataSource
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val instantExecutorRule = InstantTaskExecutorRule()
|
||||||
|
|
||||||
private val logger: Logger = FakeLogger()
|
private val logger: Logger = FakeLogger()
|
||||||
|
|
||||||
lateinit var subject: BaseURLViewModel
|
lateinit var subject: BaseURLViewModel
|
||||||
@@ -43,6 +50,7 @@ class BaseURLViewModelTest : RobolectricTest() {
|
|||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockKAnnotations.init(this)
|
MockKAnnotations.init(this)
|
||||||
|
Dispatchers.setMain(UnconfinedTestDispatcher())
|
||||||
subject = BaseURLViewModel(
|
subject = BaseURLViewModel(
|
||||||
serverInfoRepo = serverInfoRepo,
|
serverInfoRepo = serverInfoRepo,
|
||||||
authRepo = authRepo,
|
authRepo = authRepo,
|
||||||
@@ -52,6 +60,10 @@ class BaseURLViewModelTest : RobolectricTest() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
fun tearDown() {
|
||||||
|
Dispatchers.resetMain()
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `when saveBaseURL expect no version checks given that current URL matches new`() = runTest {
|
fun `when saveBaseURL expect no version checks given that current URL matches new`() = runTest {
|
||||||
@@ -114,4 +126,13 @@ class BaseURLViewModelTest : RobolectricTest() {
|
|||||||
versionDataSource.getVersionInfo(eq(TEST_BASE_URL))
|
versionDataSource.getVersionInfo(eq(TEST_BASE_URL))
|
||||||
} returns VersionInfo(TEST_VERSION)
|
} returns VersionInfo(TEST_VERSION)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `when saveBaseURL expect error given that version can't be fetched`() = runTest {
|
||||||
|
coEvery { serverInfoRepo.getUrl() } returns null
|
||||||
|
coEvery { versionDataSource.getVersionInfo(eq(TEST_BASE_URL)) } throws IOException()
|
||||||
|
subject.saveBaseUrl(TEST_BASE_URL)
|
||||||
|
advanceUntilIdle()
|
||||||
|
assertThat(subject.uiState.value).isInstanceOf(OperationUiState.Failure::class.java)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user