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

Add contact dairy overview screenshot test

parent b83a912b
No related branches found
No related tags found
No related merge requests found
......@@ -12,8 +12,12 @@ import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import testhelpers.BaseUITest
import testhelpers.SCREENSHOT_DELAY_TIME
import testhelpers.Screenshot
import testhelpers.SystemUIDemoModeRule
import testhelpers.launchFragment2
import testhelpers.launchFragmentInContainer2
import tools.fastlane.screengrab.Screengrab
import tools.fastlane.screengrab.locale.LocaleTestRule
@RunWith(AndroidJUnit4::class)
......@@ -46,6 +50,14 @@ class ContactDiaryOnboardingFragmentTest : BaseUITest() {
fun launch_fragment() {
launchFragment2<ContactDiaryOnboardingFragment>()
}
@Screenshot
@Test
fun capture_screenshot() {
launchFragmentInContainer2<ContactDiaryOnboardingFragment>()
Thread.sleep(SCREENSHOT_DELAY_TIME)
Screengrab.screenshot(ContactDiaryOnboardingFragment::class.simpleName)
}
}
@Module
......
package de.rki.coronawarnapp.ui.contactdiary
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.test.ext.junit.runners.AndroidJUnit4
import dagger.Module
import dagger.android.ContributesAndroidInjector
import de.rki.coronawarnapp.contactdiary.storage.repo.ContactDiaryRepository
import de.rki.coronawarnapp.contactdiary.ui.overview.ContactDiaryOverviewFragment
import de.rki.coronawarnapp.contactdiary.ui.overview.ContactDiaryOverviewViewModel
import de.rki.coronawarnapp.contactdiary.ui.overview.adapter.ListItem
import de.rki.coronawarnapp.task.TaskController
import io.mockk.MockKAnnotations
import io.mockk.every
import io.mockk.impl.annotations.MockK
import io.mockk.spyk
import org.joda.time.LocalDate
import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import testhelpers.BaseUITest
import testhelpers.SCREENSHOT_DELAY_TIME
import testhelpers.Screenshot
import testhelpers.SystemUIDemoModeRule
import testhelpers.TestDispatcherProvider
import testhelpers.launchFragment2
import testhelpers.launchFragmentInContainer2
import tools.fastlane.screengrab.Screengrab
import tools.fastlane.screengrab.locale.LocaleTestRule
@RunWith(AndroidJUnit4::class)
class ContactDiaryOverviewFragmentTest : BaseUITest() {
@Rule
@JvmField
val localeTestRule = LocaleTestRule()
@get:Rule
val systemUIDemoModeRule = SystemUIDemoModeRule()
@MockK lateinit var taskController: TaskController
@MockK lateinit var contactDiaryRepository: ContactDiaryRepository
private lateinit var viewModel: ContactDiaryOverviewViewModel
@Before
fun setup() {
MockKAnnotations.init(this, relaxed = true)
viewModel = spyk(
ContactDiaryOverviewViewModel(
taskController = taskController,
dispatcherProvider = TestDispatcherProvider,
contactDiaryRepository = contactDiaryRepository
)
)
setupMockViewModel(
object : ContactDiaryOverviewViewModel.Factory {
override fun create(): ContactDiaryOverviewViewModel = viewModel
}
)
}
@After
fun teardown() {
clearAllViewModels()
}
@Test
fun launch_fragment() {
launchFragment2<ContactDiaryOverviewFragment>()
}
@Screenshot
@Test
fun capture_screenshot() {
every { viewModel.listItems } returns itemLiveData()
launchFragmentInContainer2<ContactDiaryOverviewFragment>()
Thread.sleep(SCREENSHOT_DELAY_TIME)
Screengrab.screenshot(ContactDiaryOverviewFragment::class.simpleName)
}
private fun itemLiveData(): LiveData<List<ListItem>> =
MutableLiveData(
(0 until ContactDiaryOverviewViewModel.DAY_COUNT)
.map { LocalDate.now().minusDays(it) }
.map {
ListItem(it)
}
)
}
@Module
abstract class ContactDiaryOverviewFragmentTestModule {
@ContributesAndroidInjector
abstract fun contactContactDiaryOverviewFragment(): ContactDiaryOverviewFragment
}
......@@ -2,6 +2,7 @@ package testhelpers
import dagger.Module
import de.rki.coronawarnapp.ui.contactdiary.ContactDiaryOnboardingFragmentTestModule
import de.rki.coronawarnapp.ui.contactdiary.ContactDiaryOverviewFragmentTestModule
import de.rki.coronawarnapp.ui.main.home.HomeFragmentTestModule
import de.rki.coronawarnapp.ui.onboarding.OnboardingDeltaInteroperabilityFragmentTestModule
import de.rki.coronawarnapp.ui.onboarding.OnboardingFragmentTestModule
......@@ -36,7 +37,8 @@ import de.rki.coronawarnapp.ui.submission.SubmissionTestResultTestModule
SubmissionContactTestModule::class,
SubmissionQRScanFragmentModule::class,
// Contact Diary
ContactDiaryOnboardingFragmentTestModule::class
ContactDiaryOnboardingFragmentTestModule::class,
ContactDiaryOverviewFragmentTestModule::class
]
)
class FragmentTestModuleRegistrar
......@@ -7,6 +7,8 @@ import androidx.fragment.app.FragmentFactory
import androidx.fragment.app.testing.FragmentScenario
import de.rki.coronawarnapp.R
const val SCREENSHOT_DELAY_TIME = 2000L
/**
* Launches Fragment in Activity root container.
* Same as [androidx.fragment.app.testing.launchFragmentInContainer] except that it defaults
......
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