issue#6 Add GIVEN-WHEN-THEN as documentation and simplify testNames in sharedTests of app module
This commit is contained in:
parent
ab3e6a64f0
commit
01a23ee0bd
6 changed files with 70 additions and 35 deletions
|
|
@ -82,8 +82,9 @@ class MainActivityTest {
|
|||
disposable.dispose()
|
||||
}
|
||||
|
||||
/** GIVEN initialized MainActivity WHEN signout is clicked THEN user is signed out */
|
||||
@Test
|
||||
fun GIVEN_initialized_MainActivity_WHEN_signout_is_clicked_THEN_user_is_signed_out() {
|
||||
fun signOutClickedResultsInNavigation() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(ContentScenario.Error(false))
|
||||
activityScenario = ActivityScenario.launch(HiltMainActivity::class.java)
|
||||
|
|
@ -96,8 +97,9 @@ class MainActivityTest {
|
|||
Assert.assertEquals(false, setupLoggedInState.isLoggedIn())
|
||||
}
|
||||
|
||||
/** GIVEN success response WHEN data is returned THEN it is shown on the ui */
|
||||
@Test
|
||||
fun GIVEN_success_response_WHEN_data_is_returned_THEN_it_is_shown_on_the_ui() {
|
||||
fun successfulDataLoadingShowsTheElementsOnTheUI() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(ContentScenario.Success(false))
|
||||
activityScenario = ActivityScenario.launch(HiltMainActivity::class.java)
|
||||
|
|
@ -109,8 +111,9 @@ class MainActivityTest {
|
|||
homeRobot.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
/** GIVEN success response WHEN item is clicked THEN ui is updated */
|
||||
@Test
|
||||
fun GIVEN_success_response_WHEN_item_is_clicked_THEN_ui_is_updated() {
|
||||
fun clickingOnListElementUpdatesTheElementsFavouriteState() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(ContentScenario.Success(false))
|
||||
activityScenario = ActivityScenario.launch(HiltMainActivity::class.java)
|
||||
|
|
@ -124,8 +127,9 @@ class MainActivityTest {
|
|||
.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
/** GIVEN success response WHEN item is clicked THEN ui is updated even if activity is recreated */
|
||||
@Test
|
||||
fun GIVEN_success_response_WHEN_item_is_clicked_THEN_ui_is_updated_even_if_activity_is_recreated() {
|
||||
fun elementFavouritedIsKeptEvenIfActivityIsRecreated() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(ContentScenario.Success(false))
|
||||
activityScenario = ActivityScenario.launch(HiltMainActivity::class.java)
|
||||
|
|
@ -144,8 +148,9 @@ class MainActivityTest {
|
|||
.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
/** GIVEN success response WHEN item is clicked then clicked again THEN ui is updated */
|
||||
@Test
|
||||
fun GIVEN_success_response_WHEN_item_is_clicked_then_clicked_again_THEN_ui_is_updated() {
|
||||
fun clickingAnElementMultipleTimesProperlyUpdatesIt() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(ContentScenario.Success(false))
|
||||
activityScenario = ActivityScenario.launch(HiltMainActivity::class.java)
|
||||
|
|
@ -161,8 +166,9 @@ class MainActivityTest {
|
|||
.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
/** GIVEN error response WHEN loaded THEN error is Shown */
|
||||
@Test
|
||||
fun GIVEN_error_response_WHEN_loaded_THEN_error_is_Shown() {
|
||||
fun networkErrorResultsInUIErrorStateShown() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(ContentScenario.Error(false))
|
||||
activityScenario = ActivityScenario.launch(HiltMainActivity::class.java)
|
||||
|
|
@ -173,8 +179,9 @@ class MainActivityTest {
|
|||
.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
/** GIVEN error response then success WHEN retried THEN success is shown */
|
||||
@Test
|
||||
fun GIVEN_error_response_then_success_WHEN_retried_THEN_success_is_shown() {
|
||||
fun retryingFromErrorStateAndSucceedingShowsTheData() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(
|
||||
ContentScenario.Error(false)
|
||||
|
|
@ -193,8 +200,9 @@ class MainActivityTest {
|
|||
homeRobot.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
/** GIVEN success then error WHEN retried THEN error is shown */
|
||||
@Test
|
||||
fun GIVEN_success_then_error_WHEN_retried_THEN_error_is_shown() {
|
||||
fun errorIsShownIfTheDataIsFetchedAndErrorIsReceived() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(
|
||||
ContentScenario.Success(false)
|
||||
|
|
@ -215,8 +223,9 @@ class MainActivityTest {
|
|||
.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
/** GIVEN unauthenticated then success WHEN loaded THEN success is shown */
|
||||
@Test
|
||||
fun GIVEN_unauthenticated_then_success_WHEN_loaded_THEN_success_is_shown() {
|
||||
fun authenticationIsHandledWithASingleLoading() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(
|
||||
ContentScenario.Unauthorized(false)
|
||||
|
|
@ -233,8 +242,9 @@ class MainActivityTest {
|
|||
homeRobot.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
/** GIVEN unauthenticated then error WHEN loaded THEN navigated to auth */
|
||||
@Test
|
||||
fun GIVEN_unauthenticated_then_error_WHEN_loaded_THEN_navigated_to_auth() {
|
||||
fun sessionExpirationResultsInNavigation() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(ContentScenario.Unauthorized(false))
|
||||
.setScenario(RefreshTokenScenario.Error)
|
||||
|
|
|
|||
|
|
@ -72,8 +72,9 @@ class AuthActivityTest {
|
|||
disposable.dispose()
|
||||
}
|
||||
|
||||
/** GIVEN non empty password and username and successful response WHEN signIn THEN no error is shown and navigating to home */
|
||||
@Test
|
||||
fun GIVEN_non_empty_password_and_username_and_successful_response_WHEN_signIn_THEN_no_error_is_shown_and_navigating_to_home() {
|
||||
fun properLoginResultsInNavigationToHome() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup.setScenario(
|
||||
AuthScenario.Success(
|
||||
password = "alma",
|
||||
|
|
@ -93,8 +94,9 @@ class AuthActivityTest {
|
|||
loginRobot.assertNavigatedToHome()
|
||||
}
|
||||
|
||||
/** GIVEN empty password and username WHEN signIn THEN error password is shown */
|
||||
@Test
|
||||
fun GIVEN_empty_password_and_username_WHEN_signIn_THEN_error_password_is_shown() {
|
||||
fun emptyPasswordShowsProperErrorMessage() {
|
||||
activityScenario = ActivityScenario.launch(HiltAuthActivity::class.java)
|
||||
loginRobot
|
||||
.setUsername("banan")
|
||||
|
|
@ -108,8 +110,9 @@ class AuthActivityTest {
|
|||
.assertNotLoading()
|
||||
}
|
||||
|
||||
/** GIVEN password and empty username WHEN signIn THEN error username is shown */
|
||||
@Test
|
||||
fun GIVEN_password_and_empty_username_WHEN_signIn_THEN_error_username_is_shown() {
|
||||
fun emptyUserNameShowsProperErrorMessage() {
|
||||
activityScenario = ActivityScenario.launch(HiltAuthActivity::class.java)
|
||||
loginRobot
|
||||
.setPassword("banan")
|
||||
|
|
@ -123,8 +126,9 @@ class AuthActivityTest {
|
|||
.assertNotLoading()
|
||||
}
|
||||
|
||||
/** GIVEN password and username and invalid credentials response WHEN signIn THEN error invalid credentials is shown */
|
||||
@Test
|
||||
fun GIVEN_password_and_username_and_invalid_credentials_response_WHEN_signIn_THEN_error_invalid_credentials_is_shown() {
|
||||
fun invalidCredentialsGivenShowsProperErrorMessage() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup.setScenario(
|
||||
AuthScenario.InvalidCredentials(username = "alma", password = "banan")
|
||||
)
|
||||
|
|
@ -143,8 +147,9 @@ class AuthActivityTest {
|
|||
.assertNotLoading()
|
||||
}
|
||||
|
||||
/** GIVEN password and username and error response WHEN signIn THEN error invalid credentials is shown */
|
||||
@Test
|
||||
fun GIVEN_password_and_username_and_error_response_WHEN_signIn_THEN_error_invalid_credentials_is_shown() {
|
||||
fun networkErrorShowsProperErrorMessage() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup.setScenario(
|
||||
AuthScenario.GenericError(username = "alma", password = "banan")
|
||||
)
|
||||
|
|
|
|||
|
|
@ -71,8 +71,9 @@ class SplashActivityTest : KoinTest {
|
|||
disposable?.dispose()
|
||||
}
|
||||
|
||||
/** GIVEN loggedInState WHEN opened THEN MainActivity is started */
|
||||
@Test
|
||||
fun GIVEN_loggedInState_WHEN_opened_THEN_MainActivity_is_started() {
|
||||
fun loggedInStateNavigatesToHome() {
|
||||
setupLoggedInState.setupLogin(mockServerScenarioSetupTestRule.mockServerScenarioSetup)
|
||||
|
||||
activityScenario = ActivityScenario.launch(HiltSplashActivity::class.java)
|
||||
|
|
@ -85,8 +86,9 @@ class SplashActivityTest : KoinTest {
|
|||
setupLoggedInState.setupLogout()
|
||||
}
|
||||
|
||||
/** GIVEN loggedOffState WHEN opened THEN AuthActivity is started */
|
||||
@Test
|
||||
fun GIVEN_loggedOffState_WHEN_opened_THEN_AuthActivity_is_started() {
|
||||
fun loggedOutStatesNavigatesToAuthentication() {
|
||||
setupLoggedInState.setupLogout()
|
||||
|
||||
activityScenario = ActivityScenario.launch(HiltSplashActivity::class.java)
|
||||
|
|
|
|||
|
|
@ -37,7 +37,8 @@ class MainActivityTest : KoinTest {
|
|||
|
||||
@Rule
|
||||
@JvmField
|
||||
val snackbarVerificationTestRule = SpecificTestConfigurationsFactory.createSnackbarVerification()
|
||||
val snackbarVerificationTestRule =
|
||||
SpecificTestConfigurationsFactory.createSnackbarVerification()
|
||||
|
||||
@Rule
|
||||
@JvmField
|
||||
|
|
@ -73,8 +74,9 @@ class MainActivityTest : KoinTest {
|
|||
disposable.dispose()
|
||||
}
|
||||
|
||||
/** GIVEN initialized MainActivity WHEN signout is clicked THEN user is signed out */
|
||||
@Test
|
||||
fun GIVEN_initialized_MainActivity_WHEN_signout_is_clicked_THEN_user_is_signed_out() {
|
||||
fun signOutClickedResultsInNavigation() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(ContentScenario.Error(false))
|
||||
activityScenario = ActivityScenario.launch(MainActivity::class.java)
|
||||
|
|
@ -87,8 +89,9 @@ class MainActivityTest : KoinTest {
|
|||
Assert.assertEquals(false, SetupLoggedInState.isLoggedIn())
|
||||
}
|
||||
|
||||
/** GIVEN success response WHEN data is returned THEN it is shown on the ui */
|
||||
@Test
|
||||
fun GIVEN_success_response_WHEN_data_is_returned_THEN_it_is_shown_on_the_ui() {
|
||||
fun successfulDataLoadingShowsTheElementsOnTheUI() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(ContentScenario.Success(false))
|
||||
activityScenario = ActivityScenario.launch(MainActivity::class.java)
|
||||
|
|
@ -100,8 +103,9 @@ class MainActivityTest : KoinTest {
|
|||
homeRobot.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
/** GIVEN success response WHEN item is clicked THEN ui is updated */
|
||||
@Test
|
||||
fun GIVEN_success_response_WHEN_item_is_clicked_THEN_ui_is_updated() {
|
||||
fun clickingOnListElementUpdatesTheElementsFavouriteState() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(ContentScenario.Success(false))
|
||||
activityScenario = ActivityScenario.launch(MainActivity::class.java)
|
||||
|
|
@ -115,8 +119,9 @@ class MainActivityTest : KoinTest {
|
|||
.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
/** GIVEN success response WHEN item is clicked THEN ui is updated even if activity is recreated */
|
||||
@Test
|
||||
fun GIVEN_success_response_WHEN_item_is_clicked_THEN_ui_is_updated_even_if_activity_is_recreated() {
|
||||
fun elementFavouritedIsKeptEvenIfActivityIsRecreated() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(ContentScenario.Success(false))
|
||||
activityScenario = ActivityScenario.launch(MainActivity::class.java)
|
||||
|
|
@ -135,8 +140,9 @@ class MainActivityTest : KoinTest {
|
|||
.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
/** GIVEN success response WHEN item is clicked then clicked again THEN ui is updated */
|
||||
@Test
|
||||
fun GIVEN_success_response_WHEN_item_is_clicked_then_clicked_again_THEN_ui_is_updated() {
|
||||
fun clickingAnElementMultipleTimesProperlyUpdatesIt() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(ContentScenario.Success(false))
|
||||
activityScenario = ActivityScenario.launch(MainActivity::class.java)
|
||||
|
|
@ -152,8 +158,9 @@ class MainActivityTest : KoinTest {
|
|||
.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
/** GIVEN error response WHEN loaded THEN error is Shown */
|
||||
@Test
|
||||
fun GIVEN_error_response_WHEN_loaded_THEN_error_is_Shown() {
|
||||
fun networkErrorResultsInUIErrorStateShown() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(ContentScenario.Error(false))
|
||||
activityScenario = ActivityScenario.launch(MainActivity::class.java)
|
||||
|
|
@ -164,8 +171,9 @@ class MainActivityTest : KoinTest {
|
|||
.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
/** GIVEN error response then success WHEN retried THEN success is shown */
|
||||
@Test
|
||||
fun GIVEN_error_response_then_success_WHEN_retried_THEN_success_is_shown() {
|
||||
fun retryingFromErrorStateAndSucceedingShowsTheData() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(
|
||||
ContentScenario.Error(false)
|
||||
|
|
@ -184,8 +192,9 @@ class MainActivityTest : KoinTest {
|
|||
homeRobot.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
/** GIVEN success then error WHEN retried THEN error is shown */
|
||||
@Test
|
||||
fun GIVEN_success_then_error_WHEN_retried_THEN_error_is_shown() {
|
||||
fun errorIsShownIfTheDataIsFetchedAndErrorIsReceived() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(
|
||||
ContentScenario.Success(false)
|
||||
|
|
@ -206,8 +215,9 @@ class MainActivityTest : KoinTest {
|
|||
.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
/** GIVEN unauthenticated then success WHEN loaded THEN success is shown */
|
||||
@Test
|
||||
fun GIVEN_unauthenticated_then_success_WHEN_loaded_THEN_success_is_shown() {
|
||||
fun authenticationIsHandledWithASingleLoading() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(
|
||||
ContentScenario.Unauthorized(false)
|
||||
|
|
@ -224,8 +234,9 @@ class MainActivityTest : KoinTest {
|
|||
homeRobot.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
/** GIVEN unauthenticated then error WHEN loaded THEN navigated to auth */
|
||||
@Test
|
||||
fun GIVEN_unauthenticated_then_error_WHEN_loaded_THEN_navigated_to_auth() {
|
||||
fun sessionExpirationResultsInNavigation() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup
|
||||
.setScenario(ContentScenario.Unauthorized(false))
|
||||
.setScenario(RefreshTokenScenario.Error)
|
||||
|
|
|
|||
|
|
@ -66,8 +66,9 @@ class AuthActivityTest : KoinTest {
|
|||
disposable.dispose()
|
||||
}
|
||||
|
||||
/** GIVEN non empty password and username and successful response WHEN signIn THEN no error is shown and navigating to home */
|
||||
@Test
|
||||
fun GIVEN_non_empty_password_and_username_and_successful_response_WHEN_signIn_THEN_no_error_is_shown_and_navigating_to_home() {
|
||||
fun properLoginResultsInNavigationToHome() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup.setScenario(
|
||||
AuthScenario.Success(
|
||||
password = "alma",
|
||||
|
|
@ -87,8 +88,9 @@ class AuthActivityTest : KoinTest {
|
|||
loginRobot.assertNavigatedToHome()
|
||||
}
|
||||
|
||||
/** GIVEN empty password and username WHEN signIn THEN error password is shown */
|
||||
@Test
|
||||
fun GIVEN_empty_password_and_username_WHEN_signIn_THEN_error_password_is_shown() {
|
||||
fun emptyPasswordShowsProperErrorMessage() {
|
||||
activityScenario = ActivityScenario.launch(AuthActivity::class.java)
|
||||
loginRobot
|
||||
.setUsername("banan")
|
||||
|
|
@ -102,8 +104,9 @@ class AuthActivityTest : KoinTest {
|
|||
.assertNotLoading()
|
||||
}
|
||||
|
||||
/** GIVEN password and empty username WHEN signIn THEN error username is shown */
|
||||
@Test
|
||||
fun GIVEN_password_and_empty_username_WHEN_signIn_THEN_error_username_is_shown() {
|
||||
fun emptyUserNameShowsProperErrorMessage() {
|
||||
activityScenario = ActivityScenario.launch(AuthActivity::class.java)
|
||||
loginRobot
|
||||
.setPassword("banan")
|
||||
|
|
@ -117,8 +120,9 @@ class AuthActivityTest : KoinTest {
|
|||
.assertNotLoading()
|
||||
}
|
||||
|
||||
/** GIVEN password and username and invalid credentials response WHEN signIn THEN error invalid credentials is shown */
|
||||
@Test
|
||||
fun GIVEN_password_and_username_and_invalid_credentials_response_WHEN_signIn_THEN_error_invalid_credentials_is_shown() {
|
||||
fun invalidCredentialsGivenShowsProperErrorMessage() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup.setScenario(
|
||||
AuthScenario.InvalidCredentials(username = "alma", password = "banan")
|
||||
)
|
||||
|
|
@ -137,8 +141,9 @@ class AuthActivityTest : KoinTest {
|
|||
.assertNotLoading()
|
||||
}
|
||||
|
||||
/** GIVEN password and username and error response WHEN signIn THEN error invalid credentials is shown */
|
||||
@Test
|
||||
fun GIVEN_password_and_username_and_error_response_WHEN_signIn_THEN_error_invalid_credentials_is_shown() {
|
||||
fun networkErrorShowsProperErrorMessage() {
|
||||
mockServerScenarioSetupTestRule.mockServerScenarioSetup.setScenario(
|
||||
AuthScenario.GenericError(username = "alma", password = "banan")
|
||||
)
|
||||
|
|
|
|||
|
|
@ -61,8 +61,9 @@ class SplashActivityTest : KoinTest {
|
|||
disposable.dispose()
|
||||
}
|
||||
|
||||
/** GIVEN loggedInState WHEN opened THEN MainActivity is started */
|
||||
@Test
|
||||
fun GIVEN_loggedInState_WHEN_opened_THEN_MainActivity_is_started() {
|
||||
fun loggedInStateNavigatesToHome() {
|
||||
SetupLoggedInState.setupLogin(mockServerScenarioSetupTestRule.mockServerScenarioSetup)
|
||||
|
||||
activityScenario = ActivityScenario.launch(SplashActivity::class.java)
|
||||
|
|
@ -75,8 +76,9 @@ class SplashActivityTest : KoinTest {
|
|||
SetupLoggedInState.setupLogout()
|
||||
}
|
||||
|
||||
/** GIVEN loggedOffState WHEN opened THEN AuthActivity is started */
|
||||
@Test
|
||||
fun GIVEN_loggedOffState_WHEN_opened_THEN_AuthActivity_is_started() {
|
||||
fun loggedOutStatesNavigatesToAuthentication() {
|
||||
SetupLoggedInState.setupLogout()
|
||||
|
||||
activityScenario = ActivityScenario.launch(SplashActivity::class.java)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue