diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/coronatest/type/pcr/PCRProcessor.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/coronatest/type/pcr/PCRProcessor.kt index 88cd240a69b8b3b32f85299bd645dc620953c6b6..815401d6e2b1202aa515de4e046d378e0bfb3d0c 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/coronatest/type/pcr/PCRProcessor.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/coronatest/type/pcr/PCRProcessor.kt @@ -61,7 +61,9 @@ class PCRProcessor @Inject constructor( analyticsKeySubmissionCollector.reportRegisteredWithTeleTAN() - return createCoronaTest(request, registrationData) + return createCoronaTest(request, registrationData).copy( + isResultAvailableNotificationSent = true + ) } private suspend fun createCoronaTest( diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/coronatest/type/pcr/PCRProcessorTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/coronatest/type/pcr/PCRProcessorTest.kt index 4692cc48ae93f8f0c5ee647c20eb905ded541760..2028ef505b309a63ec1c202f7f045812203b970e 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/coronatest/type/pcr/PCRProcessorTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/coronatest/type/pcr/PCRProcessorTest.kt @@ -1,6 +1,8 @@ package de.rki.coronawarnapp.coronatest.type.pcr +import de.rki.coronawarnapp.coronatest.qrcode.CoronaTestQRCode import de.rki.coronawarnapp.coronatest.server.CoronaTestResult +import de.rki.coronawarnapp.coronatest.tan.CoronaTestTAN import de.rki.coronawarnapp.coronatest.type.CoronaTestService import de.rki.coronawarnapp.datadonation.analytics.modules.keysubmission.AnalyticsKeySubmissionCollector import de.rki.coronawarnapp.datadonation.analytics.modules.registeredtest.TestResultDataCollector @@ -29,6 +31,15 @@ class PCRProcessorTest : BaseTest() { private val nowUTC = Instant.parse("2021-03-15T05:45:00.000Z") + private var testQRRegistrationData = CoronaTestService.RegistrationData( + registrationToken = "qr-regtoken", + testResult = CoronaTestResult.PCR_POSITIVE, + ) + private var testTANRegistrationData = CoronaTestService.RegistrationData( + registrationToken = "tan-regtoken", + testResult = CoronaTestResult.PCR_POSITIVE, + ) + @BeforeEach fun setup() { MockKAnnotations.init(this) @@ -37,10 +48,22 @@ class PCRProcessorTest : BaseTest() { submissionService.apply { coEvery { asyncRequestTestResult(any()) } answers { CoronaTestResult.PCR_OR_RAT_PENDING } + coEvery { asyncRegisterDeviceViaTAN(any()) } answers { testTANRegistrationData } + coEvery { asyncRegisterDeviceViaGUID(any()) } answers { testQRRegistrationData } } + analyticsKeySubmissionCollector.apply { + coEvery { reportRegisteredWithTeleTAN() } just Runs + coEvery { reset() } just Runs + coEvery { reportPositiveTestResultReceived() } just Runs + coEvery { reportTestRegistered() } just Runs + } testResultDataCollector.apply { coEvery { updatePendingTestResultReceivedTime(any()) } just Runs + coEvery { saveTestResultAnalyticsSettings(any()) } just Runs + } + deadmanNotificationScheduler.apply { + every { cancelScheduledWork() } just Runs } } @@ -72,4 +95,18 @@ class PCRProcessorTest : BaseTest() { instance.pollServer(past60DaysTest).testResult shouldBe CoronaTestResult.PCR_REDEEMED } + + // TANs are automatically positive, there is no test result available screen that should be reached + @Test + fun `registering a TAN test automatically consumes the notification flag`() = runBlockingTest { + val instance = createInstance() + + instance.create(CoronaTestTAN.PCR(tan = "thisIsATan")).apply { + isResultAvailableNotificationSent shouldBe true + } + + instance.create(CoronaTestQRCode.PCR(qrCodeGUID = "thisIsAQRCodeGUID")).apply { + isResultAvailableNotificationSent shouldBe false + } + } }