Skip to content
Snippets Groups Projects
Commit 17ee1c74 authored by Oliver Zimmerman's avatar Oliver Zimmerman
Browse files

Began Unit and Instrumentation Tests

parent a0dc2154
No related branches found
No related tags found
No related merge requests found
package de.rki.coronawarnapp.ui.submission
import androidx.fragment.app.testing.launchFragment
import androidx.fragment.app.testing.launchFragmentInContainer
import androidx.lifecycle.MutableLiveData
import androidx.navigation.NavController
import androidx.navigation.Navigation
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions
import androidx.test.espresso.matcher.ViewMatchers
import androidx.test.ext.junit.runners.AndroidJUnit4
import dagger.Module
import dagger.android.ContributesAndroidInjector
import de.rki.coronawarnapp.R
import de.rki.coronawarnapp.ui.submission.testresult.SubmissionTestResultConsentGivenFragment
import de.rki.coronawarnapp.ui.submission.testresult.SubmissionTestResultConsentGivenViewModel
import de.rki.coronawarnapp.ui.submission.testresult.TestResultUIState
import io.mockk.MockKAnnotations
import io.mockk.every
import io.mockk.impl.annotations.MockK
import org.junit.After
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito.mock
import org.mockito.Mockito.verify
import testhelpers.BaseUITest
@RunWith(AndroidJUnit4::class)
class SubmissionTestResultConsentGivenFragmentTest : BaseUITest() {
@MockK lateinit var viewModel: SubmissionTestResultConsentGivenViewModel
@MockK lateinit var uiState: TestResultUIState
@Before
fun setup() {
MockKAnnotations.init(this, relaxed = true)
every { viewModel.uiState } returns MutableLiveData()
setupMockViewModel(object : SubmissionTestResultConsentGivenViewModel.Factory {
override fun create(): SubmissionTestResultConsentGivenViewModel = viewModel
})
}
@After
fun teardown() {
clearAllViewModels()
}
@Test
fun launch_fragment() {
launchFragment<SubmissionTestResultConsentGivenFragment>()
}
@Test
fun testEventConsentGivenContinueWithSymptomsClicked() {
val mockNavController = mock(NavController::class.java)
val scenario = launchFragmentInContainer<SubmissionTestResultConsentGivenFragment>()
scenario.onFragment { fragment ->
Navigation.setViewNavController(fragment.requireView(), mockNavController)
}
// Verify that performing a click prompts the correct Navigation action
onView(ViewMatchers.withId(R.id.submission_test_result_button_consent_given_continue)).perform(ViewActions.click())
verify(mockNavController).navigate(R.id.action_submissionTestResultConsentGivenFragment_to_submissionSymptomIntroductionFragment)
}
}
@Module
abstract class SubmissionTestResultConsentGivenTestModule {
@ContributesAndroidInjector
abstract fun submissionTestResultScreen(): SubmissionTestResultConsentGivenViewModel
}
...@@ -13,12 +13,13 @@ import de.rki.coronawarnapp.ui.submission.SubmissionDispatcherTestModule ...@@ -13,12 +13,13 @@ import de.rki.coronawarnapp.ui.submission.SubmissionDispatcherTestModule
import de.rki.coronawarnapp.ui.submission.SubmissionDoneTestModule import de.rki.coronawarnapp.ui.submission.SubmissionDoneTestModule
import de.rki.coronawarnapp.ui.submission.SubmissionIntroTestModule import de.rki.coronawarnapp.ui.submission.SubmissionIntroTestModule
import de.rki.coronawarnapp.ui.submission.SubmissionOtherWarningTestModule import de.rki.coronawarnapp.ui.submission.SubmissionOtherWarningTestModule
import de.rki.coronawarnapp.ui.submission.SubmissionQRInfoFragmentModule
import de.rki.coronawarnapp.ui.submission.SubmissionQRScanFragmentModule import de.rki.coronawarnapp.ui.submission.SubmissionQRScanFragmentModule
import de.rki.coronawarnapp.ui.submission.SubmissionSymptomCalendarFragmentTestModule import de.rki.coronawarnapp.ui.submission.SubmissionSymptomCalendarFragmentTestModule
import de.rki.coronawarnapp.ui.submission.SubmissionSymptomIntroFragmentTestModule import de.rki.coronawarnapp.ui.submission.SubmissionSymptomIntroFragmentTestModule
import de.rki.coronawarnapp.ui.submission.SubmissionTanTestModule import de.rki.coronawarnapp.ui.submission.SubmissionTanTestModule
import de.rki.coronawarnapp.ui.submission.SubmissionTestResultConsentGivenTestModule
import de.rki.coronawarnapp.ui.submission.SubmissionTestResultTestModule import de.rki.coronawarnapp.ui.submission.SubmissionTestResultTestModule
import de.rki.coronawarnapp.ui.submission.testresult.SubmissionTestResultConsentGivenModule
@Module( @Module(
includes = [ includes = [
...@@ -35,13 +36,14 @@ import de.rki.coronawarnapp.ui.submission.SubmissionTestResultTestModule ...@@ -35,13 +36,14 @@ import de.rki.coronawarnapp.ui.submission.SubmissionTestResultTestModule
SubmissionDispatcherTestModule::class, SubmissionDispatcherTestModule::class,
SubmissionTanTestModule::class, SubmissionTanTestModule::class,
SubmissionTestResultTestModule::class, SubmissionTestResultTestModule::class,
SubmissionTestResultConsentGivenTestModule::class,
SubmissionOtherWarningTestModule::class, SubmissionOtherWarningTestModule::class,
SubmissionSymptomIntroFragmentTestModule::class, SubmissionSymptomIntroFragmentTestModule::class,
SubmissionSymptomCalendarFragmentTestModule::class, SubmissionSymptomCalendarFragmentTestModule::class,
SubmissionContactTestModule::class, SubmissionContactTestModule::class,
SubmissionDoneTestModule::class, SubmissionDoneTestModule::class,
SubmissionQRInfoFragmentModule::class, SubmissionQRScanFragmentModule::class,
SubmissionQRScanFragmentModule::class SubmissionTestResultConsentGivenModule::class
] ]
) )
class FragmentTestModuleRegistrar class FragmentTestModuleRegistrar
...@@ -16,6 +16,8 @@ import de.rki.coronawarnapp.ui.submission.symptoms.introduction.SubmissionSympto ...@@ -16,6 +16,8 @@ import de.rki.coronawarnapp.ui.submission.symptoms.introduction.SubmissionSympto
import de.rki.coronawarnapp.ui.submission.symptoms.introduction.SubmissionSymptomIntroductionModule import de.rki.coronawarnapp.ui.submission.symptoms.introduction.SubmissionSymptomIntroductionModule
import de.rki.coronawarnapp.ui.submission.tan.SubmissionTanFragment import de.rki.coronawarnapp.ui.submission.tan.SubmissionTanFragment
import de.rki.coronawarnapp.ui.submission.tan.SubmissionTanModule import de.rki.coronawarnapp.ui.submission.tan.SubmissionTanModule
import de.rki.coronawarnapp.ui.submission.testresult.SubmissionTestResultConsentGivenFragment
import de.rki.coronawarnapp.ui.submission.testresult.SubmissionTestResultConsentGivenModule
import de.rki.coronawarnapp.ui.submission.testresult.SubmissionTestResultFragment import de.rki.coronawarnapp.ui.submission.testresult.SubmissionTestResultFragment
import de.rki.coronawarnapp.ui.submission.testresult.SubmissionTestResultModule import de.rki.coronawarnapp.ui.submission.testresult.SubmissionTestResultModule
import de.rki.coronawarnapp.ui.submission.warnothers.SubmissionResultPositiveOtherWarningFragment import de.rki.coronawarnapp.ui.submission.warnothers.SubmissionResultPositiveOtherWarningFragment
...@@ -62,4 +64,7 @@ internal abstract class SubmissionFragmentModule { ...@@ -62,4 +64,7 @@ internal abstract class SubmissionFragmentModule {
@ContributesAndroidInjector(modules = [SubmissionConsentModule::class]) @ContributesAndroidInjector(modules = [SubmissionConsentModule::class])
abstract fun submissionConsentScreen(): SubmissionConsentFragment abstract fun submissionConsentScreen(): SubmissionConsentFragment
@ContributesAndroidInjector(modules = [SubmissionTestResultConsentGivenModule::class])
abstract fun submissionTestResultConsentGivenScreen(): SubmissionTestResultConsentGivenFragment
} }
package de.rki.coronawarnapp.ui.submission.testresult
import androidx.lifecycle.MutableLiveData
import androidx.test.ext.junit.runners.AndroidJUnit4
import de.rki.coronawarnapp.ui.submission.viewmodel.SubmissionNavigationEvents
import io.kotest.matchers.shouldBe
import io.mockk.MockKAnnotations
import io.mockk.every
import io.mockk.impl.annotations.MockK
import org.junit.After
import org.junit.Before
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.junit.runner.RunWith
import testhelpers.BaseUITest
import testhelpers.extensions.InstantExecutorExtension
@RunWith(AndroidJUnit4::class)
class SubmissionTestResultConsentGivenViewModelTest : BaseUITest() {
@MockK lateinit var viewModel: SubmissionTestResultConsentGivenViewModel
@MockK lateinit var uiState: TestResultUIState
@Before
fun setup() {
MockKAnnotations.init(this, relaxed = true)
every { viewModel.uiState } returns MutableLiveData()
setupMockViewModel(object : SubmissionTestResultConsentGivenViewModel.Factory {
override fun create(): SubmissionTestResultConsentGivenViewModel = viewModel
})
}
@After
fun teardown() {
clearAllViewModels()
}
@Test
fun testOnConsentProvideSymptomsButtonClick() {
viewModel.onContinuePressed()
viewModel.routeToScreen.value shouldBe SubmissionNavigationEvents.NavigateToSymptomIntroduction
}
@Test
fun testOnCancelled() {
viewModel.cancelTestSubmission()
viewModel.routeToScreen.value shouldBe SubmissionNavigationEvents.NavigateToMainActivity
}
}
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