Move VersionDataSourceImplTest
This commit is contained in:
@@ -1,80 +0,0 @@
|
|||||||
package gq.kirmanak.mealient.data.baseurl
|
|
||||||
|
|
||||||
import com.google.common.truth.Truth.assertThat
|
|
||||||
import gq.kirmanak.mealient.data.baseurl.impl.VersionDataSourceImpl
|
|
||||||
import gq.kirmanak.mealient.data.baseurl.impl.VersionResponse
|
|
||||||
import gq.kirmanak.mealient.data.baseurl.impl.VersionService
|
|
||||||
import gq.kirmanak.mealient.data.network.NetworkError
|
|
||||||
import gq.kirmanak.mealient.data.network.ServiceFactory
|
|
||||||
import gq.kirmanak.mealient.logging.Logger
|
|
||||||
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_BASE_URL
|
|
||||||
import gq.kirmanak.mealient.test.toJsonResponseBody
|
|
||||||
import io.mockk.MockKAnnotations
|
|
||||||
import io.mockk.coEvery
|
|
||||||
import io.mockk.impl.annotations.MockK
|
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
|
||||||
import kotlinx.coroutines.test.runTest
|
|
||||||
import kotlinx.serialization.SerializationException
|
|
||||||
import okio.IOException
|
|
||||||
import org.junit.Before
|
|
||||||
import org.junit.Test
|
|
||||||
import retrofit2.HttpException
|
|
||||||
import retrofit2.Response
|
|
||||||
|
|
||||||
@OptIn(ExperimentalCoroutinesApi::class)
|
|
||||||
class VersionDataSourceImplTest {
|
|
||||||
@MockK
|
|
||||||
lateinit var versionService: VersionService
|
|
||||||
|
|
||||||
@MockK
|
|
||||||
lateinit var versionServiceFactory: ServiceFactory<VersionService>
|
|
||||||
|
|
||||||
@MockK(relaxUnitFun = true)
|
|
||||||
lateinit var logger: Logger
|
|
||||||
|
|
||||||
lateinit var subject: VersionDataSource
|
|
||||||
|
|
||||||
@Before
|
|
||||||
fun setUp() {
|
|
||||||
MockKAnnotations.init(this)
|
|
||||||
subject = VersionDataSourceImpl(versionServiceFactory, logger)
|
|
||||||
coEvery { versionServiceFactory.provideService(eq(TEST_BASE_URL)) } returns versionService
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test(expected = NetworkError.MalformedUrl::class)
|
|
||||||
fun `when getVersionInfo and provideService throws then MalformedUrl`() = runTest {
|
|
||||||
coEvery {
|
|
||||||
versionServiceFactory.provideService(eq(TEST_BASE_URL))
|
|
||||||
} throws NetworkError.MalformedUrl(RuntimeException())
|
|
||||||
subject.getVersionInfo(TEST_BASE_URL)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test(expected = NetworkError.NotMealie::class)
|
|
||||||
fun `when getVersionInfo and getVersion throws HttpException then NotMealie`() = runTest {
|
|
||||||
val error = HttpException(Response.error<VersionResponse>(404, "".toJsonResponseBody()))
|
|
||||||
coEvery { versionService.getVersion() } throws error
|
|
||||||
subject.getVersionInfo(TEST_BASE_URL)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test(expected = NetworkError.NotMealie::class)
|
|
||||||
fun `when getVersionInfo and getVersion throws SerializationException then NotMealie`() =
|
|
||||||
runTest {
|
|
||||||
coEvery { versionService.getVersion() } throws SerializationException()
|
|
||||||
subject.getVersionInfo(TEST_BASE_URL)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test(expected = NetworkError.NoServerConnection::class)
|
|
||||||
fun `when getVersionInfo and getVersion throws IOException then NoServerConnection`() =
|
|
||||||
runTest {
|
|
||||||
coEvery { versionService.getVersion() } throws IOException()
|
|
||||||
subject.getVersionInfo(TEST_BASE_URL)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `when getVersionInfo and getVersion returns result then result`() = runTest {
|
|
||||||
coEvery { versionService.getVersion() } returns VersionResponse(true, "v0.5.6", true)
|
|
||||||
assertThat(subject.getVersionInfo(TEST_BASE_URL)).isEqualTo(
|
|
||||||
VersionInfo(true, "v0.5.6", true)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
package gq.kirmanak.mealient.datasource
|
||||||
|
|
||||||
|
import com.google.common.truth.Truth.assertThat
|
||||||
|
import gq.kirmanak.mealient.datasource.models.NetworkError
|
||||||
|
import gq.kirmanak.mealient.datasource.models.VersionResponse
|
||||||
|
import gq.kirmanak.mealient.logging.Logger
|
||||||
|
import gq.kirmanak.mealient.test.toJsonResponseBody
|
||||||
|
import io.mockk.MockKAnnotations
|
||||||
|
import io.mockk.coEvery
|
||||||
|
import io.mockk.impl.annotations.MockK
|
||||||
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
|
import kotlinx.coroutines.test.runTest
|
||||||
|
import kotlinx.serialization.SerializationException
|
||||||
|
import kotlinx.serialization.json.Json
|
||||||
|
import org.junit.Before
|
||||||
|
import org.junit.Test
|
||||||
|
import retrofit2.HttpException
|
||||||
|
import retrofit2.Response
|
||||||
|
import java.net.ConnectException
|
||||||
|
|
||||||
|
@OptIn(ExperimentalCoroutinesApi::class)
|
||||||
|
class MealieDataSourceImplTest {
|
||||||
|
|
||||||
|
@MockK
|
||||||
|
lateinit var service: MealieService
|
||||||
|
|
||||||
|
@MockK(relaxUnitFun = true)
|
||||||
|
lateinit var logger: Logger
|
||||||
|
|
||||||
|
lateinit var subject: MealieDataSourceImpl
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun setUp() {
|
||||||
|
MockKAnnotations.init(this)
|
||||||
|
subject = MealieDataSourceImpl(logger, service, Json.Default)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = NetworkError.NotMealie::class)
|
||||||
|
fun `when getVersionInfo and getVersion throws HttpException then NotMealie`() = runTest {
|
||||||
|
val error = HttpException(Response.error<VersionResponse>(404, "".toJsonResponseBody()))
|
||||||
|
coEvery { service.getVersion(any()) } throws error
|
||||||
|
subject.getVersionInfo(TEST_BASE_URL)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = NetworkError.NotMealie::class)
|
||||||
|
fun `when getVersionInfo and getVersion throws SerializationException then NotMealie`() =
|
||||||
|
runTest {
|
||||||
|
coEvery { service.getVersion(any()) } throws SerializationException()
|
||||||
|
subject.getVersionInfo(TEST_BASE_URL)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = NetworkError.NoServerConnection::class)
|
||||||
|
fun `when getVersionInfo and getVersion throws IOException then NoServerConnection`() =
|
||||||
|
runTest {
|
||||||
|
coEvery { service.getVersion(any()) } throws ConnectException()
|
||||||
|
subject.getVersionInfo(TEST_BASE_URL)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `when getVersionInfo and getVersion returns result then result`() = runTest {
|
||||||
|
val versionResponse = VersionResponse(true, "v0.5.6", true)
|
||||||
|
coEvery { service.getVersion(any()) } returns versionResponse
|
||||||
|
assertThat(subject.getVersionInfo(TEST_BASE_URL)).isSameInstanceAs(versionResponse)
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val TEST_BASE_URL = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user