From 3f2a21a3c6b8dc9375dc2fc0424e599efca0f5fc Mon Sep 17 00:00:00 2001 From: Matthias Urhahn <matthias.urhahn@sap.com> Date: Mon, 26 Apr 2021 19:00:01 +0200 Subject: [PATCH] Fix RA test state mapping when submission is done (EXPOSUREAPP-6004) (#2965) * Fix RA test state mapping when submission is done. * Add placeholder callbacks to navigate by clicking submission done cards. * Fix failing instrumentation test. * Fix merge regression. --- .../coronawarnapp/ui/main/home/HomeData.kt | 3 ++- .../ui/HomeTestCardsFragmentViewModel.kt | 4 ++-- .../RapidAntigenCoronaTestExtensions.kt | 2 ++ .../ui/homecards/PcrTestSubmissionDoneCard.kt | 3 ++- .../homecards/RapidTestSubmissionDoneCard.kt | 3 ++- .../ui/main/home/HomeFragmentViewModel.kt | 8 ++++++-- .../RapidAntigenCoronaTestExtensionsTest.kt | 20 +++++++++++++++++++ 7 files changed, 36 insertions(+), 7 deletions(-) diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeData.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeData.kt index 6a90f9e21..8966f716c 100644 --- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeData.kt +++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeData.kt @@ -165,7 +165,8 @@ object HomeData { val TEST_SUBMISSION_DONE_ITEM = PcrTestSubmissionDoneCard.Item( state = SubmissionDone( testRegisteredAt = Instant.now() - ) + ), + onClickAction = {} ) } } diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/hometestcards/ui/HomeTestCardsFragmentViewModel.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/hometestcards/ui/HomeTestCardsFragmentViewModel.kt index d4676cb5a..a91ab2477 100644 --- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/hometestcards/ui/HomeTestCardsFragmentViewModel.kt +++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/hometestcards/ui/HomeTestCardsFragmentViewModel.kt @@ -46,7 +46,7 @@ class HomeTestCardsFragmentViewModel @AssistedInject constructor( PcrTestErrorCard.Item(SubmissionStatePCR.TestError) {}, PcrTestNegativeCard.Item(SubmissionStatePCR.TestNegative(Instant.now())) {}, PcrTestPositiveCard.Item(SubmissionStatePCR.TestPositive(Instant.now())) {}, - PcrTestSubmissionDoneCard.Item(SubmissionStatePCR.SubmissionDone(Instant.now())), + PcrTestSubmissionDoneCard.Item(SubmissionStatePCR.SubmissionDone(Instant.now())) {}, RapidTestPendingCard.Item(SubmissionStateRAT.TestPending) {}, RapidTestReadyCard.Item(SubmissionStateRAT.TestResultReady) {}, RapidTestInvalidCard.Item(SubmissionStateRAT.TestInvalid) {}, @@ -54,7 +54,7 @@ class HomeTestCardsFragmentViewModel @AssistedInject constructor( RapidTestErrorCard.Item(SubmissionStateRAT.TestError) {}, RapidTestNegativeCard.Item(SubmissionStateRAT.TestNegative(Instant.now())) {}, RapidTestPositiveCard.Item(SubmissionStateRAT.TestPositive(Instant.now())) {}, - RapidTestSubmissionDoneCard.Item(SubmissionStateRAT.SubmissionDone(Instant.now())) + RapidTestSubmissionDoneCard.Item(SubmissionStateRAT.SubmissionDone(Instant.now())) {} ) ) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/coronatest/type/rapidantigen/RapidAntigenCoronaTestExtensions.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/coronatest/type/rapidantigen/RapidAntigenCoronaTestExtensions.kt index 598d43459..523b6f2a0 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/coronatest/type/rapidantigen/RapidAntigenCoronaTestExtensions.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/coronatest/type/rapidantigen/RapidAntigenCoronaTestExtensions.kt @@ -9,6 +9,7 @@ import de.rki.coronawarnapp.coronatest.type.rapidantigen.RACoronaTest.State.POSI import de.rki.coronawarnapp.coronatest.type.rapidantigen.RACoronaTest.State.REDEEMED import de.rki.coronawarnapp.coronatest.type.rapidantigen.SubmissionStateRAT.FetchingResult import de.rki.coronawarnapp.coronatest.type.rapidantigen.SubmissionStateRAT.NoTest +import de.rki.coronawarnapp.coronatest.type.rapidantigen.SubmissionStateRAT.SubmissionDone import de.rki.coronawarnapp.coronatest.type.rapidantigen.SubmissionStateRAT.TestError import de.rki.coronawarnapp.coronatest.type.rapidantigen.SubmissionStateRAT.TestInvalid import de.rki.coronawarnapp.coronatest.type.rapidantigen.SubmissionStateRAT.TestNegative @@ -21,6 +22,7 @@ import org.joda.time.Instant fun RACoronaTest?.toSubmissionState(nowUTC: Instant = Instant.now(), coronaTestConfig: CoronaTestConfig) = when { this == null -> NoTest + isSubmitted -> SubmissionDone(testRegisteredAt = registeredAt) isProcessing -> FetchingResult lastError != null -> if (lastError is CwaServerError) TestPending else TestInvalid else -> when (getState(nowUTC, coronaTestConfig)) { diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/homecards/PcrTestSubmissionDoneCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/homecards/PcrTestSubmissionDoneCard.kt index 9cb260b99..d4ed6af6b 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/homecards/PcrTestSubmissionDoneCard.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/homecards/PcrTestSubmissionDoneCard.kt @@ -30,6 +30,7 @@ class PcrTestSubmissionDoneCard( } data class Item( - val state: SubmissionStatePCR.SubmissionDone + val state: SubmissionStatePCR.SubmissionDone, + val onClickAction: (Item) -> Unit, ) : TestResultItem.PCR } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/homecards/RapidTestSubmissionDoneCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/homecards/RapidTestSubmissionDoneCard.kt index c6e3866a0..c41df3147 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/homecards/RapidTestSubmissionDoneCard.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/homecards/RapidTestSubmissionDoneCard.kt @@ -30,6 +30,7 @@ class RapidTestSubmissionDoneCard( } data class Item( - val state: SubmissionStateRAT.SubmissionDone + val state: SubmissionStateRAT.SubmissionDone, + val onClickAction: (Item) -> Unit, ) : TestResultItem.RA } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt index 924c15e01..73fc1c4d4 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt @@ -207,7 +207,9 @@ class HomeFragmentViewModel @AssistedInject constructor( .actionMainFragmentToSubmissionTestResultPendingFragment(testType = CoronaTest.Type.PCR) ) } - is SubmissionStatePCR.SubmissionDone -> PcrTestSubmissionDoneCard.Item(state) + is SubmissionStatePCR.SubmissionDone -> PcrTestSubmissionDoneCard.Item(state) { + // TODO + } } private fun RACoronaTest?.toTestCardItem(coronaTestConfig: CoronaTestConfig) = @@ -258,7 +260,9 @@ class HomeFragmentViewModel @AssistedInject constructor( is SubmissionStateRAT.TestOutdated -> RapidTestOutdatedCard.Item(state) { submissionRepository.removeTestFromDevice(type = CoronaTest.Type.RAPID_ANTIGEN) } - is SubmissionStateRAT.SubmissionDone -> RapidTestSubmissionDoneCard.Item(state) + is SubmissionStateRAT.SubmissionDone -> RapidTestSubmissionDoneCard.Item(state) { + // TODO + } } val homeItems: LiveData<List<HomeItem>> = combine( 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 ed1be6eb1..3998d7334 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 @@ -1,6 +1,7 @@ package de.rki.coronawarnapp.coronatest.type.rapidantigen import de.rki.coronawarnapp.appconfig.CoronaTestConfig +import de.rki.coronawarnapp.coronatest.server.CoronaTestResult import de.rki.coronawarnapp.util.TimeStamper import io.kotest.matchers.shouldBe import io.mockk.MockKAnnotations @@ -29,4 +30,23 @@ class RapidAntigenCoronaTestExtensionsTest : BaseTest() { val test: RACoronaTest? = null test.toSubmissionState(timeStamper.nowUTC, coronaTestConfig) shouldBe SubmissionStateRAT.NoTest } + + @Test + fun `submission done mapping`() = runBlockingTest { + val test = RACoronaTest( + identifier = "identifier", + registeredAt = Instant.ofEpochMilli(123), + registrationToken = "regtoken", + testResult = CoronaTestResult.RAT_POSITIVE, + testedAt = Instant.EPOCH, + isSubmitted = true, // <--- + dateOfBirth = null, + firstName = null, + lastName = null, + lastUpdatedAt = Instant.EPOCH, + ) + test.toSubmissionState(timeStamper.nowUTC, coronaTestConfig) shouldBe SubmissionStateRAT.SubmissionDone( + testRegisteredAt = Instant.ofEpochMilli(123) + ) + } } -- GitLab