Skip to content
Snippets Groups Projects
Unverified Commit 04562aee authored by Lukas Lechner's avatar Lukas Lechner Committed by GitHub
Browse files

Delta-Onboarding interoperability info not shown (EXPOSUREAPP-4910) (#2257)


* Fix issue of not showing delta onboarding about interoperability before showing release notes

* Suppress failure to give the chance for other steps to continue in Firebase TestLab

* Fix instrumentation test

* Revert "Suppress failure to give the chance for other steps to continue in Firebase TestLab"

This reverts commit 5d642b66

* Use when statement instead of if-else conditions

Co-authored-by: default avatarharambasicluka <64483219+harambasicluka@users.noreply.github.com>
Co-authored-by: default avatarAlex Paulescu <alex.paulescu@gmail.com>
parent b8f8b83f
No related branches found
No related tags found
No related merge requests found
......@@ -86,6 +86,7 @@ class HomeFragmentTest : BaseUITest() {
every { showLoweredRiskLevelDialog } returns MutableLiveData()
every { homeItems } returns MutableLiveData(emptyList())
every { popupEvents } returns SingleLiveEvent()
every { showPopUpsOrNavigate() } just Runs
}
setupMockViewModel(
......
......@@ -115,6 +115,8 @@ class HomeFragment : Fragment(R.layout.home_fragment_layout), AutoInject {
}
}
vm.showPopUpsOrNavigate()
vm.showLoweredRiskLevelDialog.observe2(this) {
if (it) showRiskLevelLoweredDialog()
}
......
......@@ -91,14 +91,20 @@ class HomeFragmentViewModel @AssistedInject constructor(
.map { it.toHeaderState() }
.asLiveData(dispatcherProvider.Default)
val popupEvents: SingleLiveEvent<HomeFragmentEvents> by lazy {
SingleLiveEvent<HomeFragmentEvents>().apply {
if (!LocalData.isInteroperabilityShownAtLeastOnce) {
postValue(ShowInteropDeltaOnboarding)
} else {
val popupEvents = SingleLiveEvent<HomeFragmentEvents>()
fun showPopUpsOrNavigate() {
when {
!LocalData.isInteroperabilityShownAtLeastOnce -> {
popupEvents.postValue(ShowInteropDeltaOnboarding)
}
cwaSettings.lastChangelogVersion.value < BuildConfigWrap.VERSION_CODE -> {
popupEvents.postValue(HomeFragmentEvents.ShowNewReleaseFragment)
}
else -> {
launch {
if (!LocalData.tracingExplanationDialogWasShown()) {
postValue(
popupEvents.postValue(
ShowTracingExplanation(
TimeVariables.getActiveTracingDaysInRetentionPeriod()
)
......@@ -107,13 +113,10 @@ class HomeFragmentViewModel @AssistedInject constructor(
}
launch {
if (errorResetTool.isResetNoticeToBeShown) {
postValue(ShowErrorResetDialog)
popupEvents.postValue(ShowErrorResetDialog)
}
}
}
if (cwaSettings.lastChangelogVersion.value < BuildConfigWrap.VERSION_CODE) {
postValue(HomeFragmentEvents.ShowNewReleaseFragment)
}
}
}
......
......@@ -2,9 +2,12 @@ package de.rki.coronawarnapp.main.home
import android.content.Context
import de.rki.coronawarnapp.appconfig.AppConfigProvider
import de.rki.coronawarnapp.environment.BuildConfigWrap
import de.rki.coronawarnapp.main.CWASettings
import de.rki.coronawarnapp.notification.ShareTestResultNotificationService
import de.rki.coronawarnapp.risk.TimeVariables
import de.rki.coronawarnapp.statistics.source.StatisticsProvider
import de.rki.coronawarnapp.storage.LocalData
import de.rki.coronawarnapp.storage.TracingRepository
import de.rki.coronawarnapp.submission.SubmissionRepository
import de.rki.coronawarnapp.submission.ui.homecards.SubmissionDone
......@@ -14,6 +17,7 @@ import de.rki.coronawarnapp.tracing.GeneralTracingStatus.Status
import de.rki.coronawarnapp.tracing.states.LowRisk
import de.rki.coronawarnapp.tracing.states.TracingStateProvider
import de.rki.coronawarnapp.tracing.ui.statusbar.TracingHeaderState
import de.rki.coronawarnapp.ui.main.home.HomeFragmentEvents
import de.rki.coronawarnapp.ui.main.home.HomeFragmentViewModel
import de.rki.coronawarnapp.util.DeviceUIState.PAIRED_POSITIVE
import de.rki.coronawarnapp.util.DeviceUIState.PAIRED_POSITIVE_TELETAN
......@@ -27,6 +31,7 @@ import io.mockk.coVerify
import io.mockk.every
import io.mockk.impl.annotations.MockK
import io.mockk.mockk
import io.mockk.mockkObject
import io.mockk.verify
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.flow
......@@ -40,6 +45,7 @@ import testhelpers.BaseTest
import testhelpers.TestDispatcherProvider
import testhelpers.extensions.CoroutinesTestExtension
import testhelpers.extensions.InstantExecutorExtension
import testhelpers.extensions.getOrAwaitValue
import testhelpers.extensions.observeForTesting
@ExtendWith(InstantExecutorExtension::class, CoroutinesTestExtension::class)
......@@ -169,4 +175,35 @@ class HomeFragmentViewModelTest : BaseTest() {
}
}
}
@Test
fun `test correct order of displaying delta onboarding, release notes and popups`() {
mockkObject(LocalData)
every { LocalData.isInteroperabilityShownAtLeastOnce } returns false andThen true
mockkObject(BuildConfigWrap)
every { BuildConfigWrap.VERSION_CODE } returns 1120004
every { cwaSettings.lastChangelogVersion.value } returns 1L andThen 1120004
every { LocalData.tracingExplanationDialogWasShown() } returns false andThen true
mockkObject(TimeVariables)
coEvery { TimeVariables.getActiveTracingDaysInRetentionPeriod() } coAnswers { 1 }
every { errorResetTool.isResetNoticeToBeShown } returns false andThen true
with(createInstance()) {
showPopUpsOrNavigate()
popupEvents.getOrAwaitValue() shouldBe HomeFragmentEvents.ShowInteropDeltaOnboarding
showPopUpsOrNavigate()
popupEvents.getOrAwaitValue() shouldBe HomeFragmentEvents.ShowNewReleaseFragment
showPopUpsOrNavigate()
popupEvents.getOrAwaitValue() shouldBe HomeFragmentEvents.ShowTracingExplanation(1)
showPopUpsOrNavigate()
popupEvents.getOrAwaitValue() shouldBe HomeFragmentEvents.ShowErrorResetDialog
}
}
}
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