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 index bd3f9bd2fa861d2d46e4ab15051607a6e7b6282f..97a76ddf8297d79305f7382d0a3576c5fd0e30e2 100644 --- 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 @@ -33,12 +33,12 @@ import org.joda.time.Instant object HomeData { object Tracing { - val lowRiskItem = LowRiskCard.Item( + val LOW_RISK_ITEM = LowRiskCard.Item( state = LowRisk( riskState = RiskState.LOW_RISK, - isInDetailsMode = true, + isInDetailsMode = false, lastExposureDetectionTime = Instant.now(), - allowManualUpdate = true, + allowManualUpdate = false, daysWithEncounters = 1, activeTracingDays = 1 ), @@ -46,12 +46,12 @@ object HomeData { onUpdateClick = {} ) - val increasedRiskItem = IncreasedRiskCard.Item( + val INCREASED_RISK_ITEM = IncreasedRiskCard.Item( state = IncreasedRisk( riskState = RiskState.INCREASED_RISK, - isInDetailsMode = true, + isInDetailsMode = false, lastExposureDetectionTime = Instant.now(), - allowManualUpdate = true, + allowManualUpdate = false, daysWithEncounters = 1, activeTracingDays = 1, lastEncounterAt = Instant.now() @@ -60,29 +60,29 @@ object HomeData { onUpdateClick = {} ) - val tracingDisabledItem = TracingDisabledCard.Item( + val TRACING_DISABLED_ITEM = TracingDisabledCard.Item( state = TracingDisabled( riskState = RiskState.LOW_RISK, - isInDetailsMode = true, + isInDetailsMode = false, lastExposureDetectionTime = Instant.now() ), onCardClick = {}, onEnableTracingClick = {} ) - val tracingProgressItem = TracingProgressCard.Item( + val TRACING_PROGRESS_ITEM = TracingProgressCard.Item( state = TracingInProgress( riskState = RiskState.LOW_RISK, - isInDetailsMode = true, + isInDetailsMode = false, tracingProgress = TracingProgress.Downloading ), onCardClick = {} ) - val tracingFailedItem = TracingFailedCard.Item( + val TRACING_FAILED_ITEM = TracingFailedCard.Item( state = TracingFailed( riskState = RiskState.CALCULATION_FAILED, - isInDetailsMode = true, + isInDetailsMode = false, lastExposureDetectionTime = Instant.now() ), onCardClick = {}, @@ -91,41 +91,41 @@ object HomeData { } object Submission { - val testUnregisteredItem = TestUnregisteredCard.Item( + val TEST_UNREGISTERED_ITEM = TestUnregisteredCard.Item( state = NoTest, onClickAction = {} ) - val testFetchingItem = TestFetchingCard.Item( + val TEST_FETCHING_ITEM = TestFetchingCard.Item( state = FetchingResult ) - val testPositiveItem = TestPositiveCard.Item( + val TEST_POSITIVE_ITEM = TestPositiveCard.Item( state = TestPositive, onClickAction = {} ) - val testNegativeItem = TestNegativeCard.Item( + val TEST_NEGATIVE_ITEM = TestNegativeCard.Item( state = TestNegative, onClickAction = {} ) - val testInvalidItem = TestInvalidCard.Item( + val TEST_INVALID_ITEM = TestInvalidCard.Item( state = TestInvalid, onDeleteTest = {} ) - val testErrorItem = TestErrorCard.Item( + val TEST_ERROR_ITEM = TestErrorCard.Item( state = TestError, onDeleteTest = {} ) - val testPendingItem = TestPendingCard.Item( + val TEST_PENDING_ITEM = TestPendingCard.Item( state = TestPending, onClickAction = {} ) - val testSubmissionDoneItem = TestSubmissionDoneCard.Item( + val TEST_SUBMISSION_DONE_ITEM = TestSubmissionDoneCard.Item( state = SubmissionDone ) } 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 98cfdb7a57391329c33bf6c7c6a634104b697b7e..2561cfe65e88ae92da079e91b7ad63a59af453ce 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 @@ -1,6 +1,7 @@ package de.rki.coronawarnapp.ui.main.home import androidx.fragment.app.testing.launchFragment +import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.test.espresso.Espresso.onView import androidx.test.espresso.matcher.ViewMatchers.withId @@ -13,15 +14,17 @@ import de.rki.coronawarnapp.main.CWASettings import de.rki.coronawarnapp.notification.TestResultNotificationService 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.submission.ui.homecards.TestPositiveCard +import de.rki.coronawarnapp.submission.ui.homecards.TestResultItem +import de.rki.coronawarnapp.submission.ui.homecards.TestSubmissionDoneCard import de.rki.coronawarnapp.tracing.GeneralTracingStatus import de.rki.coronawarnapp.tracing.states.TracingStateProvider 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 @@ -43,6 +46,7 @@ import testhelpers.SystemUIDemoModeRule import testhelpers.TestDispatcherProvider import testhelpers.launchFragmentInContainer2 import testhelpers.recyclerScrollTo +import timber.log.Timber import tools.fastlane.screengrab.Screengrab import tools.fastlane.screengrab.locale.LocaleTestRule @@ -103,14 +107,22 @@ class HomeFragmentTest : BaseUITest() { @Screenshot @Test fun capture_screenshot_low_risk() { - every { viewModel.homeItems } returns itemsLiveData(HomeData.Tracing.lowRiskItem) + every { viewModel.homeItems } returns itemsLiveData( + HomeData.Tracing.LOW_RISK_ITEM + ) + captureScreenshot() + onView(withId(R.id.recycler_view)).perform(recyclerScrollTo()) + Thread.sleep(SCREENSHOT_DELAY_TIME) + Screengrab.screenshot(HomeFragment::class.simpleName.plus("2")) } @Screenshot @Test fun capture_screenshot_increased_risk() { - every { viewModel.homeItems } returns itemsLiveData(HomeData.Tracing.increasedRiskItem) + every { viewModel.homeItems } returns itemsLiveData( + HomeData.Tracing.INCREASED_RISK_ITEM + ) captureScreenshot() } @@ -118,14 +130,90 @@ class HomeFragmentTest : BaseUITest() { @Test fun capture_screenshot_tracing_disabled() { every { viewModel.tracingHeaderState } returns MutableLiveData(TracingHeaderState.TracingInActive) - every { viewModel.homeItems } returns itemsLiveData(HomeData.Tracing.tracingDisabledItem) + every { viewModel.homeItems } returns itemsLiveData( + HomeData.Tracing.TRACING_DISABLED_ITEM + ) captureScreenshot() } @Screenshot @Test fun capture_screenshot_tracing_progress_downloading() { - every { viewModel.homeItems } returns itemsLiveData(HomeData.Tracing.tracingProgressItem) + every { viewModel.homeItems } returns itemsLiveData( + HomeData.Tracing.TRACING_PROGRESS_ITEM + ) + captureScreenshot() + } + + @Screenshot + @Test + fun capture_screenshot_tracing_failed() { + every { viewModel.homeItems } returns itemsLiveData( + HomeData.Tracing.TRACING_FAILED_ITEM + ) + captureScreenshot() + } + + @Screenshot + @Test + fun capture_screenshot_test_submission_done() { + every { viewModel.homeItems } returns itemsLiveData( + submissionTestResultItem = HomeData.Submission.TEST_SUBMISSION_DONE_ITEM + ) + captureScreenshot() + } + + @Screenshot + @Test + fun capture_screenshot_test_error() { + every { viewModel.homeItems } returns itemsLiveData( + submissionTestResultItem = HomeData.Submission.TEST_ERROR_ITEM + ) + captureScreenshot() + } + + @Screenshot + @Test + fun capture_screenshot_test_fetching() { + every { viewModel.homeItems } returns itemsLiveData( + submissionTestResultItem = HomeData.Submission.TEST_FETCHING_ITEM + ) + captureScreenshot() + } + + @Screenshot + @Test + fun capture_screenshot_test_invalid() { + every { viewModel.homeItems } returns itemsLiveData( + submissionTestResultItem = HomeData.Submission.TEST_INVALID_ITEM + ) + captureScreenshot() + } + + @Screenshot + @Test + fun capture_screenshot_test_negative() { + every { viewModel.homeItems } returns itemsLiveData( + submissionTestResultItem = HomeData.Submission.TEST_NEGATIVE_ITEM + ) + captureScreenshot() + } + + @Screenshot + @Test + fun capture_screenshot_test_positive() { + every { viewModel.homeItems } returns itemsLiveData( + submissionTestResultItem = HomeData.Submission.TEST_POSITIVE_ITEM + ) + captureScreenshot() + } + + @Screenshot + @Test + fun capture_screenshot_test_pending() { + every { viewModel.homeItems } returns itemsLiveData( + submissionTestResultItem = HomeData.Submission.TEST_PENDING_ITEM + ) captureScreenshot() } @@ -134,20 +222,26 @@ class HomeFragmentTest : BaseUITest() { launchFragmentInContainer2<HomeFragment>() Thread.sleep(SCREENSHOT_DELAY_TIME) Screengrab.screenshot(simpleName) - - onView(withId(R.id.recycler_view)).perform(recyclerScrollTo()) - Thread.sleep(SCREENSHOT_DELAY_TIME) - Screengrab.screenshot(simpleName.plus("2")) } - private fun itemsLiveData(tracingStateItem: TracingStateItem) = + private fun itemsLiveData( + tracingStateItem: TracingStateItem = HomeData.Tracing.LOW_RISK_ITEM, + submissionTestResultItem: TestResultItem = HomeData.Submission.TEST_UNREGISTERED_ITEM + ): LiveData<List<HomeItem>> = MutableLiveData( - listOf( - tracingStateItem, - TestUnregisteredCard.Item(NoTest, onClickAction = {}), - DiaryCard.Item(onClickAction = { }), - FAQCard.Item(onClickAction = { }) - ) + mutableListOf<HomeItem>().apply { + when (submissionTestResultItem) { + is TestSubmissionDoneCard.Item, + is TestPositiveCard.Item -> { + Timber.d("Tracing item is not added, submission:$submissionTestResultItem") + } + else -> add(tracingStateItem) + } + + add(submissionTestResultItem) + add(DiaryCard.Item {}) + add(FAQCard.Item {}) + } ) private fun homeFragmentViewModelSpy() = spyk(