Merge pull request #136 from kirmanak/server-version

Fallback to V1 if server version is unknown
This commit is contained in:
Kirill Kamakin
2023-04-07 14:06:29 +02:00
committed by GitHub
3 changed files with 17 additions and 16 deletions

View File

@@ -16,8 +16,8 @@ plugins {
android { android {
defaultConfig { defaultConfig {
applicationId = "gq.kirmanak.mealient" applicationId = "gq.kirmanak.mealient"
versionCode = 26 versionCode = 27
versionName = "0.3.11" versionName = "0.3.12"
testInstrumentationRunner = "gq.kirmanak.mealient.MealientTestRunner" testInstrumentationRunner = "gq.kirmanak.mealient.MealientTestRunner"
testInstrumentationRunnerArguments += mapOf("clearPackageData" to "true") testInstrumentationRunnerArguments += mapOf("clearPackageData" to "true")
} }

View File

@@ -1,6 +1,5 @@
package gq.kirmanak.mealient.data.baseurl package gq.kirmanak.mealient.data.baseurl
import gq.kirmanak.mealient.datasource.NetworkError
import gq.kirmanak.mealient.datasource.ServerUrlProvider import gq.kirmanak.mealient.datasource.ServerUrlProvider
import gq.kirmanak.mealient.datasource.runCatchingExceptCancel import gq.kirmanak.mealient.datasource.runCatchingExceptCancel
import gq.kirmanak.mealient.logging.Logger import gq.kirmanak.mealient.logging.Logger
@@ -38,7 +37,10 @@ class ServerInfoRepoImpl @Inject constructor(
private fun determineServerVersion(version: String): ServerVersion = when { private fun determineServerVersion(version: String): ServerVersion = when {
version.startsWith("v0") -> ServerVersion.V0 version.startsWith("v0") -> ServerVersion.V0
version.startsWith("v1") -> ServerVersion.V1 version.startsWith("v1") -> ServerVersion.V1
else -> throw NetworkError.NotMealie(IllegalStateException("Server version is unknown: $version")) else -> {
logger.w { "Unknown server version: $version" }
ServerVersion.V1
}
} }
override suspend fun tryBaseURL(baseURL: String): Result<Unit> { override suspend fun tryBaseURL(baseURL: String): Result<Unit> {

View File

@@ -1,7 +1,6 @@
package gq.kirmanak.mealient.data.baseurl package gq.kirmanak.mealient.data.baseurl
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import gq.kirmanak.mealient.datasource.NetworkError
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.BaseUnitTest import gq.kirmanak.mealient.test.BaseUnitTest
@@ -96,21 +95,21 @@ class ServerInfoRepoTest : BaseUnitTest() {
coVerify { storage.storeServerVersion(TEST_VERSION) } coVerify { storage.storeServerVersion(TEST_VERSION) }
} }
@Test(expected = NetworkError.NotMealie::class) @Test
fun `when data source has invalid value expect getVersion to throw`() = runTest { fun `when data source has invalid value expect getVersion to return v1`() = runTest {
coEvery { storage.getServerVersion() } returns null
coEvery { storage.getBaseURL() } returns TEST_BASE_URL
coEvery { dataSource.getVersionInfo() } returns VersionInfo("v2.0.0")
assertThat(subject.getVersion()).isEqualTo(ServerVersion.V1)
}
@Test
fun `when data source has invalid value expect getVersion to save value`() = runTest {
coEvery { storage.getServerVersion() } returns null coEvery { storage.getServerVersion() } returns null
coEvery { storage.getBaseURL() } returns TEST_BASE_URL coEvery { storage.getBaseURL() } returns TEST_BASE_URL
coEvery { dataSource.getVersionInfo() } returns VersionInfo("v2.0.0") coEvery { dataSource.getVersionInfo() } returns VersionInfo("v2.0.0")
subject.getVersion() subject.getVersion()
} coVerify { storage.storeServerVersion("v2.0.0") }
@Test
fun `when data source has invalid value expect getVersion not to save`() = runTest {
coEvery { storage.getServerVersion() } returns null
coEvery { storage.getBaseURL() } returns TEST_BASE_URL
coEvery { dataSource.getVersionInfo() } returns VersionInfo("v2.0.0")
subject.runCatching { getVersion() }
coVerify(inverse = true) { storage.storeServerVersion(any()) }
} }
@Test @Test