From d7cb032ea259b4fedcad00ebb93f0559fef65a8c Mon Sep 17 00:00:00 2001 From: Gergely Hegedus Date: Mon, 24 Jan 2022 15:40:38 +0200 Subject: [PATCH 1/3] Issue#16 Swap white box logout and login state into ui interaction based --- .../statesetup/SetupAuthenticationState.kt | 52 +++++++++++++++++++ .../statesetup/SetupLoggedInState.kt | 31 ----------- .../test/showcase/ui/login/LoginRobot.kt | 4 ++ .../test/showcase/ui/splash/SplashRobot.kt | 20 +++++++ .../statesetup/SetupLoggedInState.kt | 30 ----------- .../test/showcase/ui/home/MainActivityTest.kt | 10 +--- .../showcase/ui/splash/SplashActivityTest.kt | 16 ++---- .../statesetup/SetupLoggedInState.kt | 31 ----------- .../test/showcase/ui/home/MainActivityTest.kt | 9 ++-- .../showcase/ui/splash/SplashActivityTest.kt | 15 ++---- 10 files changed, 90 insertions(+), 128 deletions(-) create mode 100644 app/src/sharedTest/java/org/fnives/test/showcase/testutils/statesetup/SetupAuthenticationState.kt delete mode 100644 app/src/sharedTest/java/org/fnives/test/showcase/testutils/statesetup/SetupLoggedInState.kt delete mode 100644 app/src/sharedTestHilt/java/org/fnives/test/showcase/testutils/statesetup/SetupLoggedInState.kt delete mode 100644 app/src/sharedTestKoin/java/org/fnives/test/showcase/testutils/statesetup/SetupLoggedInState.kt diff --git a/app/src/sharedTest/java/org/fnives/test/showcase/testutils/statesetup/SetupAuthenticationState.kt b/app/src/sharedTest/java/org/fnives/test/showcase/testutils/statesetup/SetupAuthenticationState.kt new file mode 100644 index 0000000..a5049ae --- /dev/null +++ b/app/src/sharedTest/java/org/fnives/test/showcase/testutils/statesetup/SetupAuthenticationState.kt @@ -0,0 +1,52 @@ +package org.fnives.test.showcase.testutils.statesetup + +import androidx.lifecycle.Lifecycle +import androidx.test.core.app.ActivityScenario +import org.fnives.test.showcase.network.mockserver.MockServerScenarioSetup +import org.fnives.test.showcase.network.mockserver.scenario.auth.AuthScenario +import org.fnives.test.showcase.testutils.configuration.MainDispatcherTestRule +import org.fnives.test.showcase.ui.ActivityClassHolder +import org.fnives.test.showcase.ui.home.HomeRobot +import org.fnives.test.showcase.ui.login.LoginRobot +import org.koin.test.KoinTest + +object SetupAuthenticationState : KoinTest { + + fun setupLogin( + mainDispatcherTestRule: MainDispatcherTestRule, + mockServerScenarioSetup: MockServerScenarioSetup + ) { + mockServerScenarioSetup.setScenario( + AuthScenario.Success( + username = "a", + password = "b" + ) + ) + val activityScenario = ActivityScenario.launch(ActivityClassHolder.authActivity().java) + activityScenario.moveToState(Lifecycle.State.RESUMED) + val loginRobot = LoginRobot() + loginRobot.setupIntentResults() + loginRobot + .setPassword("b") + .setUsername("a") + .clickOnLogin() + + mainDispatcherTestRule.advanceUntilIdleOrActivityIsDestroyed() + + activityScenario.moveToState(Lifecycle.State.DESTROYED) + } + + fun setupLogout( + mainDispatcherTestRule: MainDispatcherTestRule + ) { + val activityScenario = ActivityScenario.launch(ActivityClassHolder.mainActivity().java) + activityScenario.moveToState(Lifecycle.State.RESUMED) + val homeRobot = HomeRobot() + homeRobot + .clickSignOut() + + mainDispatcherTestRule.advanceUntilIdleOrActivityIsDestroyed() + + activityScenario.moveToState(Lifecycle.State.DESTROYED) + } +} diff --git a/app/src/sharedTest/java/org/fnives/test/showcase/testutils/statesetup/SetupLoggedInState.kt b/app/src/sharedTest/java/org/fnives/test/showcase/testutils/statesetup/SetupLoggedInState.kt deleted file mode 100644 index ce25260..0000000 --- a/app/src/sharedTest/java/org/fnives/test/showcase/testutils/statesetup/SetupLoggedInState.kt +++ /dev/null @@ -1,31 +0,0 @@ -// package org.fnives.test.showcase.testutils.statesetup -// -// import kotlinx.coroutines.runBlocking -// import org.fnives.test.showcase.core.login.IsUserLoggedInUseCase -// import org.fnives.test.showcase.core.login.LoginUseCase -// import org.fnives.test.showcase.core.login.LogoutUseCase -// import org.fnives.test.showcase.model.auth.LoginCredentials -// import org.fnives.test.showcase.network.mockserver.MockServerScenarioSetup -// import org.fnives.test.showcase.network.mockserver.scenario.auth.AuthScenario -// import org.koin.test.KoinTest -// import org.koin.test.get -// -// object SetupLoggedInState : KoinTest { -// -// private val logoutUseCase get() = get() -// private val loginUseCase get() = get() -// private val isUserLoggedInUseCase get() = get() -// -// fun setupLogin(mockServerScenarioSetup: MockServerScenarioSetup) { -// mockServerScenarioSetup.setScenario(AuthScenario.Success("a", "b")) -// runBlocking { -// loginUseCase.invoke(LoginCredentials("a", "b")) -// } -// } -// -// fun isLoggedIn() = isUserLoggedInUseCase.invoke() -// -// fun setupLogout() { -// runBlocking { logoutUseCase.invoke() } -// } -// } diff --git a/app/src/sharedTest/java/org/fnives/test/showcase/ui/login/LoginRobot.kt b/app/src/sharedTest/java/org/fnives/test/showcase/ui/login/LoginRobot.kt index 37b0bef..b00b62a 100644 --- a/app/src/sharedTest/java/org/fnives/test/showcase/ui/login/LoginRobot.kt +++ b/app/src/sharedTest/java/org/fnives/test/showcase/ui/login/LoginRobot.kt @@ -37,6 +37,10 @@ class LoginRobot( override fun init() { Intents.init() + setupIntentResults() + } + + fun setupIntentResults() { intending(hasComponent(ActivityClassHolder.mainActivity().java.canonicalName)) .respondWith(Instrumentation.ActivityResult(Activity.RESULT_OK, Intent())) } diff --git a/app/src/sharedTest/java/org/fnives/test/showcase/ui/splash/SplashRobot.kt b/app/src/sharedTest/java/org/fnives/test/showcase/ui/splash/SplashRobot.kt index c612228..683203f 100644 --- a/app/src/sharedTest/java/org/fnives/test/showcase/ui/splash/SplashRobot.kt +++ b/app/src/sharedTest/java/org/fnives/test/showcase/ui/splash/SplashRobot.kt @@ -3,7 +3,10 @@ package org.fnives.test.showcase.ui.splash import android.app.Instrumentation import androidx.test.espresso.intent.Intents import androidx.test.espresso.intent.matcher.IntentMatchers +import org.fnives.test.showcase.network.mockserver.MockServerScenarioSetup +import org.fnives.test.showcase.testutils.configuration.MainDispatcherTestRule import org.fnives.test.showcase.testutils.robot.Robot +import org.fnives.test.showcase.testutils.statesetup.SetupAuthenticationState import org.fnives.test.showcase.testutils.viewactions.notIntended import org.fnives.test.showcase.ui.ActivityClassHolder @@ -21,6 +24,23 @@ class SplashRobot : Robot { Intents.release() } + fun setupLoggedInState( + mainDispatcherTestRule: MainDispatcherTestRule, + mockServerScenarioSetup: MockServerScenarioSetup + ) { + SetupAuthenticationState.setupLogin(mainDispatcherTestRule, mockServerScenarioSetup) + release() + init() + } + + fun setupLoggedOutState( + mainDispatcherTestRule: MainDispatcherTestRule + ) { + SetupAuthenticationState.setupLogout(mainDispatcherTestRule) + release() + init() + } + fun assertHomeIsStarted() = apply { Intents.intended(IntentMatchers.hasComponent(ActivityClassHolder.mainActivity().java.canonicalName)) } diff --git a/app/src/sharedTestHilt/java/org/fnives/test/showcase/testutils/statesetup/SetupLoggedInState.kt b/app/src/sharedTestHilt/java/org/fnives/test/showcase/testutils/statesetup/SetupLoggedInState.kt deleted file mode 100644 index 04d165d..0000000 --- a/app/src/sharedTestHilt/java/org/fnives/test/showcase/testutils/statesetup/SetupLoggedInState.kt +++ /dev/null @@ -1,30 +0,0 @@ -package org.fnives.test.showcase.testutils.statesetup - -import kotlinx.coroutines.runBlocking -import org.fnives.test.showcase.core.login.IsUserLoggedInUseCase -import org.fnives.test.showcase.core.login.LoginUseCase -import org.fnives.test.showcase.core.login.LogoutUseCase -import org.fnives.test.showcase.model.auth.LoginCredentials -import org.fnives.test.showcase.network.mockserver.MockServerScenarioSetup -import org.fnives.test.showcase.network.mockserver.scenario.auth.AuthScenario -import javax.inject.Inject - -class SetupLoggedInState @Inject constructor( - private val logoutUseCase: LogoutUseCase, - private val loginUseCase: LoginUseCase, - private val isUserLoggedInUseCase: IsUserLoggedInUseCase -) { - - fun setupLogin(mockServerScenarioSetup: MockServerScenarioSetup) { - mockServerScenarioSetup.setScenario(AuthScenario.Success("a", "b")) - runBlocking { - loginUseCase.invoke(LoginCredentials("a", "b")) - } - } - - fun isLoggedIn() = isUserLoggedInUseCase.invoke() - - fun setupLogout() { - runBlocking { logoutUseCase.invoke() } - } -} diff --git a/app/src/sharedTestHilt/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt b/app/src/sharedTestHilt/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt index 1731124..6cfee42 100644 --- a/app/src/sharedTestHilt/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt +++ b/app/src/sharedTestHilt/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt @@ -17,9 +17,8 @@ import org.fnives.test.showcase.testutils.idling.NetworkSynchronization import org.fnives.test.showcase.testutils.idling.loopMainThreadFor import org.fnives.test.showcase.testutils.idling.loopMainThreadUntilIdleWithIdlingResources import org.fnives.test.showcase.testutils.robot.RobotTestRule -import org.fnives.test.showcase.testutils.statesetup.SetupLoggedInState +import org.fnives.test.showcase.testutils.statesetup.SetupAuthenticationState import org.junit.After -import org.junit.Assert import org.junit.Before import org.junit.Rule import org.junit.Test @@ -58,9 +57,6 @@ class MainActivityTest { @JvmField val hiltRule = HiltAndroidRule(this) - @Inject - lateinit var setupLoggedInState: SetupLoggedInState - @Inject lateinit var networkSynchronization: NetworkSynchronization @@ -72,8 +68,8 @@ class MainActivityTest { .invoke(mockServerScenarioSetupTestRule.mockServerScenarioSetup) hiltRule.inject() - setupLoggedInState.setupLogin(mockServerScenarioSetupTestRule.mockServerScenarioSetup) disposable = networkSynchronization.registerNetworkingSynchronization() + SetupAuthenticationState.setupLogin(mainDispatcherTestRule, mockServerScenarioSetupTestRule.mockServerScenarioSetup) } @After @@ -94,7 +90,6 @@ class MainActivityTest { mainDispatcherTestRule.advanceUntilIdleOrActivityIsDestroyed() homeRobot.assertNavigatedToAuth() - Assert.assertEquals(false, setupLoggedInState.isLoggedIn()) } /** GIVEN success response WHEN data is returned THEN it is shown on the ui */ @@ -253,6 +248,5 @@ class MainActivityTest { mainDispatcherTestRule.advanceUntilIdleWithIdlingResources() homeRobot.assertNavigatedToAuth() - Assert.assertEquals(false, setupLoggedInState.isLoggedIn()) } } diff --git a/app/src/sharedTestHilt/java/org/fnives/test/showcase/ui/splash/SplashActivityTest.kt b/app/src/sharedTestHilt/java/org/fnives/test/showcase/ui/splash/SplashActivityTest.kt index 33c3be2..f90d661 100644 --- a/app/src/sharedTestHilt/java/org/fnives/test/showcase/ui/splash/SplashActivityTest.kt +++ b/app/src/sharedTestHilt/java/org/fnives/test/showcase/ui/splash/SplashActivityTest.kt @@ -11,7 +11,6 @@ import org.fnives.test.showcase.testutils.configuration.SpecificTestConfiguratio import org.fnives.test.showcase.testutils.idling.Disposable import org.fnives.test.showcase.testutils.idling.NetworkSynchronization import org.fnives.test.showcase.testutils.robot.RobotTestRule -import org.fnives.test.showcase.testutils.statesetup.SetupLoggedInState import org.junit.After import org.junit.Before import org.junit.Rule @@ -49,9 +48,6 @@ class SplashActivityTest : KoinTest { @JvmField val hiltRule = HiltAndroidRule(this) - @Inject - lateinit var setupLoggedInState: SetupLoggedInState - @Inject lateinit var networkSynchronization: NetworkSynchronization @@ -74,7 +70,7 @@ class SplashActivityTest : KoinTest { /** GIVEN loggedInState WHEN opened THEN MainActivity is started */ @Test fun loggedInStateNavigatesToHome() { - setupLoggedInState.setupLogin(mockServerScenarioSetupTestRule.mockServerScenarioSetup) + splashRobot.setupLoggedInState(mainDispatcherTestRule, mockServerScenarioSetupTestRule.mockServerScenarioSetup) activityScenario = ActivityScenario.launch(HiltSplashActivity::class.java) @@ -82,14 +78,12 @@ class SplashActivityTest : KoinTest { splashRobot.assertHomeIsStarted() .assertAuthIsNotStarted() - - setupLoggedInState.setupLogout() } /** GIVEN loggedOffState WHEN opened THEN AuthActivity is started */ @Test fun loggedOutStatesNavigatesToAuthentication() { - setupLoggedInState.setupLogout() + splashRobot.setupLoggedOutState(mainDispatcherTestRule) activityScenario = ActivityScenario.launch(HiltSplashActivity::class.java) @@ -101,7 +95,7 @@ class SplashActivityTest : KoinTest { @Test fun loggedOutStatesNotEnoughTime() { - setupLoggedInState.setupLogout() + splashRobot.setupLoggedOutState(mainDispatcherTestRule) activityScenario = ActivityScenario.launch(HiltSplashActivity::class.java) @@ -114,7 +108,7 @@ class SplashActivityTest : KoinTest { /** GIVEN loggedInState and not enough time WHEN opened THEN no activity is started */ @Test fun loggedInStatesNotEnoughTime() { - setupLoggedInState.setupLogin(mockServerScenarioSetupTestRule.mockServerScenarioSetup) + splashRobot.setupLoggedInState(mainDispatcherTestRule, mockServerScenarioSetupTestRule.mockServerScenarioSetup) activityScenario = ActivityScenario.launch(HiltSplashActivity::class.java) @@ -122,7 +116,5 @@ class SplashActivityTest : KoinTest { splashRobot.assertHomeIsNotStarted() .assertAuthIsNotStarted() - - setupLoggedInState.setupLogout() } } diff --git a/app/src/sharedTestKoin/java/org/fnives/test/showcase/testutils/statesetup/SetupLoggedInState.kt b/app/src/sharedTestKoin/java/org/fnives/test/showcase/testutils/statesetup/SetupLoggedInState.kt deleted file mode 100644 index 4e978ee..0000000 --- a/app/src/sharedTestKoin/java/org/fnives/test/showcase/testutils/statesetup/SetupLoggedInState.kt +++ /dev/null @@ -1,31 +0,0 @@ -package org.fnives.test.showcase.testutils.statesetup - -import kotlinx.coroutines.runBlocking -import org.fnives.test.showcase.core.login.IsUserLoggedInUseCase -import org.fnives.test.showcase.core.login.LoginUseCase -import org.fnives.test.showcase.core.login.LogoutUseCase -import org.fnives.test.showcase.model.auth.LoginCredentials -import org.fnives.test.showcase.network.mockserver.MockServerScenarioSetup -import org.fnives.test.showcase.network.mockserver.scenario.auth.AuthScenario -import org.koin.test.KoinTest -import org.koin.test.get - -object SetupLoggedInState : KoinTest { - - private val logoutUseCase get() = get() - private val loginUseCase get() = get() - private val isUserLoggedInUseCase get() = get() - - fun setupLogin(mockServerScenarioSetup: MockServerScenarioSetup) { - mockServerScenarioSetup.setScenario(AuthScenario.Success("a", "b")) - runBlocking { - loginUseCase.invoke(LoginCredentials("a", "b")) - } - } - - fun isLoggedIn() = isUserLoggedInUseCase.invoke() - - fun setupLogout() { - runBlocking { logoutUseCase.invoke() } - } -} diff --git a/app/src/sharedTestKoin/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt b/app/src/sharedTestKoin/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt index 17ed314..7ecef06 100644 --- a/app/src/sharedTestKoin/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt +++ b/app/src/sharedTestKoin/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt @@ -16,9 +16,8 @@ import org.fnives.test.showcase.testutils.idling.NetworkSynchronization import org.fnives.test.showcase.testutils.idling.loopMainThreadFor import org.fnives.test.showcase.testutils.idling.loopMainThreadUntilIdleWithIdlingResources import org.fnives.test.showcase.testutils.robot.RobotTestRule -import org.fnives.test.showcase.testutils.statesetup.SetupLoggedInState +import org.fnives.test.showcase.testutils.statesetup.SetupAuthenticationState import org.junit.After -import org.junit.Assert import org.junit.Before import org.junit.Rule import org.junit.Test @@ -64,8 +63,10 @@ class MainActivityTest : KoinTest { SpecificTestConfigurationsFactory.createServerTypeConfiguration() .invoke(mockServerScenarioSetupTestRule.mockServerScenarioSetup) - SetupLoggedInState.setupLogin(mockServerScenarioSetupTestRule.mockServerScenarioSetup) disposable = NetworkSynchronization.registerNetworkingSynchronization() + SetupAuthenticationState.setupLogin( + mainDispatcherTestRule, + mockServerScenarioSetupTestRule.mockServerScenarioSetup) } @After @@ -86,7 +87,6 @@ class MainActivityTest : KoinTest { mainDispatcherTestRule.advanceUntilIdleOrActivityIsDestroyed() homeRobot.assertNavigatedToAuth() - Assert.assertEquals(false, SetupLoggedInState.isLoggedIn()) } /** GIVEN success response WHEN data is returned THEN it is shown on the ui */ @@ -245,6 +245,5 @@ class MainActivityTest : KoinTest { mainDispatcherTestRule.advanceUntilIdleWithIdlingResources() homeRobot.assertNavigatedToAuth() - Assert.assertEquals(false, SetupLoggedInState.isLoggedIn()) } } diff --git a/app/src/sharedTestKoin/java/org/fnives/test/showcase/ui/splash/SplashActivityTest.kt b/app/src/sharedTestKoin/java/org/fnives/test/showcase/ui/splash/SplashActivityTest.kt index 74e202f..9d865c9 100644 --- a/app/src/sharedTestKoin/java/org/fnives/test/showcase/ui/splash/SplashActivityTest.kt +++ b/app/src/sharedTestKoin/java/org/fnives/test/showcase/ui/splash/SplashActivityTest.kt @@ -9,7 +9,6 @@ import org.fnives.test.showcase.testutils.configuration.SpecificTestConfiguratio import org.fnives.test.showcase.testutils.idling.Disposable import org.fnives.test.showcase.testutils.idling.NetworkSynchronization import org.fnives.test.showcase.testutils.robot.RobotTestRule -import org.fnives.test.showcase.testutils.statesetup.SetupLoggedInState import org.junit.After import org.junit.Before import org.junit.Rule @@ -59,7 +58,7 @@ class SplashActivityTest : KoinTest { /** GIVEN loggedInState WHEN opened after some time THEN MainActivity is started */ @Test fun loggedInStateNavigatesToHome() { - SetupLoggedInState.setupLogin(mockServerScenarioSetupTestRule.mockServerScenarioSetup) + splashRobot.setupLoggedInState(mainDispatcherTestRule, mockServerScenarioSetupTestRule.mockServerScenarioSetup) activityScenario = ActivityScenario.launch(SplashActivity::class.java) activityScenario.moveToState(Lifecycle.State.RESUMED) @@ -68,15 +67,12 @@ class SplashActivityTest : KoinTest { splashRobot.assertHomeIsStarted() .assertAuthIsNotStarted() - - SetupLoggedInState.setupLogout() } /** GIVEN loggedOffState WHEN opened after some time THEN AuthActivity is started */ @Test fun loggedOutStatesNavigatesToAuthentication() { - SetupLoggedInState.setupLogout() - + splashRobot.setupLoggedOutState(mainDispatcherTestRule) activityScenario = ActivityScenario.launch(SplashActivity::class.java) activityScenario.moveToState(Lifecycle.State.RESUMED) @@ -89,8 +85,7 @@ class SplashActivityTest : KoinTest { /** GIVEN loggedOffState and not enough time WHEN opened THEN no activity is started */ @Test fun loggedOutStatesNotEnoughTime() { - SetupLoggedInState.setupLogout() - + splashRobot.setupLoggedOutState(mainDispatcherTestRule) activityScenario = ActivityScenario.launch(SplashActivity::class.java) activityScenario.moveToState(Lifecycle.State.RESUMED) @@ -103,7 +98,7 @@ class SplashActivityTest : KoinTest { /** GIVEN loggedInState and not enough time WHEN opened THEN no activity is started */ @Test fun loggedInStatesNotEnoughTime() { - SetupLoggedInState.setupLogin(mockServerScenarioSetupTestRule.mockServerScenarioSetup) + splashRobot.setupLoggedInState(mainDispatcherTestRule, mockServerScenarioSetupTestRule.mockServerScenarioSetup) activityScenario = ActivityScenario.launch(SplashActivity::class.java) activityScenario.moveToState(Lifecycle.State.RESUMED) @@ -112,7 +107,5 @@ class SplashActivityTest : KoinTest { splashRobot.assertHomeIsNotStarted() .assertAuthIsNotStarted() - - SetupLoggedInState.setupLogout() } } From e827af515d34583ea4406a91554e2193fa9e0ded Mon Sep 17 00:00:00 2001 From: Gergely Hegedus Date: Mon, 24 Jan 2022 15:55:59 +0200 Subject: [PATCH 2/3] Issue#16 Fix codeAnalysis errors --- .../java/org/fnives/test/showcase/ui/home/MainActivityTest.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/sharedTestKoin/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt b/app/src/sharedTestKoin/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt index 7ecef06..39c076a 100644 --- a/app/src/sharedTestKoin/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt +++ b/app/src/sharedTestKoin/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt @@ -66,7 +66,8 @@ class MainActivityTest : KoinTest { disposable = NetworkSynchronization.registerNetworkingSynchronization() SetupAuthenticationState.setupLogin( mainDispatcherTestRule, - mockServerScenarioSetupTestRule.mockServerScenarioSetup) + mockServerScenarioSetupTestRule.mockServerScenarioSetup + ) } @After From 40791ca462a3102420d2129189ee988d39d5bfeb Mon Sep 17 00:00:00 2001 From: Gergely Hegedus Date: Mon, 24 Jan 2022 16:00:49 +0200 Subject: [PATCH 3/3] Issue#16 Move login state setup into homerobot --- .../java/org/fnives/test/showcase/ui/home/HomeRobot.kt | 10 ++++++++++ .../fnives/test/showcase/ui/home/MainActivityTest.kt | 3 +-- .../fnives/test/showcase/ui/home/MainActivityTest.kt | 3 +-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/src/sharedTest/java/org/fnives/test/showcase/ui/home/HomeRobot.kt b/app/src/sharedTest/java/org/fnives/test/showcase/ui/home/HomeRobot.kt index 43b31d8..8a9f398 100644 --- a/app/src/sharedTest/java/org/fnives/test/showcase/ui/home/HomeRobot.kt +++ b/app/src/sharedTest/java/org/fnives/test/showcase/ui/home/HomeRobot.kt @@ -19,7 +19,10 @@ import androidx.test.espresso.matcher.ViewMatchers.withText import org.fnives.test.showcase.R import org.fnives.test.showcase.model.content.Content import org.fnives.test.showcase.model.content.FavouriteContent +import org.fnives.test.showcase.network.mockserver.MockServerScenarioSetup +import org.fnives.test.showcase.testutils.configuration.MainDispatcherTestRule import org.fnives.test.showcase.testutils.robot.Robot +import org.fnives.test.showcase.testutils.statesetup.SetupAuthenticationState import org.fnives.test.showcase.testutils.viewactions.PullToRefresh import org.fnives.test.showcase.testutils.viewactions.WithDrawable import org.fnives.test.showcase.testutils.viewactions.notIntended @@ -100,4 +103,11 @@ class HomeRobot : Robot { Espresso.onView(withId(R.id.error_message)) .check(matches(allOf(isDisplayed(), withText(R.string.something_went_wrong)))) } + + fun setupLogin( + mainDispatcherTestRule: MainDispatcherTestRule, + mockServerScenarioSetup: MockServerScenarioSetup + ) { + SetupAuthenticationState.setupLogin(mainDispatcherTestRule, mockServerScenarioSetup) + } } diff --git a/app/src/sharedTestHilt/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt b/app/src/sharedTestHilt/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt index 6cfee42..aacaf2b 100644 --- a/app/src/sharedTestHilt/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt +++ b/app/src/sharedTestHilt/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt @@ -17,7 +17,6 @@ import org.fnives.test.showcase.testutils.idling.NetworkSynchronization import org.fnives.test.showcase.testutils.idling.loopMainThreadFor import org.fnives.test.showcase.testutils.idling.loopMainThreadUntilIdleWithIdlingResources import org.fnives.test.showcase.testutils.robot.RobotTestRule -import org.fnives.test.showcase.testutils.statesetup.SetupAuthenticationState import org.junit.After import org.junit.Before import org.junit.Rule @@ -69,7 +68,7 @@ class MainActivityTest { hiltRule.inject() disposable = networkSynchronization.registerNetworkingSynchronization() - SetupAuthenticationState.setupLogin(mainDispatcherTestRule, mockServerScenarioSetupTestRule.mockServerScenarioSetup) + homeRobot.setupLogin(mainDispatcherTestRule, mockServerScenarioSetupTestRule.mockServerScenarioSetup) } @After diff --git a/app/src/sharedTestKoin/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt b/app/src/sharedTestKoin/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt index 39c076a..aa2d19a 100644 --- a/app/src/sharedTestKoin/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt +++ b/app/src/sharedTestKoin/java/org/fnives/test/showcase/ui/home/MainActivityTest.kt @@ -16,7 +16,6 @@ import org.fnives.test.showcase.testutils.idling.NetworkSynchronization import org.fnives.test.showcase.testutils.idling.loopMainThreadFor import org.fnives.test.showcase.testutils.idling.loopMainThreadUntilIdleWithIdlingResources import org.fnives.test.showcase.testutils.robot.RobotTestRule -import org.fnives.test.showcase.testutils.statesetup.SetupAuthenticationState import org.junit.After import org.junit.Before import org.junit.Rule @@ -64,7 +63,7 @@ class MainActivityTest : KoinTest { .invoke(mockServerScenarioSetupTestRule.mockServerScenarioSetup) disposable = NetworkSynchronization.registerNetworkingSynchronization() - SetupAuthenticationState.setupLogin( + homeRobot.setupLogin( mainDispatcherTestRule, mockServerScenarioSetupTestRule.mockServerScenarioSetup )