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

Add edit screens tests

parent b7c903e2
No related branches found
No related tags found
No related merge requests found
package de.rki.coronawarnapp.ui.contactdiary
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.edit.ContactDiaryEditLocationsFragment
import de.rki.coronawarnapp.contactdiary.ui.edit.ContactDiaryEditLocationsViewModel
import de.rki.coronawarnapp.ui.contactdiary.DiaryData.LOCATIONS_EDIT_LIST
import io.mockk.MockKAnnotations
import io.mockk.every
import io.mockk.impl.annotations.MockK
import io.mockk.spyk
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 ContactDiaryEditLocationsFragmentTest : BaseUITest() {
@Rule
@JvmField
val localeTestRule = LocaleTestRule()
@get:Rule
val systemUIDemoModeRule = SystemUIDemoModeRule()
@MockK lateinit var contactDiaryRepository: ContactDiaryRepository
private lateinit var viewModel: ContactDiaryEditLocationsViewModel
@Before
fun setUp() {
MockKAnnotations.init(this, relaxed = true)
viewModel = spyk(
ContactDiaryEditLocationsViewModel(
contactDiaryRepository,
TestDispatcherProvider
)
)
setupMockViewModel(
object : ContactDiaryEditLocationsViewModel.Factory {
override fun create(): ContactDiaryEditLocationsViewModel = viewModel
}
)
}
@After
fun tearDown() {
clearAllViewModels()
}
@Test
fun launch_fragment() {
launchFragment2<ContactDiaryEditLocationsFragment>()
}
@Screenshot
@Test
fun capture_screenshot() {
every { viewModel.locationsLiveData } returns MutableLiveData(LOCATIONS_EDIT_LIST)
launchFragmentInContainer2<ContactDiaryEditLocationsFragment>()
Thread.sleep(SCREENSHOT_DELAY_TIME)
Screengrab.screenshot(ContactDiaryEditLocationsFragment::class.simpleName)
}
}
@Module
abstract class ContactDiaryEditLocationsFragmentTestModule {
@ContributesAndroidInjector
abstract fun contactDiaryEditLocationsFragment(): ContactDiaryEditLocationsFragment
}
\ No newline at end of file
package de.rki.coronawarnapp.ui.contactdiary
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.edit.ContactDiaryEditPersonsFragment
import de.rki.coronawarnapp.contactdiary.ui.edit.ContactDiaryEditPersonsViewModel
import de.rki.coronawarnapp.ui.contactdiary.DiaryData.PERSONS_EDIT_LIST
import io.mockk.MockKAnnotations
import io.mockk.every
import io.mockk.impl.annotations.MockK
import io.mockk.spyk
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 ContactDiaryEditPersonsFragmentTest : BaseUITest() {
@Rule
@JvmField
val localeTestRule = LocaleTestRule()
@get:Rule
val systemUIDemoModeRule = SystemUIDemoModeRule()
@MockK lateinit var contactDiaryRepository: ContactDiaryRepository
private lateinit var viewModel: ContactDiaryEditPersonsViewModel
@Before
fun setUp() {
MockKAnnotations.init(this, relaxed = true)
viewModel = spyk(
ContactDiaryEditPersonsViewModel(
contactDiaryRepository,
TestDispatcherProvider
)
)
setupMockViewModel(
object : ContactDiaryEditPersonsViewModel.Factory {
override fun create(): ContactDiaryEditPersonsViewModel = viewModel
}
)
}
@After
fun tearDown() {
clearAllViewModels()
}
@Test
fun launch_fragment() {
launchFragment2<ContactDiaryEditPersonsFragment>()
}
@Screenshot
@Test
fun capture_screenshot() {
every { viewModel.personsLiveData } returns MutableLiveData(PERSONS_EDIT_LIST)
launchFragmentInContainer2<ContactDiaryEditPersonsFragment>()
Thread.sleep(SCREENSHOT_DELAY_TIME)
Screengrab.screenshot(ContactDiaryEditPersonsFragment::class.simpleName)
}
}
@Module
abstract class ContactDiaryEditPersonsFragmentTestModule {
@ContributesAndroidInjector
abstract fun contactDiaryEditPersonsFragment(): ContactDiaryEditPersonsFragment
}
......@@ -86,4 +86,16 @@ object DiaryData {
onClickLabel = R.string.accessibility_person
)
)
val LOCATIONS_EDIT_LIST: List<ContactDiaryLocation> = listOf(
DefaultContactDiaryLocation(locationName = "Sport"),
DefaultContactDiaryLocation(locationName = "Büro"),
DefaultContactDiaryLocation(locationName = "Supermarkt"),
)
val PERSONS_EDIT_LIST: List<ContactDiaryPerson> = listOf(
DefaultContactDiaryPerson(fullName = "Max Mustermann"),
DefaultContactDiaryPerson(fullName = "Erika Mustermann"),
DefaultContactDiaryPerson(fullName = "John Doe")
)
}
......@@ -2,6 +2,8 @@ package testhelpers
import dagger.Module
import de.rki.coronawarnapp.ui.contactdiary.ContactDiaryDayFragmentTestModule
import de.rki.coronawarnapp.ui.contactdiary.ContactDiaryEditLocationsFragmentTestModule
import de.rki.coronawarnapp.ui.contactdiary.ContactDiaryEditPersonsFragmentTestModule
import de.rki.coronawarnapp.ui.contactdiary.ContactDiaryLocationListFragmentTestModule
import de.rki.coronawarnapp.ui.contactdiary.ContactDiaryOnboardingFragmentTestModule
import de.rki.coronawarnapp.ui.contactdiary.ContactDiaryOverviewFragmentTestModule
......@@ -48,7 +50,9 @@ import de.rki.coronawarnapp.ui.tracing.TracingDetailsFragmentTestTestModule
ContactDiaryOverviewFragmentTestModule::class,
ContactDiaryDayFragmentTestModule::class,
ContactDiaryPersonListFragmentTestModule::class,
ContactDiaryLocationListFragmentTestModule::class
ContactDiaryLocationListFragmentTestModule::class,
ContactDiaryEditLocationsFragmentTestModule::class,
ContactDiaryEditPersonsFragmentTestModule::class
]
)
class FragmentTestModuleRegistrar
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