diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/vaccination/ui/details/VaccinationDetailsFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/vaccination/ui/details/VaccinationDetailsFragmentTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..4546bcb9f75957af312ac0744d3554b5d504ae27 --- /dev/null +++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/vaccination/ui/details/VaccinationDetailsFragmentTest.kt @@ -0,0 +1,103 @@ +package de.rki.coronawarnapp.vaccination.ui.details + +import androidx.lifecycle.MutableLiveData +import androidx.test.ext.junit.runners.AndroidJUnit4 +import dagger.Module +import dagger.android.ContributesAndroidInjector +import de.rki.coronawarnapp.ui.Country +import de.rki.coronawarnapp.vaccination.core.VaccinationCertificate +import io.mockk.MockKAnnotations +import io.mockk.every +import io.mockk.impl.annotations.MockK +import io.mockk.mockk +import org.joda.time.LocalDate +import org.joda.time.format.DateTimeFormat +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 +import testhelpers.SystemUIDemoModeRule +import testhelpers.launchFragment2 +import testhelpers.launchFragmentInContainer2 +import testhelpers.takeScreenshot +import tools.fastlane.screengrab.locale.LocaleTestRule + +@RunWith(AndroidJUnit4::class) +class VaccinationDetailsFragmentTest : BaseUITest() { + + @MockK lateinit var vaccinationDetailsViewModel: VaccinationDetailsViewModel + + @Rule + @JvmField + val localeTestRule = LocaleTestRule() + + @get:Rule + val systemUIDemoModeRule = SystemUIDemoModeRule() + + private val args = VaccinationDetailsFragmentArgs("vaccinationCertificateId").toBundle() + + @Before + fun setUp() { + MockKAnnotations.init(this, relaxed = true) + + setupMockViewModel( + object : VaccinationDetailsViewModel.Factory { + override fun create(certificateId: String): VaccinationDetailsViewModel = vaccinationDetailsViewModel + } + ) + } + + @Test + fun launch_fragment() { + launchFragment2<VaccinationDetailsFragment>(fragmentArgs = args) + } + + @Screenshot + @Test + fun capture_screenshot_complete() { + every { vaccinationDetailsViewModel.vaccinationCertificate } returns vaccinationDetailsData(true) + launchFragmentInContainer2<VaccinationDetailsFragment>(fragmentArgs = args) + takeScreenshot<VaccinationDetailsFragment>("complete") + } + + @Screenshot + @Test + fun capture_screenshot_incomplete() { + every { vaccinationDetailsViewModel.vaccinationCertificate } returns vaccinationDetailsData(false) + launchFragmentInContainer2<VaccinationDetailsFragment>(fragmentArgs = args) + takeScreenshot<VaccinationDetailsFragment>("incomplete") + } + + private fun vaccinationDetailsData(complete: Boolean): MutableLiveData<VaccinationDetails> { + val formatter = DateTimeFormat.forPattern("dd.MM.yyyy") + val mockCertificate = mockk<VaccinationCertificate>().apply { + every { firstName } returns "Max" + every { lastName } returns "Mustermann" + every { dateOfBirth } returns LocalDate.parse("01.02.1976", formatter) + every { vaccinatedAt } returns LocalDate.parse("01.05.2021", formatter) + every { vaccineName } returns "Comirnaty (mRNA)" + every { vaccineManufacturer } returns "BioNTech" + every { certificateIssuer } returns "Landratsamt Musterstadt" + every { certificateCountry } returns Country.DE + every { certificateId } returns "05930482748454836478695764787841" + } + + return MutableLiveData( + VaccinationDetails(mockCertificate, complete) + ) + } + + @After + fun tearDown() { + clearAllViewModels() + } +} + +@Module +abstract class VaccinationDetailsFragmentTestModule { + @ContributesAndroidInjector + abstract fun vaccinationDetailsFragment(): VaccinationDetailsFragment +} diff --git a/Corona-Warn-App/src/androidTest/java/testhelpers/FragmentTestModuleRegistrar.kt b/Corona-Warn-App/src/androidTest/java/testhelpers/FragmentTestModuleRegistrar.kt index 5f3cabbfcacfc6f5c44078480bc4dfcff0651fde..038042a5810542131a3ebe6ccb8f898fb435a572 100644 --- a/Corona-Warn-App/src/androidTest/java/testhelpers/FragmentTestModuleRegistrar.kt +++ b/Corona-Warn-App/src/androidTest/java/testhelpers/FragmentTestModuleRegistrar.kt @@ -36,6 +36,7 @@ import de.rki.coronawarnapp.ui.submission.SubmissionTestResultTestModule import de.rki.coronawarnapp.ui.submission.SubmissionTestResultTestNegativeModule import de.rki.coronawarnapp.ui.submission.SubmissionYourConsentFragmentTestModule import de.rki.coronawarnapp.ui.tracing.TracingDetailsFragmentTestTestModule +import de.rki.coronawarnapp.vaccination.ui.details.VaccinationDetailsFragmentTestModule @Module( includes = [ @@ -78,10 +79,12 @@ import de.rki.coronawarnapp.ui.tracing.TracingDetailsFragmentTestTestModule // Bugreporting DebugLogUploadTestModule::class, DebugLogTestModule::class, - // Event Registration + // Presence tracing CreateEventTestModule::class, TraceLocationsFragmentTestModule::class, - QrCodeDetailFragmentTestModule::class + QrCodeDetailFragmentTestModule::class, + // Vaccination Passport + VaccinationDetailsFragmentTestModule::class, ] ) class FragmentTestModuleRegistrar diff --git a/Corona-Warn-App/src/androidTest/java/testhelpers/ScreenShotter.kt b/Corona-Warn-App/src/androidTest/java/testhelpers/ScreenShotter.kt index b189086d8e18ecd94f81b614b2bbe28d9f7ea922..c5002121e6e91c55d63de8968a335686f51e531c 100644 --- a/Corona-Warn-App/src/androidTest/java/testhelpers/ScreenShotter.kt +++ b/Corona-Warn-App/src/androidTest/java/testhelpers/ScreenShotter.kt @@ -3,14 +3,11 @@ package testhelpers import android.app.Activity import android.graphics.Bitmap import android.os.Bundle -import android.provider.Settings import android.util.Log import androidx.annotation.StyleRes import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentFactory import androidx.test.espresso.ViewAction -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation import de.rki.coronawarnapp.R import tools.fastlane.screengrab.Screengrab import tools.fastlane.screengrab.ScreenshotCallback @@ -29,19 +26,11 @@ inline fun <reified T> takeScreenshot(suffix: String = "", delay: Long = SCREENS Thread.sleep(delay) val simpleName = T::class.simpleName val name = if (suffix.isEmpty()) simpleName else simpleName.plus("_$suffix") - - val contentResolver = getInstrumentation().targetContext.contentResolver - val testLabSetting = Settings.System.getString(contentResolver, "firebase.test.lab") - val androidStudioMode = InstrumentationRegistry.getArguments().getString("androidStudioMode") - if ("true" in listOf(testLabSetting, androidStudioMode)) { - Screengrab.screenshot( - name, - UiAutomatorScreenshotStrategy(), - SDCardCallback - ) - } else { - Screengrab.screenshot(name) - } + Screengrab.screenshot( + name, + UiAutomatorScreenshotStrategy(), + SDCardCallback + ) } /** diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/details/VaccinationDetailsFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/details/VaccinationDetailsFragment.kt index eb7be530e7fe4dce45c176839ce921b699a9c292..6c2a4473d72eb5e84b0be8536021037ea9fefe91 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/details/VaccinationDetailsFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/details/VaccinationDetailsFragment.kt @@ -87,7 +87,6 @@ class VaccinationDetailsFragment : Fragment(R.layout.fragment_vaccination_detail vaccinatedAt.text = certificate.vaccinatedAt.toString(format) vaccineName.text = certificate.vaccineName vaccineManufacturer.text = certificate.vaccineManufacturer - chargeId.text = "Removed?" certificateIssuer.text = certificate.certificateIssuer certificateCountry.text = certificate.certificateCountry.getLabel(requireContext()) certificateId.text = certificate.certificateId @@ -108,6 +107,6 @@ class VaccinationDetailsFragment : Fragment(R.layout.fragment_vaccination_detail } companion object { - private val format = DateTimeFormat.shortDate() + private val format = DateTimeFormat.forPattern("dd.MM.yyyy") } } diff --git a/Corona-Warn-App/src/main/res/layout/fragment_vaccination_details.xml b/Corona-Warn-App/src/main/res/layout/fragment_vaccination_details.xml index f1d7cbde9fc1a1ed0ef46de3c6b0678db1d8b0cf..63afd133b29e9a31867c1bc09d5412fe9e928de4 100644 --- a/Corona-Warn-App/src/main/res/layout/fragment_vaccination_details.xml +++ b/Corona-Warn-App/src/main/res/layout/fragment_vaccination_details.xml @@ -176,21 +176,6 @@ android:layout_marginTop="4dp" tools:text="BioNTech" /> - <TextView - style="@style/body1" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="24dp" - android:text="@string/vaccination_details_charge_id" /> - - <TextView - android:id="@+id/charge_id" - style="@style/body2Medium" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="4dp" - tools:text="CB2342" /> - <TextView style="@style/body1" android:layout_width="match_parent" diff --git a/Corona-Warn-App/src/main/res/values-de/vaccination_strings.xml b/Corona-Warn-App/src/main/res/values-de/vaccination_strings.xml index eddd3eb493c5fbebba18a8343cd7297b5f7726fd..a84d67249fe2c00b75a6020f19bae7a9abe91b5a 100644 --- a/Corona-Warn-App/src/main/res/values-de/vaccination_strings.xml +++ b/Corona-Warn-App/src/main/res/values-de/vaccination_strings.xml @@ -8,8 +8,6 @@ <string name="vaccination_details_vaccine_name">Impfstoff</string> <!-- XTXT: Vaccination Details vaccine manufacturer --> <string name="vaccination_details_vaccine_manufacturer">Hersteller</string> - <!-- XTXT: Vaccination Details certificate charge id --> - <string name="vaccination_details_charge_id">Chargennummer</string> <!-- XTXT: Vaccination Details certificate issuer --> <string name="vaccination_details_certificate_issuer">Aussteller</string> <!-- XTXT: Vaccination Details certificate country --> diff --git a/Corona-Warn-App/src/main/res/values/vaccination_strings.xml b/Corona-Warn-App/src/main/res/values/vaccination_strings.xml index a66655b27ed3ce733c184a4f529a645951384e53..63c692c41be0cca8f8c5ee287abb3873360ffb49 100644 --- a/Corona-Warn-App/src/main/res/values/vaccination_strings.xml +++ b/Corona-Warn-App/src/main/res/values/vaccination_strings.xml @@ -8,8 +8,6 @@ <string name="vaccination_details_vaccine_name">Impfstoff</string> <!-- XTXT: Vaccination Details vaccine manufacturer --> <string name="vaccination_details_vaccine_manufacturer">Hersteller</string> - <!-- XTXT: Vaccination Details certificate charge id --> - <string name="vaccination_details_charge_id">Chargennummer</string> <!-- XTXT: Vaccination Details certificate issuer --> <string name="vaccination_details_certificate_issuer">Aussteller</string> <!-- XTXT: Vaccination Details certificate country -->