diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/riskdetails/DefaultRiskDetailPresenter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/riskdetails/DefaultRiskDetailPresenter.kt new file mode 100644 index 0000000000000000000000000000000000000000..e577f7ce8c482c98a8a0a8a0ddf83365b19f67ec --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/riskdetails/DefaultRiskDetailPresenter.kt @@ -0,0 +1,12 @@ +package de.rki.coronawarnapp.ui.riskdetails + +import de.rki.coronawarnapp.risk.RiskLevelConstants + +class DefaultRiskDetailPresenter : RiskDetailPresenter { + + override fun isAdditionalInfoVisible(riskLevel: Int, matchedKeyCount: Int) = + riskLevel == RiskLevelConstants.LOW_LEVEL_RISK && matchedKeyCount > 0 + + override fun isInformationBodyNoticeVisible(riskLevel: Int, matchedKeyCount: Int) = + !(riskLevel == RiskLevelConstants.LOW_LEVEL_RISK && matchedKeyCount > 0) +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/riskdetails/RiskDetailPresenter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/riskdetails/RiskDetailPresenter.kt new file mode 100644 index 0000000000000000000000000000000000000000..0186d75f017b6cf851828c4852817d09a39025cc --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/riskdetails/RiskDetailPresenter.kt @@ -0,0 +1,8 @@ +package de.rki.coronawarnapp.ui.riskdetails + +interface RiskDetailPresenter { + + fun isAdditionalInfoVisible(riskLevel: Int, matchedKeyCount: Int): Boolean + + fun isInformationBodyNoticeVisible(riskLevel: Int, matchedKeyCount: Int): Boolean +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/viewmodel/TracingViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/viewmodel/TracingViewModel.kt index 8d3b8e0c5e1dcff34f1b7553c6ea07e94be3fe11..2d94bf11de0709c02724cfa33f0960eddeece327 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/viewmodel/TracingViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/viewmodel/TracingViewModel.kt @@ -1,12 +1,15 @@ package de.rki.coronawarnapp.ui.viewmodel +import android.view.View import androidx.lifecycle.LiveData +import androidx.lifecycle.MediatorLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import de.rki.coronawarnapp.CoronaWarnApplication import de.rki.coronawarnapp.exception.ExceptionCategory.INTERNAL import de.rki.coronawarnapp.exception.TransactionException import de.rki.coronawarnapp.exception.reporting.report +import de.rki.coronawarnapp.risk.RiskLevelConstants import de.rki.coronawarnapp.storage.ExposureSummaryRepository import de.rki.coronawarnapp.storage.LocalData import de.rki.coronawarnapp.storage.RiskLevelRepository @@ -14,6 +17,7 @@ import de.rki.coronawarnapp.storage.TracingRepository import de.rki.coronawarnapp.timer.TimerHelper import de.rki.coronawarnapp.transaction.RetrieveDiagnosisKeysTransaction import de.rki.coronawarnapp.transaction.RiskLevelTransaction +import de.rki.coronawarnapp.ui.riskdetails.DefaultRiskDetailPresenter import de.rki.coronawarnapp.util.ConnectivityHelper import kotlinx.coroutines.launch import org.joda.time.DateTime @@ -37,6 +41,8 @@ class TracingViewModel : ViewModel() { val TAG: String? = TracingViewModel::class.simpleName } + private val riskDetailPresenter = DefaultRiskDetailPresenter() + // Values from RiskLevelRepository val riskLevel: LiveData<Int> = RiskLevelRepository.riskLevelScore val riskLevelScoreLastSuccessfulCalculated = @@ -53,6 +59,52 @@ class TracingViewModel : ViewModel() { val activeTracingDaysInRetentionPeriod = TracingRepository.activeTracingDaysInRetentionPeriod var isRefreshing: LiveData<Boolean> = TracingRepository.isRefreshing + val additionalInformationVisibility = MediatorLiveData<Int>() + val informationBodyNoticeVisibility = MediatorLiveData<Int>() + + init { + additionalInformationVisibility.addSource(riskLevel) { + additionalInformationVisibility.value = + if (riskDetailPresenter.isAdditionalInfoVisible(it, matchedKeyCount.value ?: -1)) + View.VISIBLE + else + View.GONE + } + additionalInformationVisibility.addSource(matchedKeyCount) { + additionalInformationVisibility.value = + if (riskDetailPresenter.isAdditionalInfoVisible( + riskLevel.value ?: RiskLevelConstants.UNKNOWN_RISK_INITIAL, + it ?: 0 + ) + ) + View.VISIBLE + else + View.GONE + } + informationBodyNoticeVisibility.addSource(riskLevel) { + informationBodyNoticeVisibility.value = + if (riskDetailPresenter.isInformationBodyNoticeVisible( + it, + matchedKeyCount.value ?: -1 + ) + ) + View.VISIBLE + else + View.GONE + } + informationBodyNoticeVisibility.addSource(matchedKeyCount) { + informationBodyNoticeVisibility.value = + if (riskDetailPresenter.isInformationBodyNoticeVisible( + riskLevel.value ?: RiskLevelConstants.UNKNOWN_RISK_INITIAL, + it ?: 0 + ) + ) + View.VISIBLE + else + View.GONE + } + } + /** * Launches the RetrieveDiagnosisKeysTransaction and RiskLevelTransaction in the viewModel scope * diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterRiskHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterRiskHelper.kt index 85c5cf343bba5c52e9f879ffc870dfe9f12c08e5..5c5fe1ffbcc6f52e917cd22872a582d4f4f735a8 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterRiskHelper.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterRiskHelper.kt @@ -363,12 +363,14 @@ fun formatNextUpdateContentDescription( * * @param riskLevelScore * @param daysSinceLastExposure + * @param matchedKeysCount * @return */ -fun formatRiskDetailsRiskLevelBody(riskLevelScore: Int?, daysSinceLastExposure: Int?): String { +fun formatRiskDetailsRiskLevelBody(riskLevelScore: Int?, daysSinceLastExposure: Int?, matchedKeysCount: Int?): String { val appContext = CoronaWarnApplication.getAppContext() val resources = appContext.resources val days = daysSinceLastExposure ?: 0 + val count = matchedKeysCount ?: 0 return when (riskLevelScore) { RiskLevelConstants.INCREASED_RISK -> resources.getQuantityString( @@ -379,7 +381,11 @@ fun formatRiskDetailsRiskLevelBody(riskLevelScore: Int?, daysSinceLastExposure: RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS -> appContext.getString(R.string.risk_details_information_body_outdated_risk) RiskLevelConstants.LOW_LEVEL_RISK -> - appContext.getString(R.string.risk_details_information_body_low_risk) + appContext.getString( + if (count > 0) + R.string.risk_details_information_body_low_risk_with_encounter + else + R.string.risk_details_information_body_low_risk) RiskLevelConstants.UNKNOWN_RISK_INITIAL -> appContext.getString(R.string.risk_details_information_body_unknown_risk) else -> "" diff --git a/Corona-Warn-App/src/main/res/layout/fragment_risk_details.xml b/Corona-Warn-App/src/main/res/layout/fragment_risk_details.xml index 3496a3d73128b51baedae9ee97e67feb919cc959..e538e5b2b0e0729ca98020fab9f012dcb365cf56 100644 --- a/Corona-Warn-App/src/main/res/layout/fragment_risk_details.xml +++ b/Corona-Warn-App/src/main/res/layout/fragment_risk_details.xml @@ -117,6 +117,18 @@ app:showDetails="@{true}" app:tracingViewModel="@{tracingViewModel}" /> + <include + android:id="@+id/risk_details_additional_information" + layout="@layout/include_risk_details_low_risk_encounter" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:focusable="false" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/risk_details_risk_card" + app:settingsViewModel="@{settingsViewModel}" + app:tracingViewModel="@{tracingViewModel}" /> + <TextView android:id="@+id/risk_details_behavior_headline" style="@style/headline5" @@ -129,7 +141,7 @@ app:layout_constraintEnd_toStartOf="@+id/guideline_end" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="@+id/guideline_start" - app:layout_constraintTop_toBottomOf="@+id/risk_details_risk_card" /> + app:layout_constraintTop_toBottomOf="@+id/risk_details_additional_information" /> <TextView android:id="@+id/risk_details_behavior_subtitle" @@ -232,8 +244,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/spacing_normal" - android:text="@{FormatterRiskHelper.formatRiskDetailsRiskLevelBody(tracingViewModel.riskLevel, tracingViewModel.daysSinceLastExposure)}" - android:visibility="@{FormatterHelper.formatVisibilityText(FormatterRiskHelper.formatRiskDetailsRiskLevelBody(tracingViewModel.riskLevel, tracingViewModel.daysSinceLastExposure))}" + android:text="@{FormatterRiskHelper.formatRiskDetailsRiskLevelBody(tracingViewModel.riskLevel, tracingViewModel.daysSinceLastExposure, tracingViewModel.matchedKeyCount)}" + android:visibility="@{FormatterHelper.formatVisibilityText(FormatterRiskHelper.formatRiskDetailsRiskLevelBody(tracingViewModel.riskLevel, tracingViewModel.daysSinceLastExposure, tracingViewModel.matchedKeyCount))}" android:focusable="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -246,6 +258,7 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/spacing_normal" android:text="@{FormatterRiskHelper.formatRiskDetailsRiskLevelBodyNotice(tracingViewModel.riskLevel)}" + android:visibility="@{tracingViewModel.informationBodyNoticeVisibility}" android:focusable="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/Corona-Warn-App/src/main/res/layout/include_risk_details_low_risk_encounter.xml b/Corona-Warn-App/src/main/res/layout/include_risk_details_low_risk_encounter.xml new file mode 100644 index 0000000000000000000000000000000000000000..ad8aedeb39d702f6c31199a1dbd5693f8b463f40 --- /dev/null +++ b/Corona-Warn-App/src/main/res/layout/include_risk_details_low_risk_encounter.xml @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + + <data> + + <variable + name="tracingViewModel" + type="de.rki.coronawarnapp.ui.viewmodel.TracingViewModel" /> + + <variable + name="settingsViewModel" + type="de.rki.coronawarnapp.ui.viewmodel.SettingsViewModel" /> + </data> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:visibility="@{tracingViewModel.additionalInformationVisibility}"> + + <TextView + android:id="@+id/risk_details_additional_information_headline" + style="@style/headline5" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="28dp" + android:accessibilityHeading="true" + android:focusable="true" + android:text="@string/risk_details_additional_info_title" + android:layout_marginHorizontal="@dimen/spacing_normal" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> + + <TextView + android:id="@+id/risk_details_additional_information_subtitle" + style="@style/body2" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_tiny" + android:focusable="true" + android:text="@string/risk_details_additional_info_subtitle" + android:layout_marginHorizontal="@dimen/spacing_normal" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/risk_details_additional_information_headline" /> + + <TextView + android:id="@+id/risk_details_additional_information_body" + style="@style/body1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_normal" + android:text="@string/risk_details_additional_info_text" + android:focusable="true" + android:layout_marginHorizontal="@dimen/spacing_normal" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/risk_details_additional_information_subtitle" /> + + </androidx.constraintlayout.widget.ConstraintLayout> +</layout> \ No newline at end of file diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/riskdetails/DefaultRiskDetailPresenterTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/riskdetails/DefaultRiskDetailPresenterTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..445d0dce52b540e79e2032d31c46cb95515c6dee --- /dev/null +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/riskdetails/DefaultRiskDetailPresenterTest.kt @@ -0,0 +1,34 @@ +package de.rki.coronawarnapp.ui.riskdetails + +import de.rki.coronawarnapp.risk.RiskLevelConstants +import org.junit.Assert +import org.junit.Test + +class DefaultRiskDetailPresenterTest { + + @Test + fun test_isAdditionalInfoVisible() { + DefaultRiskDetailPresenter().apply { + Assert.assertFalse(isAdditionalInfoVisible(RiskLevelConstants.LOW_LEVEL_RISK, 0)) + Assert.assertTrue(isAdditionalInfoVisible(RiskLevelConstants.LOW_LEVEL_RISK, 1)) + Assert.assertFalse(isAdditionalInfoVisible(RiskLevelConstants.UNKNOWN_RISK_INITIAL, 0)) + Assert.assertFalse(isAdditionalInfoVisible(RiskLevelConstants.INCREASED_RISK, 0)) + Assert.assertFalse(isAdditionalInfoVisible(RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS, 0)) + Assert.assertFalse(isAdditionalInfoVisible(RiskLevelConstants.NO_CALCULATION_POSSIBLE_TRACING_OFF, 0)) + Assert.assertFalse(isAdditionalInfoVisible(RiskLevelConstants.UNDETERMINED, 0)) + } + } + + @Test + fun test_isInformationBodyNoticeVisible() { + DefaultRiskDetailPresenter().apply { + Assert.assertTrue(isInformationBodyNoticeVisible(RiskLevelConstants.LOW_LEVEL_RISK, 0)) + Assert.assertFalse(isInformationBodyNoticeVisible(RiskLevelConstants.LOW_LEVEL_RISK, 1)) + Assert.assertTrue(isInformationBodyNoticeVisible(RiskLevelConstants.UNKNOWN_RISK_INITIAL, 0)) + Assert.assertTrue(isInformationBodyNoticeVisible(RiskLevelConstants.INCREASED_RISK, 0)) + Assert.assertTrue(isInformationBodyNoticeVisible(RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS, 0)) + Assert.assertTrue(isInformationBodyNoticeVisible(RiskLevelConstants.NO_CALCULATION_POSSIBLE_TRACING_OFF, 0)) + Assert.assertTrue(isInformationBodyNoticeVisible(RiskLevelConstants.UNDETERMINED, 0)) + } + } +} diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterRiskHelperTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterRiskHelperTest.kt index 0c5ec3a069ec1b2bf0a334bf339de5a4a2439368..3240d2c3eb558619c041d5bc88799dde19f4b6b9 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterRiskHelperTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/formatter/FormatterRiskHelperTest.kt @@ -93,17 +93,19 @@ class FormatterRiskHelperTest { ) } -// private fun formatRiskContactBase(iRiskLevelScore: Int?, iMatchedKeysCount: Int?, sValue: String) { -// every { context.getString(R.string.risk_card_body_contact) } returns R.string.risk_card_body_contact.toString() -// -// val result = formatRiskContact(riskLevelScore = iRiskLevelScore, matchedKeysCount = iMatchedKeysCount) -// assertThat( -// result, `is`(sValue) -// ) -// } + private fun formatRiskContactBase(iRiskLevelScore: Int?, iMatchedKeysCount: Int?, sValue: String) { + every { context.getString(R.string.risk_card_body_contact) } returns R.string.risk_card_body_contact.toString() + every { context.getString(R.string.risk_card_body_contact_low_risk) } returns R.string.risk_card_body_contact_low_risk.toString() + + val result = formatRiskContact(riskLevelScore = iRiskLevelScore, matchedKeysCount = iMatchedKeysCount) + assertThat( + result, `is`(sValue) + ) + } private fun formatRiskContactLastBase(iRiskLevelScore: Int?, iDaysSinceLastExposure: Int?, sValue: String) { every { context.getString(R.string.risk_card_body_contact) } returns R.string.risk_card_body_contact.toString() + every { context.getString(R.string.risk_card_body_contact_low_risk) } returns R.string.risk_card_body_contact_low_risk.toString() val result = formatRiskContactLast(riskLevelScore = iRiskLevelScore, daysSinceLastExposure = iDaysSinceLastExposure) @@ -192,6 +194,7 @@ class FormatterRiskHelperTest { private fun formatRiskDetailsRiskLevelBodyBase( iRiskLevelScore: Int?, iDaysSinceLastExposure: Int?, + iMatchedKeysCount: Int?, sValue: String ) { every { context.getString(R.string.risk_details_information_body_outdated_risk) } returns R.string.risk_details_information_body_outdated_risk.toString() @@ -200,7 +203,8 @@ class FormatterRiskHelperTest { val result = formatRiskDetailsRiskLevelBody( riskLevelScore = iRiskLevelScore, - daysSinceLastExposure = iDaysSinceLastExposure + daysSinceLastExposure = iDaysSinceLastExposure, + matchedKeysCount = iMatchedKeysCount ) assertThat( result, `is`(sValue) @@ -577,70 +581,70 @@ class FormatterRiskHelperTest { @Test fun formatRiskContact() { -// formatRiskContactBase(iRiskLevelScore = null, iMatchedKeysCount = null, sValue = "") -// formatRiskContactBase(iRiskLevelScore = null, iMatchedKeysCount = 0, sValue = "") -// -// formatRiskContactBase( -// iRiskLevelScore = RiskLevelConstants.INCREASED_RISK, -// iMatchedKeysCount = 0, -// sValue = context.getString(R.string.risk_card_body_contact) -// ) -// formatRiskContactBase( -// iRiskLevelScore = RiskLevelConstants.INCREASED_RISK, -// iMatchedKeysCount = 2, -// sValue = context.resources.getQuantityString( -// R.plurals.risk_card_body_contact_value, -// 2, -// 2 -// ) -// ) -// -// formatRiskContactBase( -// iRiskLevelScore = RiskLevelConstants.LOW_LEVEL_RISK, -// iMatchedKeysCount = 0, -// sValue = context.getString(R.string.risk_card_body_contact) -// ) -// formatRiskContactBase( -// iRiskLevelScore = RiskLevelConstants.LOW_LEVEL_RISK, -// iMatchedKeysCount = 2, -// sValue = context.resources.getQuantityString( -// R.plurals.risk_card_body_contact_value, -// 2, -// 2 -// ) -// ) -// -// formatRiskContactBase( -// iRiskLevelScore = RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS, -// iMatchedKeysCount = 0, -// sValue = "" -// ) -// formatRiskContactBase( -// iRiskLevelScore = RiskLevelConstants.NO_CALCULATION_POSSIBLE_TRACING_OFF, -// iMatchedKeysCount = 0, -// sValue = "" -// ) -// formatRiskContactBase( -// iRiskLevelScore = RiskLevelConstants.UNKNOWN_RISK_INITIAL, -// iMatchedKeysCount = 0, -// sValue = "" -// ) -// -// formatRiskContactBase( -// iRiskLevelScore = RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS, -// iMatchedKeysCount = 2, -// sValue = "" -// ) -// formatRiskContactBase( -// iRiskLevelScore = RiskLevelConstants.NO_CALCULATION_POSSIBLE_TRACING_OFF, -// iMatchedKeysCount = 2, -// sValue = "" -// ) -// formatRiskContactBase( -// iRiskLevelScore = RiskLevelConstants.UNKNOWN_RISK_INITIAL, -// iMatchedKeysCount = 2, -// sValue = "" -// ) + formatRiskContactBase(iRiskLevelScore = null, iMatchedKeysCount = null, sValue = "") + formatRiskContactBase(iRiskLevelScore = null, iMatchedKeysCount = 0, sValue = "") + + formatRiskContactBase( + iRiskLevelScore = RiskLevelConstants.INCREASED_RISK, + iMatchedKeysCount = 0, + sValue = context.getString(R.string.risk_card_body_contact) + ) + formatRiskContactBase( + iRiskLevelScore = RiskLevelConstants.INCREASED_RISK, + iMatchedKeysCount = 2, + sValue = context.resources.getQuantityString( + R.plurals.risk_card_body_contact_value, + 2, + 2 + ) + ) + + formatRiskContactBase( + iRiskLevelScore = RiskLevelConstants.LOW_LEVEL_RISK, + iMatchedKeysCount = 0, + sValue = context.getString(R.string.risk_card_body_contact_low_risk) + ) + formatRiskContactBase( + iRiskLevelScore = RiskLevelConstants.LOW_LEVEL_RISK, + iMatchedKeysCount = 2, + sValue = context.resources.getQuantityString( + R.plurals.risk_card_body_contact_value, + 2, + 2 + ) + ) + + formatRiskContactBase( + iRiskLevelScore = RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS, + iMatchedKeysCount = 0, + sValue = "" + ) + formatRiskContactBase( + iRiskLevelScore = RiskLevelConstants.NO_CALCULATION_POSSIBLE_TRACING_OFF, + iMatchedKeysCount = 0, + sValue = "" + ) + formatRiskContactBase( + iRiskLevelScore = RiskLevelConstants.UNKNOWN_RISK_INITIAL, + iMatchedKeysCount = 0, + sValue = "" + ) + + formatRiskContactBase( + iRiskLevelScore = RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS, + iMatchedKeysCount = 2, + sValue = "" + ) + formatRiskContactBase( + iRiskLevelScore = RiskLevelConstants.NO_CALCULATION_POSSIBLE_TRACING_OFF, + iMatchedKeysCount = 2, + sValue = "" + ) + formatRiskContactBase( + iRiskLevelScore = RiskLevelConstants.UNKNOWN_RISK_INITIAL, + iMatchedKeysCount = 2, + sValue = "" + ) } @Test @@ -1054,11 +1058,13 @@ class FormatterRiskHelperTest { formatRiskDetailsRiskLevelBodyBase( iRiskLevelScore = null, iDaysSinceLastExposure = 0, + iMatchedKeysCount = 0, sValue = "" ) formatRiskDetailsRiskLevelBodyBase( iRiskLevelScore = RiskLevelConstants.INCREASED_RISK, iDaysSinceLastExposure = 1, + iMatchedKeysCount = 0, sValue = resources.getQuantityString( R.plurals.risk_details_information_body_increased_risk, 1, @@ -1068,28 +1074,34 @@ class FormatterRiskHelperTest { formatRiskDetailsRiskLevelBodyBase( iRiskLevelScore = RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS, iDaysSinceLastExposure = 1, + iMatchedKeysCount = 0, sValue = context.getString(R.string.risk_details_information_body_outdated_risk) ) formatRiskDetailsRiskLevelBodyBase( iRiskLevelScore = RiskLevelConstants.NO_CALCULATION_POSSIBLE_TRACING_OFF, iDaysSinceLastExposure = 1, + iMatchedKeysCount = 0, sValue = "" ) formatRiskDetailsRiskLevelBodyBase( iRiskLevelScore = RiskLevelConstants.LOW_LEVEL_RISK, iDaysSinceLastExposure = 1, + iMatchedKeysCount = 0, sValue = context.getString(R.string.risk_details_information_body_low_risk) ) formatRiskDetailsRiskLevelBodyBase( iRiskLevelScore = RiskLevelConstants.UNKNOWN_RISK_INITIAL, iDaysSinceLastExposure = 1, + iMatchedKeysCount = 0, sValue = context.getString(R.string.risk_details_information_body_unknown_risk) ) - formatRiskDetailsRiskLevelBodyBase(iRiskLevelScore = null, iDaysSinceLastExposure = null, sValue = "") + formatRiskDetailsRiskLevelBodyBase(iRiskLevelScore = null, iDaysSinceLastExposure = null, + iMatchedKeysCount = 0, sValue = "") formatRiskDetailsRiskLevelBodyBase( iRiskLevelScore = RiskLevelConstants.INCREASED_RISK, iDaysSinceLastExposure = null, + iMatchedKeysCount = 0, sValue = resources.getQuantityString( R.plurals.risk_details_information_body_increased_risk, 0, @@ -1099,21 +1111,25 @@ class FormatterRiskHelperTest { formatRiskDetailsRiskLevelBodyBase( iRiskLevelScore = RiskLevelConstants.UNKNOWN_RISK_OUTDATED_RESULTS, iDaysSinceLastExposure = null, + iMatchedKeysCount = 0, sValue = context.getString(R.string.risk_details_information_body_outdated_risk) ) formatRiskDetailsRiskLevelBodyBase( iRiskLevelScore = RiskLevelConstants.NO_CALCULATION_POSSIBLE_TRACING_OFF, iDaysSinceLastExposure = null, + iMatchedKeysCount = 0, sValue = "" ) formatRiskDetailsRiskLevelBodyBase( iRiskLevelScore = RiskLevelConstants.LOW_LEVEL_RISK, iDaysSinceLastExposure = null, + iMatchedKeysCount = 0, sValue = context.getString(R.string.risk_details_information_body_low_risk) ) formatRiskDetailsRiskLevelBodyBase( iRiskLevelScore = RiskLevelConstants.UNKNOWN_RISK_INITIAL, iDaysSinceLastExposure = null, + iMatchedKeysCount = 0, sValue = context.getString(R.string.risk_details_information_body_unknown_risk) ) }