From b83b9a533b1610068a88c3267478b8db6f6cf39d Mon Sep 17 00:00:00 2001
From: Mohamed <mohamed.metwalli@sap.com>
Date: Wed, 5 May 2021 08:36:26 +0200
Subject: [PATCH] Set auto submission in onStop to cover all cases (#3050)

---
 .../checkins/consent/CheckInsConsentFragment.kt       |  5 +++++
 .../checkins/consent/CheckInsConsentViewModel.kt      |  8 +++++---
 .../checkins/consent/CheckInsConsentViewModelTest.kt  | 11 +++++++----
 3 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentFragment.kt
index 8b014f565..509c63832 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentFragment.kt
@@ -81,6 +81,11 @@ class CheckInsConsentFragment : Fragment(R.layout.check_ins_consent_fragment), A
         }
     }
 
+    override fun onStop() {
+        super.onStop()
+        viewModel.setAutoSubmission()
+    }
+
     private fun showSkipDialog() {
         MaterialAlertDialogBuilder(requireContext())
             .setTitle(R.string.trace_location_attendee_consent_dialog_title)
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentViewModel.kt
index ee398a815..6d1311770 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentViewModel.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentViewModel.kt
@@ -51,8 +51,6 @@ class CheckInsConsentViewModel @AssistedInject constructor(
         resetPreviousSubmissionConsents()
 
         Timber.d("Navigate to shareSelectedCheckIns")
-        autoSubmission.updateMode(AutoSubmission.Mode.MONITOR)
-
         // Update CheckIns for new submission
         val idsWithConsent = selectedSetFlow.value
         checkInRepository.updateSubmissionConsents(
@@ -75,7 +73,6 @@ class CheckInsConsentViewModel @AssistedInject constructor(
         resetPreviousSubmissionConsents()
 
         Timber.d("Navigate to doNotShareCheckIns")
-        autoSubmission.updateMode(AutoSubmission.Mode.MONITOR)
         val event = if (coronaTest.first().isViewed) {
             Timber.d("Navigate to SubmissionResultReadyFragment")
             CheckInsConsentNavigation.ToSubmissionResultReadyFragment
@@ -86,6 +83,11 @@ class CheckInsConsentViewModel @AssistedInject constructor(
         events.postValue(event)
     }
 
+    fun setAutoSubmission() {
+        Timber.d("setAutoSubmission")
+        autoSubmission.updateMode(AutoSubmission.Mode.MONITOR)
+    }
+
     fun onCloseClick() = launch {
         val event = if (coronaTest.first().isViewed) {
             Timber.d("openSkipDialog")
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentViewModelTest.kt
index bf5f2ee7a..d2e41bd45 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentViewModelTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/presencetracing/attendee/checkins/consent/CheckInsConsentViewModelTest.kt
@@ -15,6 +15,7 @@ import io.mockk.every
 import io.mockk.impl.annotations.MockK
 import io.mockk.just
 import io.mockk.mockk
+import io.mockk.verify
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.flowOf
 import okio.ByteString.Companion.decodeBase64
@@ -288,7 +289,6 @@ class CheckInsConsentViewModelTest : BaseTest() {
 
         coVerify {
             checkInRepository.updateSubmissionConsents(any(), false)
-            autoSubmission.updateMode(AutoSubmission.Mode.MONITOR)
             checkInRepository.updateSubmissionConsents(any(), true)
         }
     }
@@ -303,7 +303,6 @@ class CheckInsConsentViewModelTest : BaseTest() {
 
         coVerify {
             checkInRepository.updateSubmissionConsents(any(), false)
-            autoSubmission.updateMode(AutoSubmission.Mode.MONITOR)
             checkInRepository.updateSubmissionConsents(any(), true)
         }
     }
@@ -318,7 +317,6 @@ class CheckInsConsentViewModelTest : BaseTest() {
 
         coVerify {
             checkInRepository.updateSubmissionConsents(any(), false)
-            autoSubmission.updateMode(AutoSubmission.Mode.MONITOR)
         }
     }
 
@@ -332,10 +330,15 @@ class CheckInsConsentViewModelTest : BaseTest() {
 
         coVerify {
             checkInRepository.updateSubmissionConsents(any(), false)
-            autoSubmission.updateMode(AutoSubmission.Mode.MONITOR)
         }
     }
 
+    @Test
+    fun setAutoSubmission() {
+        createViewModel().setAutoSubmission()
+        verify { autoSubmission.updateMode(AutoSubmission.Mode.MONITOR) }
+    }
+
     private fun createViewModel() = CheckInsConsentViewModel(
         savedState = savedState,
         dispatcherProvider = TestDispatcherProvider(),
-- 
GitLab