mirror of
https://github.com/bitwarden/android.git
synced 2026-05-30 16:43:22 -05:00
BIT-711: Adding UI for AddyIo service (#456)
This commit is contained in:
@@ -896,7 +896,7 @@ class GeneratorScreenTest : BaseComposeTest() {
|
||||
.UsernameType
|
||||
.ForwardedEmailAlias
|
||||
.ServiceTypeOption
|
||||
.ANON_ADDY
|
||||
.ADDY_IO
|
||||
|
||||
// Opens the menu
|
||||
composeTestRule
|
||||
@@ -927,6 +927,94 @@ class GeneratorScreenTest : BaseComposeTest() {
|
||||
|
||||
//endregion Forwarded Email Alias Tests
|
||||
|
||||
//region Addy.Io Service Type Tests
|
||||
|
||||
@Suppress("MaxLineLength")
|
||||
@Test
|
||||
fun `in Username_ForwardedEmailAlias_AddyIo state, updating access token text input should send AccessTokenTextChange action`() {
|
||||
updateState(
|
||||
GeneratorState(
|
||||
generatedText = "Placeholder",
|
||||
selectedType = GeneratorState.MainType.Username(
|
||||
GeneratorState.MainType.Username.UsernameType.ForwardedEmailAlias(
|
||||
selectedServiceType = GeneratorState
|
||||
.MainType
|
||||
.Username
|
||||
.UsernameType
|
||||
.ForwardedEmailAlias
|
||||
.ServiceType
|
||||
.AddyIo(),
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
val newAccessToken = "accessToken"
|
||||
|
||||
composeTestRule
|
||||
.onNodeWithText("API access token")
|
||||
.performScrollTo()
|
||||
.performTextInput(newAccessToken)
|
||||
|
||||
verify {
|
||||
viewModel.trySendAction(
|
||||
GeneratorAction
|
||||
.MainType
|
||||
.Username
|
||||
.UsernameType
|
||||
.ForwardedEmailAlias
|
||||
.AddyIo
|
||||
.AccessTokenTextChange(
|
||||
accessToken = newAccessToken,
|
||||
),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("MaxLineLength")
|
||||
@Test
|
||||
fun `in Username_ForwardedEmailAlias_AddyIo state, updating domain name text input should send DomainTextChange action`() {
|
||||
updateState(
|
||||
GeneratorState(
|
||||
generatedText = "Placeholder",
|
||||
selectedType = GeneratorState.MainType.Username(
|
||||
GeneratorState.MainType.Username.UsernameType.ForwardedEmailAlias(
|
||||
selectedServiceType = GeneratorState
|
||||
.MainType
|
||||
.Username
|
||||
.UsernameType
|
||||
.ForwardedEmailAlias
|
||||
.ServiceType
|
||||
.AddyIo(),
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
val newDomainName = "domainName"
|
||||
|
||||
composeTestRule
|
||||
.onNodeWithText("Domain name (required)")
|
||||
.performScrollTo()
|
||||
.performTextInput(newDomainName)
|
||||
|
||||
verify {
|
||||
viewModel.trySendAction(
|
||||
GeneratorAction
|
||||
.MainType
|
||||
.Username
|
||||
.UsernameType
|
||||
.ForwardedEmailAlias
|
||||
.AddyIo
|
||||
.DomainTextChange(
|
||||
domain = newDomainName,
|
||||
),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
//endregion Addy.Io Service Type Tests
|
||||
|
||||
//region DuckDuckGo Service Type Tests
|
||||
|
||||
@Suppress("MaxLineLength")
|
||||
|
||||
@@ -31,6 +31,9 @@ class GeneratorViewModelTest : BaseViewModelTest() {
|
||||
private val forwardedEmailAliasSavedStateHandle =
|
||||
createSavedStateHandleWithState(initialForwardedEmailAliasState)
|
||||
|
||||
private val initialAddyIoState = createAddyIoState()
|
||||
private val addyIoSavedStateHandle = createSavedStateHandleWithState(initialAddyIoState)
|
||||
|
||||
private val initialDuckDuckGoState = createDuckDuckGoState()
|
||||
private val duckDuckGoSavedStateHandle = createSavedStateHandleWithState(initialDuckDuckGoState)
|
||||
|
||||
@@ -930,7 +933,7 @@ class GeneratorViewModelTest : BaseViewModelTest() {
|
||||
.UsernameType
|
||||
.ForwardedEmailAlias
|
||||
.ServiceTypeOption
|
||||
.ANON_ADDY,
|
||||
.ADDY_IO,
|
||||
)
|
||||
|
||||
viewModel.actionChannel.trySend(action)
|
||||
@@ -948,7 +951,7 @@ class GeneratorViewModelTest : BaseViewModelTest() {
|
||||
.UsernameType
|
||||
.ForwardedEmailAlias
|
||||
.ServiceType
|
||||
.AnonAddy(),
|
||||
.AddyIo(),
|
||||
),
|
||||
),
|
||||
)
|
||||
@@ -957,6 +960,85 @@ class GeneratorViewModelTest : BaseViewModelTest() {
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
inner class AddyIoActions {
|
||||
private val defaultAddyIoState = createAddyIoState()
|
||||
private lateinit var viewModel: GeneratorViewModel
|
||||
|
||||
@BeforeEach
|
||||
fun setup() {
|
||||
viewModel = GeneratorViewModel(addyIoSavedStateHandle, fakeGeneratorRepository)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `AccessTokenTextChange should update access token text correctly`() = runTest {
|
||||
val newAccessToken = "newAccessToken"
|
||||
val action = GeneratorAction
|
||||
.MainType
|
||||
.Username
|
||||
.UsernameType
|
||||
.ForwardedEmailAlias
|
||||
.AddyIo
|
||||
.AccessTokenTextChange(
|
||||
accessToken = newAccessToken,
|
||||
)
|
||||
|
||||
viewModel.actionChannel.trySend(action)
|
||||
|
||||
val expectedState = defaultAddyIoState.copy(
|
||||
selectedType = GeneratorState.MainType.Username(
|
||||
GeneratorState.MainType.Username.UsernameType.ForwardedEmailAlias(
|
||||
selectedServiceType = GeneratorState
|
||||
.MainType
|
||||
.Username
|
||||
.UsernameType
|
||||
.ForwardedEmailAlias
|
||||
.ServiceType
|
||||
.AddyIo(
|
||||
apiAccessToken = newAccessToken,
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
assertEquals(expectedState, viewModel.stateFlow.value)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `DomainTextChange should update the domain text correctly`() = runTest {
|
||||
val newDomainName = "newDomain"
|
||||
val action = GeneratorAction
|
||||
.MainType
|
||||
.Username
|
||||
.UsernameType
|
||||
.ForwardedEmailAlias
|
||||
.AddyIo
|
||||
.DomainTextChange(
|
||||
domain = newDomainName,
|
||||
)
|
||||
|
||||
viewModel.actionChannel.trySend(action)
|
||||
|
||||
val expectedState = defaultAddyIoState.copy(
|
||||
selectedType = GeneratorState.MainType.Username(
|
||||
GeneratorState.MainType.Username.UsernameType.ForwardedEmailAlias(
|
||||
selectedServiceType = GeneratorState
|
||||
.MainType
|
||||
.Username
|
||||
.UsernameType
|
||||
.ForwardedEmailAlias
|
||||
.ServiceType
|
||||
.AddyIo(
|
||||
domainName = newDomainName,
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
assertEquals(expectedState, viewModel.stateFlow.value)
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
inner class DuckDuckGoActions {
|
||||
private val defaultDuckDuckGoState = createDuckDuckGoState()
|
||||
@@ -1253,6 +1335,24 @@ class GeneratorViewModelTest : BaseViewModelTest() {
|
||||
),
|
||||
)
|
||||
|
||||
private fun createAddyIoState(
|
||||
generatedText: String = "defaultAddyIo",
|
||||
): GeneratorState =
|
||||
GeneratorState(
|
||||
generatedText = generatedText,
|
||||
selectedType = GeneratorState.MainType.Username(
|
||||
GeneratorState.MainType.Username.UsernameType.ForwardedEmailAlias(
|
||||
selectedServiceType = GeneratorState
|
||||
.MainType
|
||||
.Username
|
||||
.UsernameType
|
||||
.ForwardedEmailAlias
|
||||
.ServiceType
|
||||
.AddyIo(),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
private fun createDuckDuckGoState(
|
||||
generatedText: String = "defaultDuckDuckGo",
|
||||
): GeneratorState =
|
||||
|
||||
Reference in New Issue
Block a user