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

Extract test data

parent 7b53b939
No related branches found
No related tags found
No related merge requests found
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 {
}
}
......@@ -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(
......
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