Skip to content
Snippets Groups Projects
Commit 619c349c authored by Mohamed Metwalli's avatar Mohamed Metwalli
Browse files

Merge branch 'release/1.11.x' into feature/4559-contact-journal-screenshot

parents b5ebf060 54464508
No related branches found
No related tags found
No related merge requests found
...@@ -49,6 +49,7 @@ class SubmissionRepository @Inject constructor( ...@@ -49,6 +49,7 @@ class SubmissionRepository @Inject constructor(
// to be used by new submission flow screens // to be used by new submission flow screens
fun giveConsentToSubmission() { fun giveConsentToSubmission() {
Timber.d("giveConsentToSubmission()")
submissionSettings.hasGivenConsent.update { submissionSettings.hasGivenConsent.update {
true true
} }
...@@ -56,6 +57,7 @@ class SubmissionRepository @Inject constructor( ...@@ -56,6 +57,7 @@ class SubmissionRepository @Inject constructor(
// to be used by new submission flow screens // to be used by new submission flow screens
fun revokeConsentToSubmission() { fun revokeConsentToSubmission() {
Timber.d("revokeConsentToSubmission()")
submissionSettings.hasGivenConsent.update { submissionSettings.hasGivenConsent.update {
false false
} }
...@@ -63,6 +65,7 @@ class SubmissionRepository @Inject constructor( ...@@ -63,6 +65,7 @@ class SubmissionRepository @Inject constructor(
// to be set to true once the user has opened and viewed their test result // to be set to true once the user has opened and viewed their test result
fun setViewedTestResult() { fun setViewedTestResult() {
Timber.d("setViewedTestResult()")
submissionSettings.hasViewedTestResult.update { submissionSettings.hasViewedTestResult.update {
true true
} }
......
...@@ -10,6 +10,7 @@ import de.rki.coronawarnapp.exception.ExceptionCategory ...@@ -10,6 +10,7 @@ import de.rki.coronawarnapp.exception.ExceptionCategory
import de.rki.coronawarnapp.exception.reporting.report import de.rki.coronawarnapp.exception.reporting.report
import de.rki.coronawarnapp.nearby.ENFClient import de.rki.coronawarnapp.nearby.ENFClient
import de.rki.coronawarnapp.storage.interoperability.InteroperabilityRepository import de.rki.coronawarnapp.storage.interoperability.InteroperabilityRepository
import de.rki.coronawarnapp.submission.SubmissionRepository
import de.rki.coronawarnapp.submission.auto.AutoSubmission import de.rki.coronawarnapp.submission.auto.AutoSubmission
import de.rki.coronawarnapp.submission.data.tekhistory.TEKHistoryUpdater import de.rki.coronawarnapp.submission.data.tekhistory.TEKHistoryUpdater
import de.rki.coronawarnapp.util.coroutine.DispatcherProvider import de.rki.coronawarnapp.util.coroutine.DispatcherProvider
...@@ -24,7 +25,8 @@ class SubmissionResultPositiveOtherWarningNoConsentViewModel @AssistedInject con ...@@ -24,7 +25,8 @@ class SubmissionResultPositiveOtherWarningNoConsentViewModel @AssistedInject con
private val enfClient: ENFClient, private val enfClient: ENFClient,
private val autoSubmission: AutoSubmission, private val autoSubmission: AutoSubmission,
tekHistoryUpdaterFactory: TEKHistoryUpdater.Factory, tekHistoryUpdaterFactory: TEKHistoryUpdater.Factory,
interoperabilityRepository: InteroperabilityRepository interoperabilityRepository: InteroperabilityRepository,
private val submissionRepository: SubmissionRepository
) : CWAViewModel(dispatcherProvider = dispatcherProvider) { ) : CWAViewModel(dispatcherProvider = dispatcherProvider) {
val routeToScreen = SingleLiveEvent<NavDirections>() val routeToScreen = SingleLiveEvent<NavDirections>()
...@@ -75,6 +77,7 @@ class SubmissionResultPositiveOtherWarningNoConsentViewModel @AssistedInject con ...@@ -75,6 +77,7 @@ class SubmissionResultPositiveOtherWarningNoConsentViewModel @AssistedInject con
} }
fun onConsentButtonClicked() { fun onConsentButtonClicked() {
submissionRepository.giveConsentToSubmission()
launch { launch {
if (enfClient.isTracingEnabled.first()) { if (enfClient.isTracingEnabled.first()) {
tekHistoryUpdater.updateTEKHistoryOrRequestPermission() tekHistoryUpdater.updateTEKHistoryOrRequestPermission()
......
<?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"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="uiState"
type="de.rki.coronawarnapp.ui.submission.warnothers.WarnOthersState" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/submission_positive_other_privacy_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/submission_positive_other_warning_title"
android:fillViewport="true"
tools:context=".ui.submission.warnothers.SubmissionResultPositiveOtherWarningFragment">
<include
android:id="@+id/submission_positive_other_warning_header"
layout="@layout/include_header"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:icon="@{@drawable/ic_back}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:title="@{@string/submission_positive_other_warning_title}" />
<include
layout="@layout/include_submission_positive_other_warning"
android:layout_width="0dp"
android:layout_height="0dp"
app:countryData="@{uiState.countryList}"
app:layout_constraintBottom_toTopOf="@+id/guideline_action"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/submission_positive_other_warning_header"
app:layout_constraintVertical_bias="0.0" />
<Button
android:id="@+id/submission_positive_other_warning_button_next"
style="@style/buttonPrimary"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:enabled="@{uiState != null &amp;&amp; uiState.isSubmitButtonEnabled()}"
android:text="@string/submission_accept_button"
android:textAllCaps="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/guideline_end"
app:layout_constraintStart_toStartOf="@id/guideline_start"
app:layout_constraintTop_toBottomOf="@id/guideline_action" />
<ProgressBar
android:id="@+id/submission_positive_other_warning_spinner"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_large"
android:indeterminate="true"
gone="@{uiState == null || !uiState.isSubmitSpinnerVisible()}"
app:layout_constraintBottom_toBottomOf="@+id/submission_positive_other_warning_button_next"
app:layout_constraintEnd_toEndOf="@+id/submission_positive_other_warning_button_next"
app:layout_constraintStart_toStartOf="@+id/submission_positive_other_warning_button_next"
app:layout_constraintTop_toTopOf="@+id/submission_positive_other_warning_button_next" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_end="@dimen/guideline_action" />
<include layout="@layout/merge_guidelines_side" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
package de.rki.coronawarnapp.ui.submission.warnothers
import de.rki.coronawarnapp.nearby.ENFClient
import de.rki.coronawarnapp.storage.interoperability.InteroperabilityRepository
import de.rki.coronawarnapp.submission.SubmissionRepository
import de.rki.coronawarnapp.submission.auto.AutoSubmission
import de.rki.coronawarnapp.submission.data.tekhistory.TEKHistoryUpdater
import io.mockk.MockKAnnotations
import io.mockk.Runs
import io.mockk.clearAllMocks
import io.mockk.every
import io.mockk.impl.annotations.MockK
import io.mockk.just
import io.mockk.verify
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.flowOf
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import testhelpers.BaseTest
import testhelpers.TestDispatcherProvider
import testhelpers.extensions.CoroutinesTestExtension
import testhelpers.extensions.InstantExecutorExtension
@ExtendWith(InstantExecutorExtension::class, CoroutinesTestExtension::class)
class SubmissionResultPositiveOtherWarningNoConsentViewModelTest : BaseTest() {
@MockK lateinit var submissionRepository: SubmissionRepository
@MockK lateinit var autoSubmission: AutoSubmission
@MockK lateinit var tekHistoryUpdater: TEKHistoryUpdater
@MockK lateinit var tekHistoryUpdaterFactory: TEKHistoryUpdater.Factory
@MockK lateinit var interoperabilityRepository: InteroperabilityRepository
@MockK lateinit var enfClient: ENFClient
@BeforeEach
fun setUp() {
MockKAnnotations.init(this)
every { tekHistoryUpdaterFactory.create(any()) } returns tekHistoryUpdater
every { tekHistoryUpdater.updateTEKHistoryOrRequestPermission() } just Runs
every { interoperabilityRepository.countryList } returns emptyFlow()
every { submissionRepository.giveConsentToSubmission() } just Runs
every { enfClient.isTracingEnabled } returns flowOf(true)
}
private fun createViewModel() = SubmissionResultPositiveOtherWarningNoConsentViewModel(
dispatcherProvider = TestDispatcherProvider,
tekHistoryUpdaterFactory = tekHistoryUpdaterFactory,
autoSubmission = autoSubmission,
enfClient = enfClient,
interoperabilityRepository = interoperabilityRepository,
submissionRepository = submissionRepository
)
@AfterEach
fun teardown() {
clearAllMocks()
}
@Test
fun `consent is stored and tek history updated`() {
val consentMutable = MutableStateFlow(false)
every { submissionRepository.hasGivenConsentToSubmission } returns consentMutable
val viewModel = createViewModel()
viewModel.onConsentButtonClicked()
verify { submissionRepository.giveConsentToSubmission() }
verify { tekHistoryUpdater.updateTEKHistoryOrRequestPermission() }
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment