mirror of
https://github.com/bitwarden/android.git
synced 2026-06-02 02:36:58 -05:00
BIT-202: Adding region selector composable to Landing Screen (#91)
This commit is contained in:
@@ -28,6 +28,7 @@ class LandingScreenTest : BaseComposeTest() {
|
||||
emailInput = "",
|
||||
isContinueButtonEnabled = true,
|
||||
isRememberMeEnabled = false,
|
||||
selectedRegion = LandingState.RegionOption.BITWARDEN_US,
|
||||
),
|
||||
)
|
||||
val viewModel = mockk<LandingViewModel>(relaxed = true) {
|
||||
@@ -37,7 +38,7 @@ class LandingScreenTest : BaseComposeTest() {
|
||||
composeTestRule.setContent {
|
||||
LandingScreen(
|
||||
onNavigateToCreateAccount = {},
|
||||
onNavigateToLogin = {},
|
||||
onNavigateToLogin = { _, _ -> },
|
||||
viewModel = viewModel,
|
||||
)
|
||||
}
|
||||
@@ -57,13 +58,14 @@ class LandingScreenTest : BaseComposeTest() {
|
||||
emailInput = "",
|
||||
isContinueButtonEnabled = true,
|
||||
isRememberMeEnabled = false,
|
||||
selectedRegion = LandingState.RegionOption.BITWARDEN_US,
|
||||
),
|
||||
)
|
||||
}
|
||||
composeTestRule.setContent {
|
||||
LandingScreen(
|
||||
onNavigateToCreateAccount = {},
|
||||
onNavigateToLogin = {},
|
||||
onNavigateToLogin = { _, _ -> },
|
||||
viewModel = viewModel,
|
||||
)
|
||||
}
|
||||
@@ -82,13 +84,14 @@ class LandingScreenTest : BaseComposeTest() {
|
||||
emailInput = "",
|
||||
isContinueButtonEnabled = true,
|
||||
isRememberMeEnabled = false,
|
||||
selectedRegion = LandingState.RegionOption.BITWARDEN_US,
|
||||
),
|
||||
)
|
||||
}
|
||||
composeTestRule.setContent {
|
||||
LandingScreen(
|
||||
onNavigateToCreateAccount = {},
|
||||
onNavigateToLogin = {},
|
||||
onNavigateToLogin = { _, _ -> },
|
||||
viewModel = viewModel,
|
||||
)
|
||||
}
|
||||
@@ -111,13 +114,14 @@ class LandingScreenTest : BaseComposeTest() {
|
||||
emailInput = "",
|
||||
isContinueButtonEnabled = true,
|
||||
isRememberMeEnabled = false,
|
||||
selectedRegion = LandingState.RegionOption.BITWARDEN_US,
|
||||
),
|
||||
)
|
||||
}
|
||||
composeTestRule.setContent {
|
||||
LandingScreen(
|
||||
onNavigateToCreateAccount = {},
|
||||
onNavigateToLogin = {},
|
||||
onNavigateToLogin = { _, _ -> },
|
||||
viewModel = viewModel,
|
||||
)
|
||||
}
|
||||
@@ -137,13 +141,14 @@ class LandingScreenTest : BaseComposeTest() {
|
||||
emailInput = "",
|
||||
isContinueButtonEnabled = true,
|
||||
isRememberMeEnabled = false,
|
||||
selectedRegion = LandingState.RegionOption.BITWARDEN_US,
|
||||
),
|
||||
)
|
||||
}
|
||||
composeTestRule.setContent {
|
||||
LandingScreen(
|
||||
onNavigateToCreateAccount = {},
|
||||
onNavigateToLogin = {},
|
||||
onNavigateToLogin = { _, _ -> },
|
||||
viewModel = viewModel,
|
||||
)
|
||||
}
|
||||
@@ -163,13 +168,14 @@ class LandingScreenTest : BaseComposeTest() {
|
||||
emailInput = "",
|
||||
isContinueButtonEnabled = true,
|
||||
isRememberMeEnabled = false,
|
||||
selectedRegion = LandingState.RegionOption.BITWARDEN_US,
|
||||
),
|
||||
)
|
||||
}
|
||||
composeTestRule.setContent {
|
||||
LandingScreen(
|
||||
onNavigateToCreateAccount = { onNavigateToCreateAccountCalled = true },
|
||||
onNavigateToLogin = {},
|
||||
onNavigateToLogin = { _, _ -> },
|
||||
viewModel = viewModel,
|
||||
)
|
||||
}
|
||||
@@ -179,24 +185,69 @@ class LandingScreenTest : BaseComposeTest() {
|
||||
@Test
|
||||
fun `NavigateToLogin event should call onNavigateToLogin`() {
|
||||
val testEmail = "test@test.com"
|
||||
var onNavigateToLoginEmail = ""
|
||||
val testRegion = "bitwarden.com"
|
||||
|
||||
var capturedEmail: String? = null
|
||||
var capturedRegion: String? = null
|
||||
|
||||
val viewModel = mockk<LandingViewModel>(relaxed = true) {
|
||||
every { eventFlow } returns flowOf(LandingEvent.NavigateToLogin(testEmail))
|
||||
every { eventFlow } returns flowOf(LandingEvent.NavigateToLogin(testEmail, testRegion))
|
||||
every { stateFlow } returns MutableStateFlow(
|
||||
LandingState(
|
||||
emailInput = "",
|
||||
isContinueButtonEnabled = true,
|
||||
isRememberMeEnabled = false,
|
||||
selectedRegion = LandingState.RegionOption.BITWARDEN_US,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
composeTestRule.setContent {
|
||||
LandingScreen(
|
||||
onNavigateToCreateAccount = { },
|
||||
onNavigateToLogin = { onNavigateToLoginEmail = it },
|
||||
onNavigateToLogin = { email, region ->
|
||||
capturedEmail = email
|
||||
capturedRegion = region
|
||||
},
|
||||
viewModel = viewModel,
|
||||
)
|
||||
}
|
||||
assertEquals(testEmail, onNavigateToLoginEmail)
|
||||
|
||||
assertEquals(testEmail, capturedEmail)
|
||||
assertEquals(testRegion, capturedRegion)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `selecting region should send RegionOptionSelect action`() {
|
||||
val selectedRegion = LandingState.RegionOption.BITWARDEN_EU
|
||||
val viewModel = mockk<LandingViewModel>(relaxed = true) {
|
||||
every { eventFlow } returns emptyFlow()
|
||||
every { stateFlow } returns MutableStateFlow(
|
||||
LandingState(
|
||||
emailInput = "",
|
||||
isContinueButtonEnabled = true,
|
||||
isRememberMeEnabled = false,
|
||||
selectedRegion = LandingState.RegionOption.BITWARDEN_US,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
composeTestRule.setContent {
|
||||
LandingScreen(
|
||||
onNavigateToCreateAccount = {},
|
||||
onNavigateToLogin = { _, _ -> },
|
||||
viewModel = viewModel,
|
||||
)
|
||||
}
|
||||
|
||||
// Clicking to open dropdown
|
||||
composeTestRule.onNodeWithText(LandingState.RegionOption.BITWARDEN_US.label).performClick()
|
||||
|
||||
// Clicking item from the dropdown menu
|
||||
composeTestRule.onNodeWithText(selectedRegion.label).performClick()
|
||||
|
||||
verify {
|
||||
viewModel.trySendAction(LandingAction.RegionOptionSelect(selectedRegion))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ class LandingViewModelTest : BaseViewModelTest() {
|
||||
viewModel.eventFlow.test {
|
||||
viewModel.actionChannel.trySend(LandingAction.ContinueButtonClick)
|
||||
assertEquals(
|
||||
LandingEvent.NavigateToLogin("input"),
|
||||
LandingEvent.NavigateToLogin("input", "bitwarden.com"),
|
||||
awaitItem(),
|
||||
)
|
||||
}
|
||||
@@ -106,11 +106,26 @@ class LandingViewModelTest : BaseViewModelTest() {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `RegionOptionSelect should update value of selected region`() = runTest {
|
||||
val inputRegion = LandingState.RegionOption.BITWARDEN_EU
|
||||
val viewModel = LandingViewModel(SavedStateHandle())
|
||||
viewModel.stateFlow.test {
|
||||
awaitItem()
|
||||
viewModel.trySendAction(LandingAction.RegionOptionSelect(inputRegion))
|
||||
assertEquals(
|
||||
DEFAULT_STATE.copy(selectedRegion = LandingState.RegionOption.BITWARDEN_EU),
|
||||
awaitItem(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val DEFAULT_STATE = LandingState(
|
||||
emailInput = "",
|
||||
isContinueButtonEnabled = false,
|
||||
isRememberMeEnabled = false,
|
||||
selectedRegion = LandingState.RegionOption.BITWARDEN_US,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ class LoginScreenTest : BaseComposeTest() {
|
||||
emailAddress = "",
|
||||
isLoginButtonEnabled = false,
|
||||
passwordInput = "",
|
||||
region = "",
|
||||
),
|
||||
)
|
||||
}
|
||||
@@ -58,6 +59,7 @@ class LoginScreenTest : BaseComposeTest() {
|
||||
emailAddress = "",
|
||||
isLoginButtonEnabled = false,
|
||||
passwordInput = "",
|
||||
region = "",
|
||||
),
|
||||
)
|
||||
}
|
||||
@@ -82,6 +84,7 @@ class LoginScreenTest : BaseComposeTest() {
|
||||
emailAddress = "",
|
||||
isLoginButtonEnabled = false,
|
||||
passwordInput = "",
|
||||
region = "",
|
||||
),
|
||||
)
|
||||
}
|
||||
@@ -106,6 +109,7 @@ class LoginScreenTest : BaseComposeTest() {
|
||||
emailAddress = "",
|
||||
isLoginButtonEnabled = false,
|
||||
passwordInput = "",
|
||||
region = "",
|
||||
),
|
||||
)
|
||||
}
|
||||
@@ -142,6 +146,7 @@ class LoginScreenTest : BaseComposeTest() {
|
||||
emailAddress = "",
|
||||
isLoginButtonEnabled = false,
|
||||
passwordInput = "",
|
||||
region = "",
|
||||
),
|
||||
)
|
||||
}
|
||||
@@ -167,6 +172,7 @@ class LoginScreenTest : BaseComposeTest() {
|
||||
emailAddress = "",
|
||||
isLoginButtonEnabled = false,
|
||||
passwordInput = "",
|
||||
region = "",
|
||||
),
|
||||
)
|
||||
}
|
||||
@@ -192,6 +198,7 @@ class LoginScreenTest : BaseComposeTest() {
|
||||
emailAddress = "",
|
||||
isLoginButtonEnabled = false,
|
||||
passwordInput = "",
|
||||
region = "",
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ class LoginViewModelTest : BaseViewModelTest() {
|
||||
|
||||
private val savedStateHandle = SavedStateHandle().also {
|
||||
it["email_address"] = "test@gmail.com"
|
||||
it["region_label"] = ""
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
@@ -262,6 +263,7 @@ class LoginViewModelTest : BaseViewModelTest() {
|
||||
emailAddress = "test@gmail.com",
|
||||
passwordInput = "",
|
||||
isLoginButtonEnabled = true,
|
||||
region = "",
|
||||
)
|
||||
|
||||
private const val LOGIN_RESULT_PATH =
|
||||
|
||||
Reference in New Issue
Block a user