From 68946ced66cd6c39280bbc2f85b9caef53491102 Mon Sep 17 00:00:00 2001
From: Kolya Opahle <k.opahle@sap.com>
Date: Wed, 17 Mar 2021 16:04:08 +0100
Subject: [PATCH] =?UTF-8?q?1.14=20"Ihr=20Testergebnis=20liegt=20vor"=20->?=
 =?UTF-8?q?=201.15=20"Risiko-=C3=9Cberpr=C3=BCfung=20fehlgeschlagen"=20(EX?=
 =?UTF-8?q?POSUREAPP-5843)=20(#2632)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Risk Level calculation is now only aborted when the user has seen the positive test result

* Fixed tests for Risk Level calc changes

Co-authored-by: harambasicluka <64483219+harambasicluka@users.noreply.github.com>
Co-authored-by: Ralf Gehrer <ralfgehrer@users.noreply.github.com>
---
 .../rki/coronawarnapp/risk/RiskLevelTask.kt   |  4 +--
 .../coronawarnapp/risk/RiskLevelTaskTest.kt   | 32 ++++++++++++++++++-
 2 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelTask.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelTask.kt
index 0bdfeb13e..e9ab8acd4 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelTask.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/RiskLevelTask.kt
@@ -83,8 +83,8 @@ class RiskLevelTask @Inject constructor(
             Timber.d("The current time is %s", it)
         }
 
-        if (submissionSettings.isAllowedToSubmitKeys) {
-            Timber.i("Positive test result, skip risk calculation")
+        if (submissionSettings.isAllowedToSubmitKeys && submissionSettings.hasViewedTestResult.value) {
+            Timber.i("Positive test result and user has seen it, skip risk calculation")
             return RiskLevelTaskResult(
                 calculatedAt = nowUTC,
                 failureReason = FailureReason.POSITIVE_TEST_RESULT
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelTaskTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelTaskTest.kt
index 28cf7f0f7..aa31b2ba8 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelTaskTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/risk/RiskLevelTaskTest.kt
@@ -204,7 +204,7 @@ class RiskLevelTaskTest : BaseTest() {
     }
 
     @Test
-    fun `risk calculation is skipped if positive test is registered`() = runBlockingTest {
+    fun `risk calculation is skipped if positive test is registered and viewed`() = runBlockingTest {
         val cachedKey = mockk<CachedKey>().apply {
             every { info } returns mockk<CachedKeyInfo>().apply {
                 every { toDateTime() } returns DateTime.parse("2020-12-28").minusDays(1)
@@ -216,6 +216,7 @@ class RiskLevelTaskTest : BaseTest() {
         every { backgroundModeStatus.isAutoModeEnabled } returns flowOf(false)
         every { timeStamper.nowUTC } returns now
         every { submissionSettings.isAllowedToSubmitKeys } returns true
+        every { submissionSettings.hasViewedTestResult.value } returns true
 
         createTask().run(arguments) shouldBe RiskLevelTaskResult(
             calculatedAt = now,
@@ -223,6 +224,35 @@ class RiskLevelTaskTest : BaseTest() {
         )
     }
 
+    @Test
+    fun `risk calculation is not skipped if positive test is registered and not viewed`() = runBlockingTest {
+        val cachedKey = mockk<CachedKey>().apply {
+            every { info } returns mockk<CachedKeyInfo>().apply {
+                every { toDateTime() } returns DateTime.parse("2020-12-28").minusDays(1)
+            }
+        }
+        val now = Instant.parse("2020-12-28")
+        val aggregatedRiskResult = mockk<AggregatedRiskResult>().apply {
+            every { isIncreasedRisk() } returns true
+        }
+
+        coEvery { keyCacheRepository.getAllCachedKeys() } returns listOf(cachedKey)
+        coEvery { enfClient.exposureWindows() } returns listOf()
+        every { riskLevels.calculateRisk(any(), any()) } returns null
+        every { riskLevels.aggregateResults(any(), any()) } returns aggregatedRiskResult
+        every { timeStamper.nowUTC } returns now
+        coEvery { analyticsExposureWindowCollector.reportRiskResultsPerWindow(any()) } just Runs
+        every { submissionSettings.isAllowedToSubmitKeys } returns true
+        every { submissionSettings.hasViewedTestResult.value } returns false
+
+        createTask().run(arguments) shouldBe RiskLevelTaskResult(
+            calculatedAt = now,
+            failureReason = null,
+            aggregatedRiskResult = aggregatedRiskResult,
+            listOf()
+        )
+    }
+
     @Test
     fun `risk calculation returns aggregated risk result`() = runBlockingTest {
         val cachedKey = mockk<CachedKey>().apply {
-- 
GitLab