Skip to content
Snippets Groups Projects
Unverified Commit 3f2a21a3 authored by Matthias Urhahn's avatar Matthias Urhahn Committed by GitHub
Browse files

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.
parent c7321ea7
No related branches found
No related tags found
No related merge requests found
...@@ -165,7 +165,8 @@ object HomeData { ...@@ -165,7 +165,8 @@ object HomeData {
val TEST_SUBMISSION_DONE_ITEM = PcrTestSubmissionDoneCard.Item( val TEST_SUBMISSION_DONE_ITEM = PcrTestSubmissionDoneCard.Item(
state = SubmissionDone( state = SubmissionDone(
testRegisteredAt = Instant.now() testRegisteredAt = Instant.now()
) ),
onClickAction = {}
) )
} }
} }
...@@ -46,7 +46,7 @@ class HomeTestCardsFragmentViewModel @AssistedInject constructor( ...@@ -46,7 +46,7 @@ class HomeTestCardsFragmentViewModel @AssistedInject constructor(
PcrTestErrorCard.Item(SubmissionStatePCR.TestError) {}, PcrTestErrorCard.Item(SubmissionStatePCR.TestError) {},
PcrTestNegativeCard.Item(SubmissionStatePCR.TestNegative(Instant.now())) {}, PcrTestNegativeCard.Item(SubmissionStatePCR.TestNegative(Instant.now())) {},
PcrTestPositiveCard.Item(SubmissionStatePCR.TestPositive(Instant.now())) {}, PcrTestPositiveCard.Item(SubmissionStatePCR.TestPositive(Instant.now())) {},
PcrTestSubmissionDoneCard.Item(SubmissionStatePCR.SubmissionDone(Instant.now())), PcrTestSubmissionDoneCard.Item(SubmissionStatePCR.SubmissionDone(Instant.now())) {},
RapidTestPendingCard.Item(SubmissionStateRAT.TestPending) {}, RapidTestPendingCard.Item(SubmissionStateRAT.TestPending) {},
RapidTestReadyCard.Item(SubmissionStateRAT.TestResultReady) {}, RapidTestReadyCard.Item(SubmissionStateRAT.TestResultReady) {},
RapidTestInvalidCard.Item(SubmissionStateRAT.TestInvalid) {}, RapidTestInvalidCard.Item(SubmissionStateRAT.TestInvalid) {},
...@@ -54,7 +54,7 @@ class HomeTestCardsFragmentViewModel @AssistedInject constructor( ...@@ -54,7 +54,7 @@ class HomeTestCardsFragmentViewModel @AssistedInject constructor(
RapidTestErrorCard.Item(SubmissionStateRAT.TestError) {}, RapidTestErrorCard.Item(SubmissionStateRAT.TestError) {},
RapidTestNegativeCard.Item(SubmissionStateRAT.TestNegative(Instant.now())) {}, RapidTestNegativeCard.Item(SubmissionStateRAT.TestNegative(Instant.now())) {},
RapidTestPositiveCard.Item(SubmissionStateRAT.TestPositive(Instant.now())) {}, RapidTestPositiveCard.Item(SubmissionStateRAT.TestPositive(Instant.now())) {},
RapidTestSubmissionDoneCard.Item(SubmissionStateRAT.SubmissionDone(Instant.now())) RapidTestSubmissionDoneCard.Item(SubmissionStateRAT.SubmissionDone(Instant.now())) {}
) )
) )
......
...@@ -9,6 +9,7 @@ import de.rki.coronawarnapp.coronatest.type.rapidantigen.RACoronaTest.State.POSI ...@@ -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.RACoronaTest.State.REDEEMED
import de.rki.coronawarnapp.coronatest.type.rapidantigen.SubmissionStateRAT.FetchingResult 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.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.TestError
import de.rki.coronawarnapp.coronatest.type.rapidantigen.SubmissionStateRAT.TestInvalid import de.rki.coronawarnapp.coronatest.type.rapidantigen.SubmissionStateRAT.TestInvalid
import de.rki.coronawarnapp.coronatest.type.rapidantigen.SubmissionStateRAT.TestNegative import de.rki.coronawarnapp.coronatest.type.rapidantigen.SubmissionStateRAT.TestNegative
...@@ -21,6 +22,7 @@ import org.joda.time.Instant ...@@ -21,6 +22,7 @@ import org.joda.time.Instant
fun RACoronaTest?.toSubmissionState(nowUTC: Instant = Instant.now(), coronaTestConfig: CoronaTestConfig) = when { fun RACoronaTest?.toSubmissionState(nowUTC: Instant = Instant.now(), coronaTestConfig: CoronaTestConfig) = when {
this == null -> NoTest this == null -> NoTest
isSubmitted -> SubmissionDone(testRegisteredAt = registeredAt)
isProcessing -> FetchingResult isProcessing -> FetchingResult
lastError != null -> if (lastError is CwaServerError) TestPending else TestInvalid lastError != null -> if (lastError is CwaServerError) TestPending else TestInvalid
else -> when (getState(nowUTC, coronaTestConfig)) { else -> when (getState(nowUTC, coronaTestConfig)) {
......
...@@ -30,6 +30,7 @@ class PcrTestSubmissionDoneCard( ...@@ -30,6 +30,7 @@ class PcrTestSubmissionDoneCard(
} }
data class Item( data class Item(
val state: SubmissionStatePCR.SubmissionDone val state: SubmissionStatePCR.SubmissionDone,
val onClickAction: (Item) -> Unit,
) : TestResultItem.PCR ) : TestResultItem.PCR
} }
...@@ -30,6 +30,7 @@ class RapidTestSubmissionDoneCard( ...@@ -30,6 +30,7 @@ class RapidTestSubmissionDoneCard(
} }
data class Item( data class Item(
val state: SubmissionStateRAT.SubmissionDone val state: SubmissionStateRAT.SubmissionDone,
val onClickAction: (Item) -> Unit,
) : TestResultItem.RA ) : TestResultItem.RA
} }
...@@ -207,7 +207,9 @@ class HomeFragmentViewModel @AssistedInject constructor( ...@@ -207,7 +207,9 @@ class HomeFragmentViewModel @AssistedInject constructor(
.actionMainFragmentToSubmissionTestResultPendingFragment(testType = CoronaTest.Type.PCR) .actionMainFragmentToSubmissionTestResultPendingFragment(testType = CoronaTest.Type.PCR)
) )
} }
is SubmissionStatePCR.SubmissionDone -> PcrTestSubmissionDoneCard.Item(state) is SubmissionStatePCR.SubmissionDone -> PcrTestSubmissionDoneCard.Item(state) {
// TODO
}
} }
private fun RACoronaTest?.toTestCardItem(coronaTestConfig: CoronaTestConfig) = private fun RACoronaTest?.toTestCardItem(coronaTestConfig: CoronaTestConfig) =
...@@ -258,7 +260,9 @@ class HomeFragmentViewModel @AssistedInject constructor( ...@@ -258,7 +260,9 @@ class HomeFragmentViewModel @AssistedInject constructor(
is SubmissionStateRAT.TestOutdated -> RapidTestOutdatedCard.Item(state) { is SubmissionStateRAT.TestOutdated -> RapidTestOutdatedCard.Item(state) {
submissionRepository.removeTestFromDevice(type = CoronaTest.Type.RAPID_ANTIGEN) 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( val homeItems: LiveData<List<HomeItem>> = combine(
......
package de.rki.coronawarnapp.coronatest.type.rapidantigen package de.rki.coronawarnapp.coronatest.type.rapidantigen
import de.rki.coronawarnapp.appconfig.CoronaTestConfig import de.rki.coronawarnapp.appconfig.CoronaTestConfig
import de.rki.coronawarnapp.coronatest.server.CoronaTestResult
import de.rki.coronawarnapp.util.TimeStamper import de.rki.coronawarnapp.util.TimeStamper
import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldBe
import io.mockk.MockKAnnotations import io.mockk.MockKAnnotations
...@@ -29,4 +30,23 @@ class RapidAntigenCoronaTestExtensionsTest : BaseTest() { ...@@ -29,4 +30,23 @@ class RapidAntigenCoronaTestExtensionsTest : BaseTest() {
val test: RACoronaTest? = null val test: RACoronaTest? = null
test.toSubmissionState(timeStamper.nowUTC, coronaTestConfig) shouldBe SubmissionStateRAT.NoTest 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)
)
}
} }
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