Small rework: create classical createPresenter() method to reduce code duplication.

This commit is contained in:
Benoit Marty 2024-02-06 08:54:49 +01:00
parent 5e44bc9878
commit 021509ad17

View file

@ -20,6 +20,9 @@ import app.cash.molecule.RecompositionMode
import app.cash.molecule.moleculeFlow import app.cash.molecule.moleculeFlow
import app.cash.turbine.test import app.cash.turbine.test
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import io.element.android.features.rageshake.api.crash.CrashDataStore
import io.element.android.features.rageshake.api.reporter.BugReporter
import io.element.android.features.rageshake.api.screenshot.ScreenshotHolder
import io.element.android.features.rageshake.test.crash.A_CRASH_DATA import io.element.android.features.rageshake.test.crash.A_CRASH_DATA
import io.element.android.features.rageshake.test.crash.FakeCrashDataStore import io.element.android.features.rageshake.test.crash.FakeCrashDataStore
import io.element.android.features.rageshake.test.screenshot.A_SCREENSHOT_URI import io.element.android.features.rageshake.test.screenshot.A_SCREENSHOT_URI
@ -27,6 +30,7 @@ import io.element.android.features.rageshake.test.screenshot.FakeScreenshotHolde
import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.AsyncAction
import io.element.android.libraries.matrix.test.A_FAILURE_REASON import io.element.android.libraries.matrix.test.A_FAILURE_REASON
import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.WarmUpRule
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
@ -40,12 +44,7 @@ class BugReportPresenterTest {
@Test @Test
fun `present - initial state`() = runTest { fun `present - initial state`() = runTest {
val presenter = BugReportPresenter( val presenter = createPresenter()
FakeBugReporter(),
FakeCrashDataStore(),
FakeScreenshotHolder(),
this,
)
moleculeFlow(RecompositionMode.Immediate) { moleculeFlow(RecompositionMode.Immediate) {
presenter.present() presenter.present()
}.test { }.test {
@ -61,12 +60,7 @@ class BugReportPresenterTest {
@Test @Test
fun `present - set description`() = runTest { fun `present - set description`() = runTest {
val presenter = BugReportPresenter( val presenter = createPresenter()
FakeBugReporter(),
FakeCrashDataStore(),
FakeScreenshotHolder(),
this,
)
moleculeFlow(RecompositionMode.Immediate) { moleculeFlow(RecompositionMode.Immediate) {
presenter.present() presenter.present()
}.test { }.test {
@ -80,12 +74,7 @@ class BugReportPresenterTest {
@Test @Test
fun `present - can contact`() = runTest { fun `present - can contact`() = runTest {
val presenter = BugReportPresenter( val presenter = createPresenter()
FakeBugReporter(),
FakeCrashDataStore(),
FakeScreenshotHolder(),
this,
)
moleculeFlow(RecompositionMode.Immediate) { moleculeFlow(RecompositionMode.Immediate) {
presenter.present() presenter.present()
}.test { }.test {
@ -99,12 +88,7 @@ class BugReportPresenterTest {
@Test @Test
fun `present - send logs`() = runTest { fun `present - send logs`() = runTest {
val presenter = BugReportPresenter( val presenter = createPresenter()
FakeBugReporter(),
FakeCrashDataStore(),
FakeScreenshotHolder(),
this,
)
moleculeFlow(RecompositionMode.Immediate) { moleculeFlow(RecompositionMode.Immediate) {
presenter.present() presenter.present()
}.test { }.test {
@ -119,12 +103,7 @@ class BugReportPresenterTest {
@Test @Test
fun `present - send screenshot`() = runTest { fun `present - send screenshot`() = runTest {
val presenter = BugReportPresenter( val presenter = createPresenter()
FakeBugReporter(),
FakeCrashDataStore(),
FakeScreenshotHolder(),
this,
)
moleculeFlow(RecompositionMode.Immediate) { moleculeFlow(RecompositionMode.Immediate) {
presenter.present() presenter.present()
}.test { }.test {
@ -138,11 +117,9 @@ class BugReportPresenterTest {
@Test @Test
fun `present - reset all`() = runTest { fun `present - reset all`() = runTest {
val presenter = BugReportPresenter( val presenter = createPresenter(
FakeBugReporter(), crashDataStore = FakeCrashDataStore(crashData = A_CRASH_DATA, appHasCrashed = true),
FakeCrashDataStore(crashData = A_CRASH_DATA, appHasCrashed = true), screenshotHolder = FakeScreenshotHolder(screenshotUri = A_SCREENSHOT_URI),
FakeScreenshotHolder(screenshotUri = A_SCREENSHOT_URI),
this,
) )
moleculeFlow(RecompositionMode.Immediate) { moleculeFlow(RecompositionMode.Immediate) {
presenter.present() presenter.present()
@ -160,11 +137,10 @@ class BugReportPresenterTest {
@Test @Test
fun `present - send success`() = runTest { fun `present - send success`() = runTest {
val presenter = BugReportPresenter( val presenter = createPresenter(
FakeBugReporter(mode = FakeBugReporterMode.Success), FakeBugReporter(mode = FakeBugReporterMode.Success),
FakeCrashDataStore(crashData = A_CRASH_DATA, appHasCrashed = true), FakeCrashDataStore(crashData = A_CRASH_DATA, appHasCrashed = true),
FakeScreenshotHolder(screenshotUri = A_SCREENSHOT_URI), FakeScreenshotHolder(screenshotUri = A_SCREENSHOT_URI),
this,
) )
moleculeFlow(RecompositionMode.Immediate) { moleculeFlow(RecompositionMode.Immediate) {
presenter.present() presenter.present()
@ -185,11 +161,10 @@ class BugReportPresenterTest {
@Test @Test
fun `present - send failure`() = runTest { fun `present - send failure`() = runTest {
val presenter = BugReportPresenter( val presenter = createPresenter(
FakeBugReporter(mode = FakeBugReporterMode.Failure), FakeBugReporter(mode = FakeBugReporterMode.Failure),
FakeCrashDataStore(crashData = A_CRASH_DATA, appHasCrashed = true), FakeCrashDataStore(crashData = A_CRASH_DATA, appHasCrashed = true),
FakeScreenshotHolder(screenshotUri = A_SCREENSHOT_URI), FakeScreenshotHolder(screenshotUri = A_SCREENSHOT_URI),
this,
) )
moleculeFlow(RecompositionMode.Immediate) { moleculeFlow(RecompositionMode.Immediate) {
presenter.present() presenter.present()
@ -214,11 +189,10 @@ class BugReportPresenterTest {
@Test @Test
fun `present - send cancel`() = runTest { fun `present - send cancel`() = runTest {
val presenter = BugReportPresenter( val presenter = createPresenter(
FakeBugReporter(mode = FakeBugReporterMode.Cancel), FakeBugReporter(mode = FakeBugReporterMode.Cancel),
FakeCrashDataStore(crashData = A_CRASH_DATA, appHasCrashed = true), FakeCrashDataStore(crashData = A_CRASH_DATA, appHasCrashed = true),
FakeScreenshotHolder(screenshotUri = A_SCREENSHOT_URI), FakeScreenshotHolder(screenshotUri = A_SCREENSHOT_URI),
this,
) )
moleculeFlow(RecompositionMode.Immediate) { moleculeFlow(RecompositionMode.Immediate) {
presenter.present() presenter.present()
@ -235,4 +209,15 @@ class BugReportPresenterTest {
assertThat(awaitItem().sending).isEqualTo(AsyncAction.Uninitialized) assertThat(awaitItem().sending).isEqualTo(AsyncAction.Uninitialized)
} }
} }
private fun TestScope.createPresenter(
bugReporter: BugReporter = FakeBugReporter(),
crashDataStore: CrashDataStore = FakeCrashDataStore(),
screenshotHolder: ScreenshotHolder = FakeScreenshotHolder(),
) = BugReportPresenter(
bugReporter,
crashDataStore,
screenshotHolder,
this,
)
} }