From 10d2e0c36f75b19227231fbd7ef3bb37764663cf Mon Sep 17 00:00:00 2001 From: Kolya Opahle <k.opahle@sap.com> Date: Tue, 27 Apr 2021 18:12:10 +0200 Subject: [PATCH] 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 --- .../rki/coronawarnapp/appconfig/CoronaTestConfig.kt | 3 ++- .../appconfig/mapping/CoronaTestConfigMapper.kt | 5 ++++- .../mapping/CoronaTestParametersDistinctTest.kt | 11 +++++++---- .../RapidAntigenCoronaTestExtensionsTest.kt | 4 +++- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/CoronaTestConfig.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/CoronaTestConfig.kt index 54c0ff932..103a51ca4 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/CoronaTestConfig.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/CoronaTestConfig.kt @@ -1,6 +1,7 @@ package de.rki.coronawarnapp.appconfig import de.rki.coronawarnapp.appconfig.mapping.ConfigMapper +import org.joda.time.Duration interface CoronaTestConfig { val coronaRapidAntigenTestParameters: CoronaRapidAntigenTestParametersContainer @@ -9,7 +10,7 @@ interface CoronaTestConfig { } data class CoronaRapidAntigenTestParametersContainer( - val hoursToDeemTestOutdated: Long = DEFAULT_HOURS + val hoursToDeemTestOutdated: Duration = Duration.standardHours(DEFAULT_HOURS) ) { companion object { const val DEFAULT_HOURS: Long = 48 diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/CoronaTestConfigMapper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/CoronaTestConfigMapper.kt index d7025379b..5d07b483d 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/CoronaTestConfigMapper.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/appconfig/mapping/CoronaTestConfigMapper.kt @@ -5,6 +5,7 @@ import de.rki.coronawarnapp.appconfig.CoronaRapidAntigenTestParametersContainer import de.rki.coronawarnapp.appconfig.CoronaTestConfig import de.rki.coronawarnapp.appconfig.CoronaTestConfigContainer import de.rki.coronawarnapp.server.protocols.internal.v2.AppConfigAndroid.ApplicationConfigurationAndroid +import org.joda.time.Duration import timber.log.Timber import javax.inject.Inject @@ -25,7 +26,9 @@ class CoronaTestConfigMapper @Inject constructor() : CoronaTestConfig.Mapper { private fun ApplicationConfigurationAndroid.mapCoronaTestParameters(): CoronaTestConfig { val coronaRapidAntigenTestParameters = if (coronaTestParameters.hasCoronaRapidAntigenTestParameters()) { CoronaRapidAntigenTestParametersContainer( - coronaTestParameters.coronaRapidAntigenTestParameters.hoursToDeemTestOutdated.toLong() + Duration.standardHours( + coronaTestParameters.coronaRapidAntigenTestParameters.hoursToDeemTestOutdated.toLong() + ) ) } else { Timber.d("coronaRapidAntigenTestParameters is missing") diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/CoronaTestParametersDistinctTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/CoronaTestParametersDistinctTest.kt index 1f71e9b78..772016b4b 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/CoronaTestParametersDistinctTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/appconfig/mapping/CoronaTestParametersDistinctTest.kt @@ -7,19 +7,22 @@ import kotlinx.coroutines.flow.drop import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.flow import kotlinx.coroutines.test.runBlockingTest +import org.joda.time.Duration import org.junit.Test import testhelpers.BaseTest class CoronaTestParametersDistinctTest : BaseTest() { + private val durationOf48H: Duration = Duration.standardHours(48) + private val durationOf12H: Duration = Duration.standardHours(12) @Test fun `can we use distinctUntilChanged on CoronaTestParameters`() = runBlockingTest { val flow = flow { - emit(CoronaRapidAntigenTestParametersContainer(48)) - emit(CoronaRapidAntigenTestParametersContainer(48)) - emit(CoronaRapidAntigenTestParametersContainer(12)) + emit(CoronaRapidAntigenTestParametersContainer(durationOf48H)) + emit(CoronaRapidAntigenTestParametersContainer(Duration.standardHours(48))) + emit(CoronaRapidAntigenTestParametersContainer(durationOf12H)) } - flow.distinctUntilChanged().drop(1).first().hoursToDeemTestOutdated shouldBe 12 + flow.distinctUntilChanged().drop(1).first().hoursToDeemTestOutdated shouldBe durationOf12H } } diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/coronatest/type/rapidantigen/RapidAntigenCoronaTestExtensionsTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/coronatest/type/rapidantigen/RapidAntigenCoronaTestExtensionsTest.kt index 3998d7334..9588466ba 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/coronatest/type/rapidantigen/RapidAntigenCoronaTestExtensionsTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/coronatest/type/rapidantigen/RapidAntigenCoronaTestExtensionsTest.kt @@ -8,6 +8,7 @@ import io.mockk.MockKAnnotations import io.mockk.every import io.mockk.impl.annotations.MockK import kotlinx.coroutines.test.runBlockingTest +import org.joda.time.Duration import org.joda.time.Instant import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test @@ -22,7 +23,8 @@ class RapidAntigenCoronaTestExtensionsTest : BaseTest() { MockKAnnotations.init(this) every { timeStamper.nowUTC } returns Instant.ofEpochMilli(1010010101) - every { coronaTestConfig.coronaRapidAntigenTestParameters.hoursToDeemTestOutdated } returns 48 + every { coronaTestConfig.coronaRapidAntigenTestParameters.hoursToDeemTestOutdated } returns + Duration.standardHours(48) } @Test -- GitLab