From 0600e22fb4e4cb33d8f5c61868d7700eaebc97e7 Mon Sep 17 00:00:00 2001
From: Juraj Kusnier <jurajkusnier@users.noreply.github.com>
Date: Fri, 8 Jan 2021 14:34:23 +0100
Subject: [PATCH] Fix Pending result when positive test result has been
 registered (EXPOSUREAPP-4309) #2044

* Cancel test result notification after submission finish (EXPOSUREAPP-4309)

* remove trailing comma to fix circleci check

* update tests

Co-authored-by: Ralf Gehrer <ralfgehrer@users.noreply.github.com>
---
 .../notification/TestResultAvailableNotification.kt        | 4 ++++
 .../de/rki/coronawarnapp/submission/task/SubmissionTask.kt | 5 ++++-
 .../coronawarnapp/submission/task/SubmissionTaskTest.kt    | 7 ++++++-
 3 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/notification/TestResultAvailableNotification.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/notification/TestResultAvailableNotification.kt
index 07214c4d7..80cdfa756 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/notification/TestResultAvailableNotification.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/notification/TestResultAvailableNotification.kt
@@ -35,6 +35,10 @@ class TestResultAvailableNotification @Inject constructor(
         )
     }
 
+    fun cancelTestResultNotification() {
+        notificationHelper.cancelCurrentNotification(NotificationConstants.TEST_RESULT_AVAILABLE_NOTIFICATION_ID)
+    }
+
     /**
      * The pending result fragment will forward to the correct screen
      * Because we can't save the test result at the moment (legal),
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/task/SubmissionTask.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/task/SubmissionTask.kt
index 7b0deee24..645d93170 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/task/SubmissionTask.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/task/SubmissionTask.kt
@@ -3,6 +3,7 @@ package de.rki.coronawarnapp.submission.task
 import com.google.android.gms.nearby.exposurenotification.TemporaryExposureKey
 import de.rki.coronawarnapp.appconfig.AppConfigProvider
 import de.rki.coronawarnapp.exception.NoRegistrationTokenSetException
+import de.rki.coronawarnapp.notification.TestResultAvailableNotification
 import de.rki.coronawarnapp.notification.TestResultNotificationService
 import de.rki.coronawarnapp.playbook.Playbook
 import de.rki.coronawarnapp.storage.LocalData
@@ -33,7 +34,8 @@ class SubmissionTask @Inject constructor(
     private val submissionSettings: SubmissionSettings,
     private val autoSubmission: AutoSubmission,
     private val timeStamper: TimeStamper,
-    private val testResultNotificationService: TestResultNotificationService
+    private val testResultNotificationService: TestResultNotificationService,
+    private val testResultAvailableNotification: TestResultAvailableNotification
 ) : Task<DefaultProgress, SubmissionTask.Result> {
 
     private val internalProgress = ConflatedBroadcastChannel<DefaultProgress>()
@@ -154,6 +156,7 @@ class SubmissionTask @Inject constructor(
         LocalData.numberOfSuccessfulSubmissions(1)
 
         testResultNotificationService.cancelPositiveTestResultNotification()
+        testResultAvailableNotification.cancelTestResultNotification()
     }
 
     data class Arguments(
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/task/SubmissionTaskTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/task/SubmissionTaskTest.kt
index 4e9905c86..596fb9a24 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/task/SubmissionTaskTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/submission/task/SubmissionTaskTest.kt
@@ -4,6 +4,7 @@ import com.google.android.gms.nearby.exposurenotification.TemporaryExposureKey
 import de.rki.coronawarnapp.appconfig.AppConfigProvider
 import de.rki.coronawarnapp.appconfig.ConfigData
 import de.rki.coronawarnapp.exception.NoRegistrationTokenSetException
+import de.rki.coronawarnapp.notification.TestResultAvailableNotification
 import de.rki.coronawarnapp.notification.TestResultNotificationService
 import de.rki.coronawarnapp.playbook.Playbook
 import de.rki.coronawarnapp.server.protocols.external.exposurenotification.TemporaryExposureKeyExportOuterClass
@@ -48,6 +49,7 @@ class SubmissionTaskTest : BaseTest() {
     @MockK lateinit var tekHistoryStorage: TEKHistoryStorage
     @MockK lateinit var submissionSettings: SubmissionSettings
     @MockK lateinit var testResultNotificationService: TestResultNotificationService
+    @MockK lateinit var testResultAvailableNotification: TestResultAvailableNotification
     @MockK lateinit var autoSubmission: AutoSubmission
 
     @MockK lateinit var tekBatch: TEKHistoryStorage.TEKBatch
@@ -99,6 +101,7 @@ class SubmissionTaskTest : BaseTest() {
         coEvery { playbook.submit(any()) } just Runs
 
         every { testResultNotificationService.cancelPositiveTestResultNotification() } just Runs
+        every { testResultAvailableNotification.cancelTestResultNotification() } just Runs
 
         every { autoSubmission.updateMode(any()) } just Runs
 
@@ -113,7 +116,8 @@ class SubmissionTaskTest : BaseTest() {
         submissionSettings = submissionSettings,
         testResultNotificationService = testResultNotificationService,
         timeStamper = timeStamper,
-        autoSubmission = autoSubmission
+        autoSubmission = autoSubmission,
+        testResultAvailableNotification = testResultAvailableNotification
     )
 
     @Test
@@ -152,6 +156,7 @@ class SubmissionTaskTest : BaseTest() {
             LocalData.numberOfSuccessfulSubmissions(1)
 
             testResultNotificationService.cancelPositiveTestResultNotification()
+            testResultAvailableNotification.cancelTestResultNotification()
         }
     }
 
-- 
GitLab