BIT-711: Adding UI for AddyIo service (#456)

This commit is contained in:
joshua-livefront
2023-12-29 14:16:46 -05:00
committed by GitHub
parent 77006ab281
commit ef2bdeabca
4 changed files with 367 additions and 19 deletions

View File

@@ -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")

View File

@@ -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 =