From 71dbb1ad1ce46e4cad680e3f12775227b42269c9 Mon Sep 17 00:00:00 2001 From: Mohamed Metwalli <mohamed.metwalli@sap.com> Date: Wed, 6 Jan 2021 13:56:38 +0100 Subject: [PATCH] Extract test data --- .../coronawarnapp/ui/main/home/HomeData.kt | 68 ++++++++++ .../ui/main/home/HomeFragmentTest.kt | 125 ++++-------------- 2 files changed, 95 insertions(+), 98 deletions(-) create mode 100644 Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeData.kt diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeData.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeData.kt new file mode 100644 index 000000000..ee93b1757 --- /dev/null +++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeData.kt @@ -0,0 +1,68 @@ +package de.rki.coronawarnapp.ui.main.home + +import de.rki.coronawarnapp.risk.RiskState +import de.rki.coronawarnapp.tracing.TracingProgress +import de.rki.coronawarnapp.tracing.states.IncreasedRisk +import de.rki.coronawarnapp.tracing.states.LowRisk +import de.rki.coronawarnapp.tracing.states.TracingDisabled +import de.rki.coronawarnapp.tracing.states.TracingInProgress +import de.rki.coronawarnapp.tracing.ui.homecards.IncreasedRiskCard +import de.rki.coronawarnapp.tracing.ui.homecards.LowRiskCard +import de.rki.coronawarnapp.tracing.ui.homecards.TracingDisabledCard +import de.rki.coronawarnapp.tracing.ui.homecards.TracingProgressCard +import org.joda.time.Instant + +object HomeData { + + object Tracing { + val lowRiskItem = LowRiskCard.Item( + state = LowRisk( + riskState = RiskState.LOW_RISK, + isInDetailsMode = true, + lastExposureDetectionTime = Instant.now(), + allowManualUpdate = true, + daysWithEncounters = 1, + activeTracingDays = 1 + ), + onCardClick = {}, + onUpdateClick = {} + ) + + val increasedRiskItem = IncreasedRiskCard.Item( + state = IncreasedRisk( + riskState = RiskState.INCREASED_RISK, + isInDetailsMode = true, + lastExposureDetectionTime = Instant.now(), + allowManualUpdate = true, + daysWithEncounters = 1, + activeTracingDays = 1, + lastEncounterAt = Instant.now() + ), + onCardClick = {}, + onUpdateClick = {} + ) + + val tracingDisabledItem = TracingDisabledCard.Item( + state = TracingDisabled( + riskState = RiskState.LOW_RISK, + isInDetailsMode = true, + lastExposureDetectionTime = Instant.now() + ), + onCardClick = {}, + onEnableTracingClick = {} + ) + + val tracingProgressItem = TracingProgressCard.Item( + state = TracingInProgress( + riskState = RiskState.LOW_RISK, + isInDetailsMode = true, + tracingProgress = TracingProgress.Downloading + ), + onCardClick = {} + ) + } + + object Submission { + + } +} diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt index 35e498f29..98cfdb7a5 100644 --- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt +++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt @@ -2,6 +2,8 @@ package de.rki.coronawarnapp.ui.main.home import androidx.fragment.app.testing.launchFragment import androidx.lifecycle.MutableLiveData +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.ext.junit.runners.AndroidJUnit4 import dagger.Module import dagger.android.ContributesAndroidInjector @@ -9,28 +11,17 @@ import de.rki.coronawarnapp.R import de.rki.coronawarnapp.appconfig.AppConfigProvider import de.rki.coronawarnapp.main.CWASettings import de.rki.coronawarnapp.notification.TestResultNotificationService -import de.rki.coronawarnapp.risk.RiskState import de.rki.coronawarnapp.storage.TracingRepository import de.rki.coronawarnapp.submission.SubmissionRepository import de.rki.coronawarnapp.submission.ui.homecards.NoTest import de.rki.coronawarnapp.submission.ui.homecards.SubmissionStateProvider import de.rki.coronawarnapp.submission.ui.homecards.TestUnregisteredCard import de.rki.coronawarnapp.tracing.GeneralTracingStatus -import de.rki.coronawarnapp.tracing.TracingProgress -import de.rki.coronawarnapp.tracing.states.IncreasedRisk -import de.rki.coronawarnapp.tracing.states.LowRisk -import de.rki.coronawarnapp.tracing.states.TracingDisabled -import de.rki.coronawarnapp.tracing.states.TracingInProgress import de.rki.coronawarnapp.tracing.states.TracingStateProvider -import de.rki.coronawarnapp.tracing.ui.homecards.IncreasedRiskCard -import de.rki.coronawarnapp.tracing.ui.homecards.LowRiskCard -import de.rki.coronawarnapp.tracing.ui.homecards.TracingDisabledCard -import de.rki.coronawarnapp.tracing.ui.homecards.TracingProgressCard import de.rki.coronawarnapp.tracing.ui.homecards.TracingStateItem import de.rki.coronawarnapp.tracing.ui.statusbar.TracingHeaderState import de.rki.coronawarnapp.ui.main.home.items.DiaryCard import de.rki.coronawarnapp.ui.main.home.items.FAQCard -import de.rki.coronawarnapp.ui.main.home.items.HomeItem import de.rki.coronawarnapp.util.security.EncryptionErrorResetTool import de.rki.coronawarnapp.util.ui.SingleLiveEvent import io.mockk.MockKAnnotations @@ -40,7 +31,6 @@ import io.mockk.impl.annotations.MockK import io.mockk.just import io.mockk.spyk import io.mockk.verify -import org.joda.time.Instant import org.junit.After import org.junit.Before import org.junit.Rule @@ -52,6 +42,7 @@ import testhelpers.Screenshot import testhelpers.SystemUIDemoModeRule import testhelpers.TestDispatcherProvider import testhelpers.launchFragmentInContainer2 +import testhelpers.recyclerScrollTo import tools.fastlane.screengrab.Screengrab import tools.fastlane.screengrab.locale.LocaleTestRule @@ -80,21 +71,21 @@ class HomeFragmentTest : BaseUITest() { @Before fun setup() { MockKAnnotations.init(this, relaxed = true) - viewModel = homeFragmentViewModelSpy() - with(viewModel) { + every { observeTestResultToSchedulePositiveTestResultReminder() } just Runs + every { refreshRequiredData() } just Runs every { tracingHeaderState } returns MutableLiveData(TracingHeaderState.TracingActive) + every { showLoweredRiskLevelDialog } returns MutableLiveData() every { homeItems } returns MutableLiveData(emptyList()) - every { refreshRequiredData() } just Runs every { popupEvents } returns SingleLiveEvent() - every { showLoweredRiskLevelDialog } returns MutableLiveData() - every { observeTestResultToSchedulePositiveTestResultReminder() } just Runs } - setupMockViewModel(object : HomeFragmentViewModel.Factory { - override fun create(): HomeFragmentViewModel = viewModel - }) + setupMockViewModel( + object : HomeFragmentViewModel.Factory { + override fun create(): HomeFragmentViewModel = viewModel + } + ) } @After @@ -112,106 +103,45 @@ class HomeFragmentTest : BaseUITest() { @Screenshot @Test fun capture_screenshot_low_risk() { - val item = LowRiskCard.Item( - state = LowRisk( - riskState = RiskState.LOW_RISK, - isInDetailsMode = true, - lastExposureDetectionTime = Instant.now(), - allowManualUpdate = true, - daysWithEncounters = 1, - activeTracingDays = 1 - ), - onCardClick = {}, - onUpdateClick = {} - ) - - every { viewModel.homeItems } returns homeItemsLiveData(item) - launchFragmentInContainer2<HomeFragment>() - Thread.sleep(SCREENSHOT_DELAY_TIME) - Screengrab.screenshot(HomeFragment::class.simpleName) + every { viewModel.homeItems } returns itemsLiveData(HomeData.Tracing.lowRiskItem) + captureScreenshot() } @Screenshot @Test fun capture_screenshot_increased_risk() { - val item = IncreasedRiskCard.Item( - state = IncreasedRisk( - riskState = RiskState.INCREASED_RISK, - isInDetailsMode = true, - lastExposureDetectionTime = Instant.now(), - allowManualUpdate = true, - daysWithEncounters = 1, - activeTracingDays = 1, - lastEncounterAt = Instant.now() - ), - onCardClick = {}, - onUpdateClick = {} - ) - - every { viewModel.homeItems } returns homeItemsLiveData(item) - launchFragmentInContainer2<HomeFragment>() - Thread.sleep(SCREENSHOT_DELAY_TIME) - Screengrab.screenshot(HomeFragment::class.simpleName) + every { viewModel.homeItems } returns itemsLiveData(HomeData.Tracing.increasedRiskItem) + captureScreenshot() } @Screenshot @Test fun capture_screenshot_tracing_disabled() { - val item = TracingDisabledCard.Item( - state = TracingDisabled( - riskState = RiskState.LOW_RISK, - isInDetailsMode = true, - lastExposureDetectionTime = Instant.now() - ), - onCardClick = {}, - onEnableTracingClick = {} - ) - every { viewModel.tracingHeaderState } returns MutableLiveData(TracingHeaderState.TracingInActive) - every { viewModel.homeItems } returns homeItemsLiveData(item) - launchFragmentInContainer2<HomeFragment>() - Thread.sleep(SCREENSHOT_DELAY_TIME) - Screengrab.screenshot(HomeFragment::class.simpleName) + every { viewModel.homeItems } returns itemsLiveData(HomeData.Tracing.tracingDisabledItem) + captureScreenshot() } @Screenshot @Test fun capture_screenshot_tracing_progress_downloading() { - val item = TracingProgressCard.Item( - state = TracingInProgress( - riskState = RiskState.LOW_RISK, - isInDetailsMode = true, - tracingProgress = TracingProgress.Downloading - ), - onCardClick = {} - ) + every { viewModel.homeItems } returns itemsLiveData(HomeData.Tracing.tracingProgressItem) + captureScreenshot() + } - every { viewModel.homeItems } returns homeItemsLiveData(item) + private fun captureScreenshot() { + val simpleName = HomeFragment::class.simpleName launchFragmentInContainer2<HomeFragment>() Thread.sleep(SCREENSHOT_DELAY_TIME) - Screengrab.screenshot(HomeFragment::class.simpleName) - } + Screengrab.screenshot(simpleName) - @Screenshot - @Test - fun capture_screenshot_tracing_progress_ENFIsCalculating() { - val item = TracingProgressCard.Item( - state = TracingInProgress( - riskState = RiskState.INCREASED_RISK, - isInDetailsMode = true, - tracingProgress = TracingProgress.ENFIsCalculating - ), - onCardClick = {} - ) - - every { viewModel.homeItems } returns homeItemsLiveData(item) - launchFragmentInContainer2<HomeFragment>() + onView(withId(R.id.recycler_view)).perform(recyclerScrollTo()) Thread.sleep(SCREENSHOT_DELAY_TIME) - Screengrab.screenshot(HomeFragment::class.simpleName) + Screengrab.screenshot(simpleName.plus("2")) } - private fun homeItemsLiveData(tracingStateItem: TracingStateItem): MutableLiveData<List<HomeItem>> { - return MutableLiveData( + private fun itemsLiveData(tracingStateItem: TracingStateItem) = + MutableLiveData( listOf( tracingStateItem, TestUnregisteredCard.Item(NoTest, onClickAction = {}), @@ -219,7 +149,6 @@ class HomeFragmentTest : BaseUITest() { FAQCard.Item(onClickAction = { }) ) ) - } private fun homeFragmentViewModelSpy() = spyk( HomeFragmentViewModel( -- GitLab