Skip to content
Snippets Groups Projects
Unverified Commit f725830d authored by axelherbstreith's avatar axelherbstreith Committed by GitHub
Browse files

Technical-Support-Function Screenshots (EXPOSUREAPP-5033) (#2612)


* Added basic screenshots

* added screenshots for active and inactive logging

* refactoring

* linting

* removed empty lines

Co-authored-by: default avatarMatthias Urhahn <matthias.urhahn@sap.com>
Co-authored-by: default avatarRalf Gehrer <ralfgehrer@users.noreply.github.com>
parent 4937ffc2
No related branches found
No related tags found
No related merge requests found
package de.rki.coronawarnapp.bugreporting
import android.content.ContentResolver
import androidx.lifecycle.MutableLiveData
import androidx.test.ext.junit.runners.AndroidJUnit4
import dagger.Module
import dagger.android.ContributesAndroidInjector
import de.rki.coronawarnapp.bugreporting.debuglog.DebugLogger
import de.rki.coronawarnapp.bugreporting.debuglog.export.SAFLogExport
import de.rki.coronawarnapp.bugreporting.debuglog.internal.LogSnapshotter
import de.rki.coronawarnapp.bugreporting.debuglog.ui.DebugLogFragment
import de.rki.coronawarnapp.bugreporting.debuglog.ui.DebugLogViewModel
import de.rki.coronawarnapp.nearby.ENFClient
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
import testhelpers.SystemUIDemoModeRule
import testhelpers.TestDispatcherProvider
import testhelpers.launchFragment2
import testhelpers.launchFragmentInContainer2
import testhelpers.takeScreenshot
import tools.fastlane.screengrab.locale.LocaleTestRule
@RunWith(AndroidJUnit4::class)
class DebugLogFragmentTest : BaseUITest() {
@MockK lateinit var debugLogger: DebugLogger
@MockK lateinit var enfClient: ENFClient
@MockK lateinit var bugReportingSettings: BugReportingSettings
@MockK lateinit var logSnapshotter: LogSnapshotter
@MockK lateinit var safLogExport: SAFLogExport
@MockK lateinit var contentResolver: ContentResolver
private lateinit var inactiveViewModel: DebugLogViewModel
private lateinit var activeViewModel: DebugLogViewModel
@Rule
@JvmField
val localeTestRule = LocaleTestRule()
@get:Rule
val systemUIDemoModeRule = SystemUIDemoModeRule()
@Before
fun setup() {
MockKAnnotations.init(this, relaxed = true)
inactiveViewModel = setupViewModels(false, 0)
activeViewModel = setupViewModels(true, 9410 )
setupMockViewModel(
object : DebugLogViewModel.Factory {
override fun create(): DebugLogViewModel = inactiveViewModel
}
)
}
@After
fun teardown() {
clearAllViewModels()
}
@Test
fun launch_fragment() {
launchFragment2<DebugLogFragment>()
}
@Screenshot
@Test
fun capture_inactive_screenshot() {
launchFragmentInContainer2<DebugLogFragment>()
takeScreenshot<DebugLogFragment>()
}
@Screenshot
@Test
fun capture_active_screenshot() {
setupMockViewModel(
object : DebugLogViewModel.Factory {
override fun create(): DebugLogViewModel = activeViewModel
}
)
launchFragmentInContainer2<DebugLogFragment>()
takeScreenshot<DebugLogFragment>()
}
private fun setupViewModels(
isRecording: Boolean,
currentSize: Long,
isLowStorage: Boolean = false,
isActionInProgress: Boolean = false,
): DebugLogViewModel {
val vm = spyk(
DebugLogViewModel(
debugLogger,
TestDispatcherProvider(),
enfClient,
bugReportingSettings,
logSnapshotter,
safLogExport,
contentResolver
)
)
with(vm) {
every { state } returns MutableLiveData(
DebugLogViewModel.State(
isRecording = isRecording,
currentSize = currentSize,
isLowStorage = isLowStorage,
isActionInProgress = isActionInProgress
)
)
}
return vm
}
}
@Module
abstract class DebugLogTestModule {
@ContributesAndroidInjector
abstract fun debugLogFragment(): DebugLogFragment
}
package de.rki.coronawarnapp.bugreporting
import androidx.test.ext.junit.runners.AndroidJUnit4
import dagger.Module
import dagger.android.ContributesAndroidInjector
import de.rki.coronawarnapp.bugreporting.debuglog.ui.upload.DebugLogUploadFragment
import de.rki.coronawarnapp.bugreporting.debuglog.ui.upload.DebugLogUploadViewModel
import de.rki.coronawarnapp.bugreporting.debuglog.upload.SnapshotUploader
import io.mockk.MockKAnnotations
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
import testhelpers.SystemUIDemoModeRule
import testhelpers.TestDispatcherProvider
import testhelpers.launchFragment2
import testhelpers.launchFragmentInContainer2
import testhelpers.takeScreenshot
import tools.fastlane.screengrab.locale.LocaleTestRule
@RunWith(AndroidJUnit4::class)
class DebugLogUploadFragmentTest : BaseUITest() {
@MockK lateinit var snapShotUploader: SnapshotUploader
@Rule
@JvmField
val localeTestRule = LocaleTestRule()
@get:Rule
val systemUIDemoModeRule = SystemUIDemoModeRule()
private lateinit var viewModel: DebugLogUploadViewModel
@Before
fun setup() {
MockKAnnotations.init(this, relaxed = true)
viewModel = spyk(
DebugLogUploadViewModel(
TestDispatcherProvider(),
snapShotUploader
)
)
setupMockViewModel(
object : DebugLogUploadViewModel.Factory {
override fun create(): DebugLogUploadViewModel = viewModel
}
)
}
@After
fun teardown() {
clearAllViewModels()
}
@Test
fun launch_fragment() {
launchFragment2<DebugLogUploadFragment>()
}
@Screenshot
@Test
fun capture_screenshot() {
launchFragmentInContainer2<DebugLogUploadFragment>()
takeScreenshot<DebugLogUploadFragment>()
}
}
@Module
abstract class DebugLogUploadTestModule {
@ContributesAndroidInjector
abstract fun debugLogUploadFragment(): DebugLogUploadFragment
}
package testhelpers
import dagger.Module
import de.rki.coronawarnapp.bugreporting.DebugLogTestModule
import de.rki.coronawarnapp.bugreporting.DebugLogUploadTestModule
import de.rki.coronawarnapp.ui.contactdiary.ContactDiaryDayFragmentTestModule
import de.rki.coronawarnapp.ui.contactdiary.ContactDiaryEditLocationsFragmentTestModule
import de.rki.coronawarnapp.ui.contactdiary.ContactDiaryEditPersonsFragmentTestModule
......@@ -69,7 +71,10 @@ import de.rki.coronawarnapp.ui.tracing.TracingDetailsFragmentTestTestModule
ContactDiaryEditLocationsFragmentTestModule::class,
ContactDiaryEditPersonsFragmentTestModule::class,
// Statistics
StatisticsExplanationFragmentTestModule::class
StatisticsExplanationFragmentTestModule::class,
//Bugreporting
DebugLogUploadTestModule::class,
DebugLogTestModule::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