Skip to content
Snippets Groups Projects
Unverified Commit 10d2e0c3 authored by Kolya Opahle's avatar Kolya Opahle Committed by GitHub
Browse files

RAT Test result outdated after ~24h (EXPOSUREAPP-6717) (#2970)

* Changed hoursToDeemOutdated in CoronaTestConfig to be mapped to a duration object so that calling plus on it and a instant in RACoronaTest will actually add 48 hours to the instant and not 48 millis

* Fixed unittests to supply Durations instead of Longs
parent 99641f2e
No related branches found
No related tags found
No related merge requests found
package de.rki.coronawarnapp.appconfig package de.rki.coronawarnapp.appconfig
import de.rki.coronawarnapp.appconfig.mapping.ConfigMapper import de.rki.coronawarnapp.appconfig.mapping.ConfigMapper
import org.joda.time.Duration
interface CoronaTestConfig { interface CoronaTestConfig {
val coronaRapidAntigenTestParameters: CoronaRapidAntigenTestParametersContainer val coronaRapidAntigenTestParameters: CoronaRapidAntigenTestParametersContainer
...@@ -9,7 +10,7 @@ interface CoronaTestConfig { ...@@ -9,7 +10,7 @@ interface CoronaTestConfig {
} }
data class CoronaRapidAntigenTestParametersContainer( data class CoronaRapidAntigenTestParametersContainer(
val hoursToDeemTestOutdated: Long = DEFAULT_HOURS val hoursToDeemTestOutdated: Duration = Duration.standardHours(DEFAULT_HOURS)
) { ) {
companion object { companion object {
const val DEFAULT_HOURS: Long = 48 const val DEFAULT_HOURS: Long = 48
......
...@@ -5,6 +5,7 @@ import de.rki.coronawarnapp.appconfig.CoronaRapidAntigenTestParametersContainer ...@@ -5,6 +5,7 @@ import de.rki.coronawarnapp.appconfig.CoronaRapidAntigenTestParametersContainer
import de.rki.coronawarnapp.appconfig.CoronaTestConfig import de.rki.coronawarnapp.appconfig.CoronaTestConfig
import de.rki.coronawarnapp.appconfig.CoronaTestConfigContainer import de.rki.coronawarnapp.appconfig.CoronaTestConfigContainer
import de.rki.coronawarnapp.server.protocols.internal.v2.AppConfigAndroid.ApplicationConfigurationAndroid import de.rki.coronawarnapp.server.protocols.internal.v2.AppConfigAndroid.ApplicationConfigurationAndroid
import org.joda.time.Duration
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
...@@ -25,7 +26,9 @@ class CoronaTestConfigMapper @Inject constructor() : CoronaTestConfig.Mapper { ...@@ -25,7 +26,9 @@ class CoronaTestConfigMapper @Inject constructor() : CoronaTestConfig.Mapper {
private fun ApplicationConfigurationAndroid.mapCoronaTestParameters(): CoronaTestConfig { private fun ApplicationConfigurationAndroid.mapCoronaTestParameters(): CoronaTestConfig {
val coronaRapidAntigenTestParameters = if (coronaTestParameters.hasCoronaRapidAntigenTestParameters()) { val coronaRapidAntigenTestParameters = if (coronaTestParameters.hasCoronaRapidAntigenTestParameters()) {
CoronaRapidAntigenTestParametersContainer( CoronaRapidAntigenTestParametersContainer(
coronaTestParameters.coronaRapidAntigenTestParameters.hoursToDeemTestOutdated.toLong() Duration.standardHours(
coronaTestParameters.coronaRapidAntigenTestParameters.hoursToDeemTestOutdated.toLong()
)
) )
} else { } else {
Timber.d("coronaRapidAntigenTestParameters is missing") Timber.d("coronaRapidAntigenTestParameters is missing")
......
...@@ -7,19 +7,22 @@ import kotlinx.coroutines.flow.drop ...@@ -7,19 +7,22 @@ import kotlinx.coroutines.flow.drop
import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.test.runBlockingTest import kotlinx.coroutines.test.runBlockingTest
import org.joda.time.Duration
import org.junit.Test import org.junit.Test
import testhelpers.BaseTest import testhelpers.BaseTest
class CoronaTestParametersDistinctTest : BaseTest() { class CoronaTestParametersDistinctTest : BaseTest() {
private val durationOf48H: Duration = Duration.standardHours(48)
private val durationOf12H: Duration = Duration.standardHours(12)
@Test @Test
fun `can we use distinctUntilChanged on CoronaTestParameters`() = runBlockingTest { fun `can we use distinctUntilChanged on CoronaTestParameters`() = runBlockingTest {
val flow = flow { val flow = flow {
emit(CoronaRapidAntigenTestParametersContainer(48)) emit(CoronaRapidAntigenTestParametersContainer(durationOf48H))
emit(CoronaRapidAntigenTestParametersContainer(48)) emit(CoronaRapidAntigenTestParametersContainer(Duration.standardHours(48)))
emit(CoronaRapidAntigenTestParametersContainer(12)) emit(CoronaRapidAntigenTestParametersContainer(durationOf12H))
} }
flow.distinctUntilChanged().drop(1).first().hoursToDeemTestOutdated shouldBe 12 flow.distinctUntilChanged().drop(1).first().hoursToDeemTestOutdated shouldBe durationOf12H
} }
} }
...@@ -8,6 +8,7 @@ import io.mockk.MockKAnnotations ...@@ -8,6 +8,7 @@ import io.mockk.MockKAnnotations
import io.mockk.every import io.mockk.every
import io.mockk.impl.annotations.MockK import io.mockk.impl.annotations.MockK
import kotlinx.coroutines.test.runBlockingTest import kotlinx.coroutines.test.runBlockingTest
import org.joda.time.Duration
import org.joda.time.Instant import org.joda.time.Instant
import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
...@@ -22,7 +23,8 @@ class RapidAntigenCoronaTestExtensionsTest : BaseTest() { ...@@ -22,7 +23,8 @@ class RapidAntigenCoronaTestExtensionsTest : BaseTest() {
MockKAnnotations.init(this) MockKAnnotations.init(this)
every { timeStamper.nowUTC } returns Instant.ofEpochMilli(1010010101) every { timeStamper.nowUTC } returns Instant.ofEpochMilli(1010010101)
every { coronaTestConfig.coronaRapidAntigenTestParameters.hoursToDeemTestOutdated } returns 48 every { coronaTestConfig.coronaRapidAntigenTestParameters.hoursToDeemTestOutdated } returns
Duration.standardHours(48)
} }
@Test @Test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment