diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/notification/TestResultAvailableNotificationService.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/notification/TestResultAvailableNotificationService.kt index bc97a7ba3bfc35b29e4f2e814053c795ca7f81eb..9a9c3412fce65d9c1f45ae41135afd5335e5a436 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/notification/TestResultAvailableNotificationService.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/notification/TestResultAvailableNotificationService.kt @@ -3,11 +3,13 @@ package de.rki.coronawarnapp.notification import android.content.Context import androidx.navigation.NavDeepLinkBuilder import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.storage.LocalData import de.rki.coronawarnapp.ui.main.MainActivity import de.rki.coronawarnapp.util.device.ForegroundState import de.rki.coronawarnapp.util.di.AppContext import de.rki.coronawarnapp.util.formatter.TestResult import kotlinx.coroutines.flow.first +import timber.log.Timber import javax.inject.Inject import javax.inject.Provider @@ -21,6 +23,11 @@ class TestResultAvailableNotificationService @Inject constructor( suspend fun showTestResultAvailableNotification(testResult: TestResult) { if (foregroundState.isInForeground.first()) return + if (!LocalData.isNotificationsTestEnabled) { + Timber.i("Don't show test result available notification because user doesn't want to be informed") + return + } + val pendingIntent = navDeepLinkBuilderProvider.get().apply { setGraph(R.navigation.nav_graph) setComponentName(MainActivity::class.java) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/util/StatisticsNumberValueFormatter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/util/StatisticsNumberValueFormatter.kt index de0b9c04d9e580c5909ce3b5f8932d592ccbede5..927f51ddaff3ebc3fc253d58d4dfab6ae8b19a9f 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/util/StatisticsNumberValueFormatter.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/statistics/util/StatisticsNumberValueFormatter.kt @@ -22,7 +22,7 @@ fun formatStatisticalValue( return when (decimals) { in Int.MIN_VALUE..0 -> DecimalFormat("#,###", DecimalFormatSymbols(locale)) - 1 -> DecimalFormat("#,###.#", DecimalFormatSymbols(locale)) + 1 -> DecimalFormat("#,###.0", DecimalFormatSymbols(locale)) else -> DecimalFormat("#,###.##", DecimalFormatSymbols(locale)) }.format(value) } diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/notification/TestResultAvailableNotificationServiceTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/notification/TestResultAvailableNotificationServiceTest.kt index a114b12d3e1c6440d3b0d8dc90c08d1dceb4cc67..91747a3dab31ec5ad02a41062c03e3641aa3b360 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/notification/TestResultAvailableNotificationServiceTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/notification/TestResultAvailableNotificationServiceTest.kt @@ -6,6 +6,7 @@ import android.content.Context import androidx.navigation.NavDeepLinkBuilder import de.rki.coronawarnapp.CoronaWarnApplication import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.storage.LocalData import de.rki.coronawarnapp.util.device.ForegroundState import de.rki.coronawarnapp.util.formatter.TestResult import io.kotest.matchers.shouldBe @@ -41,11 +42,13 @@ class TestResultAvailableNotificationServiceTest { MockKAnnotations.init(this) mockkObject(CoronaWarnApplication) + mockkObject(LocalData) every { CoronaWarnApplication.getAppContext() } returns context every { context.getSystemService(Context.NOTIFICATION_SERVICE) } returns notificationManager every { navDeepLinkBuilderProvider.get() } returns navDeepLinkBuilder every { navDeepLinkBuilder.createPendingIntent() } returns pendingIntent + every { LocalData.isNotificationsTestEnabled } returns true } @AfterEach @@ -110,4 +113,23 @@ class TestResultAvailableNotificationServiceTest { ) } } + + @Test + fun `test notification in background disabled`() = runBlockingTest { + coEvery { foregroundState.isInForeground } returns flow { emit(false) } + every { LocalData.isNotificationsTestEnabled } returns false + + createInstance().apply { + showTestResultAvailableNotification(TestResult.POSITIVE) + + verify(exactly = 0) { + notificationHelper.sendNotification( + title = any(), + content = any(), + notificationId = any(), + pendingIntent = any() + ) + } + } + } } diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/statistics/util/StatisticsNumberValueFormatterTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/statistics/util/StatisticsNumberValueFormatterTest.kt index 7065b23afe2f7cf33d7da19bc623aa65d70c8821..d95f4f30d3f3f7a157f430070d14d6467c0a6a32 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/statistics/util/StatisticsNumberValueFormatterTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/statistics/util/StatisticsNumberValueFormatterTest.kt @@ -55,6 +55,8 @@ internal class StatisticsNumberValueFormatterTest { Arguments.of(12.3456, 1, Locale.GERMANY, "12,3"), Arguments.of(12.3456, 2, Locale.GERMANY, "12,35"), + Arguments.of(1.0036, 1, Locale.GERMANY, "1,0"), + Arguments.of(12.3456, 1, Locale.UK, "12.3"), Arguments.of(12.6543, -1, Locale.GERMANY, "13"),