From 7e4dc10b1b12ed7ce0cd2b54692b64d62de3f899 Mon Sep 17 00:00:00 2001 From: joshua-livefront <139182194+joshua-livefront@users.noreply.github.com> Date: Mon, 20 Nov 2023 14:39:29 -0500 Subject: [PATCH] Removing unnecessary event flows from generator viewmodel tests (#262) --- .../generator/GeneratorViewModelTest.kt | 454 +++++++++--------- 1 file changed, 215 insertions(+), 239 deletions(-) diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/generator/GeneratorViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/generator/GeneratorViewModelTest.kt index 94edfa78b3..6a60fcf671 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/generator/GeneratorViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/tools/feature/generator/GeneratorViewModelTest.kt @@ -209,26 +209,24 @@ class GeneratorViewModelTest : BaseViewModelTest() { GeneratedPasswordResult.Success(updatedGeneratedPassword), ) - viewModel.eventFlow.test { - val newLength = 16 + val newLength = 16 - viewModel.actionChannel.trySend( - GeneratorAction.MainType.Passcode.PasscodeType.Password.SliderLengthChange( + viewModel.actionChannel.trySend( + GeneratorAction.MainType.Passcode.PasscodeType.Password.SliderLengthChange( + length = newLength, + ), + ) + + val expectedState = defaultPasswordState.copy( + generatedText = updatedGeneratedPassword, + selectedType = GeneratorState.MainType.Passcode( + GeneratorState.MainType.Passcode.PasscodeType.Password( length = newLength, ), - ) + ), + ) - val expectedState = defaultPasswordState.copy( - generatedText = updatedGeneratedPassword, - selectedType = GeneratorState.MainType.Passcode( - GeneratorState.MainType.Passcode.PasscodeType.Password( - length = newLength, - ), - ), - ) - - assertEquals(expectedState, viewModel.stateFlow.value) - } + assertEquals(expectedState, viewModel.stateFlow.value) } @Suppress("MaxLineLength") @@ -240,31 +238,29 @@ class GeneratorViewModelTest : BaseViewModelTest() { GeneratedPasswordResult.Success(updatedGeneratedPassword), ) - viewModel.eventFlow.test { - val useCapitals = true + val useCapitals = true - viewModel.actionChannel.trySend( - GeneratorAction - .MainType - .Passcode - .PasscodeType - .Password - .ToggleCapitalLettersChange( - useCapitals = useCapitals, - ), - ) - - val expectedState = defaultPasswordState.copy( - generatedText = updatedGeneratedPassword, - selectedType = GeneratorState.MainType.Passcode( - GeneratorState.MainType.Passcode.PasscodeType.Password( - useCapitals = useCapitals, - ), + viewModel.actionChannel.trySend( + GeneratorAction + .MainType + .Passcode + .PasscodeType + .Password + .ToggleCapitalLettersChange( + useCapitals = useCapitals, ), - ) + ) - assertEquals(expectedState, viewModel.stateFlow.value) - } + val expectedState = defaultPasswordState.copy( + generatedText = updatedGeneratedPassword, + selectedType = GeneratorState.MainType.Passcode( + GeneratorState.MainType.Passcode.PasscodeType.Password( + useCapitals = useCapitals, + ), + ), + ) + + assertEquals(expectedState, viewModel.stateFlow.value) } @Suppress("MaxLineLength") @@ -276,31 +272,29 @@ class GeneratorViewModelTest : BaseViewModelTest() { GeneratedPasswordResult.Success(updatedGeneratedPassword), ) - viewModel.eventFlow.test { - val useLowercase = true + val useLowercase = true - viewModel.actionChannel.trySend( - GeneratorAction - .MainType - .Passcode - .PasscodeType - .Password - .ToggleLowercaseLettersChange( - useLowercase = useLowercase, - ), - ) - - val expectedState = defaultPasswordState.copy( - generatedText = updatedGeneratedPassword, - selectedType = GeneratorState.MainType.Passcode( - GeneratorState.MainType.Passcode.PasscodeType.Password( - useLowercase = useLowercase, - ), + viewModel.actionChannel.trySend( + GeneratorAction + .MainType + .Passcode + .PasscodeType + .Password + .ToggleLowercaseLettersChange( + useLowercase = useLowercase, ), - ) + ) - assertEquals(expectedState, viewModel.stateFlow.value) - } + val expectedState = defaultPasswordState.copy( + generatedText = updatedGeneratedPassword, + selectedType = GeneratorState.MainType.Passcode( + GeneratorState.MainType.Passcode.PasscodeType.Password( + useLowercase = useLowercase, + ), + ), + ) + + assertEquals(expectedState, viewModel.stateFlow.value) } @Test @@ -310,26 +304,24 @@ class GeneratorViewModelTest : BaseViewModelTest() { GeneratedPasswordResult.Success(updatedGeneratedPassword), ) - viewModel.eventFlow.test { - val useNumbers = true + val useNumbers = true - viewModel.actionChannel.trySend( - GeneratorAction.MainType.Passcode.PasscodeType.Password.ToggleNumbersChange( + viewModel.actionChannel.trySend( + GeneratorAction.MainType.Passcode.PasscodeType.Password.ToggleNumbersChange( + useNumbers = useNumbers, + ), + ) + + val expectedState = defaultPasswordState.copy( + generatedText = updatedGeneratedPassword, + selectedType = GeneratorState.MainType.Passcode( + GeneratorState.MainType.Passcode.PasscodeType.Password( useNumbers = useNumbers, ), - ) + ), + ) - val expectedState = defaultPasswordState.copy( - generatedText = updatedGeneratedPassword, - selectedType = GeneratorState.MainType.Passcode( - GeneratorState.MainType.Passcode.PasscodeType.Password( - useNumbers = useNumbers, - ), - ), - ) - - assertEquals(expectedState, viewModel.stateFlow.value) - } + assertEquals(expectedState, viewModel.stateFlow.value) } @Suppress("MaxLineLength") @@ -341,31 +333,29 @@ class GeneratorViewModelTest : BaseViewModelTest() { GeneratedPasswordResult.Success(updatedGeneratedPassword), ) - viewModel.eventFlow.test { - val useSpecialChars = true + val useSpecialChars = true - viewModel.actionChannel.trySend( - GeneratorAction - .MainType - .Passcode - .PasscodeType - .Password - .ToggleSpecialCharactersChange( - useSpecialChars = useSpecialChars, - ), - ) - - val expectedState = defaultPasswordState.copy( - generatedText = updatedGeneratedPassword, - selectedType = GeneratorState.MainType.Passcode( - GeneratorState.MainType.Passcode.PasscodeType.Password( - useSpecialChars = useSpecialChars, - ), + viewModel.actionChannel.trySend( + GeneratorAction + .MainType + .Passcode + .PasscodeType + .Password + .ToggleSpecialCharactersChange( + useSpecialChars = useSpecialChars, ), - ) + ) - assertEquals(expectedState, viewModel.stateFlow.value) - } + val expectedState = defaultPasswordState.copy( + generatedText = updatedGeneratedPassword, + selectedType = GeneratorState.MainType.Passcode( + GeneratorState.MainType.Passcode.PasscodeType.Password( + useSpecialChars = useSpecialChars, + ), + ), + ) + + assertEquals(expectedState, viewModel.stateFlow.value) } @Suppress("MaxLineLength") @@ -377,26 +367,24 @@ class GeneratorViewModelTest : BaseViewModelTest() { GeneratedPasswordResult.Success(updatedGeneratedPassword), ) - viewModel.eventFlow.test { - val minNumbers = 4 + val minNumbers = 4 - viewModel.actionChannel.trySend( - GeneratorAction.MainType.Passcode.PasscodeType.Password.MinNumbersCounterChange( + viewModel.actionChannel.trySend( + GeneratorAction.MainType.Passcode.PasscodeType.Password.MinNumbersCounterChange( + minNumbers = minNumbers, + ), + ) + + val expectedState = defaultPasswordState.copy( + generatedText = updatedGeneratedPassword, + selectedType = GeneratorState.MainType.Passcode( + GeneratorState.MainType.Passcode.PasscodeType.Password( minNumbers = minNumbers, ), - ) + ), + ) - val expectedState = defaultPasswordState.copy( - generatedText = updatedGeneratedPassword, - selectedType = GeneratorState.MainType.Passcode( - GeneratorState.MainType.Passcode.PasscodeType.Password( - minNumbers = minNumbers, - ), - ), - ) - - assertEquals(expectedState, viewModel.stateFlow.value) - } + assertEquals(expectedState, viewModel.stateFlow.value) } @Suppress("MaxLineLength") @@ -408,31 +396,29 @@ class GeneratorViewModelTest : BaseViewModelTest() { GeneratedPasswordResult.Success(updatedGeneratedPassword), ) - viewModel.eventFlow.test { - val minSpecial = 2 + val minSpecial = 2 - viewModel.actionChannel.trySend( - GeneratorAction - .MainType - .Passcode - .PasscodeType - .Password - .MinSpecialCharactersChange( - minSpecial = minSpecial, - ), - ) - - val expectedState = defaultPasswordState.copy( - generatedText = updatedGeneratedPassword, - selectedType = GeneratorState.MainType.Passcode( - GeneratorState.MainType.Passcode.PasscodeType.Password( - minSpecial = minSpecial, - ), + viewModel.actionChannel.trySend( + GeneratorAction + .MainType + .Passcode + .PasscodeType + .Password + .MinSpecialCharactersChange( + minSpecial = minSpecial, ), - ) + ) - assertEquals(expectedState, viewModel.stateFlow.value) - } + val expectedState = defaultPasswordState.copy( + generatedText = updatedGeneratedPassword, + selectedType = GeneratorState.MainType.Passcode( + GeneratorState.MainType.Passcode.PasscodeType.Password( + minSpecial = minSpecial, + ), + ), + ) + + assertEquals(expectedState, viewModel.stateFlow.value) } @Suppress("MaxLineLength") @@ -444,31 +430,29 @@ class GeneratorViewModelTest : BaseViewModelTest() { GeneratedPasswordResult.Success(updatedGeneratedPassword), ) - viewModel.eventFlow.test { - val avoidAmbiguousChars = true + val avoidAmbiguousChars = true - viewModel.actionChannel.trySend( - GeneratorAction - .MainType - .Passcode - .PasscodeType - .Password - .ToggleAvoidAmbigousCharactersChange( - avoidAmbiguousChars = avoidAmbiguousChars, - ), - ) - - val expectedState = defaultPasswordState.copy( - generatedText = updatedGeneratedPassword, - selectedType = GeneratorState.MainType.Passcode( - GeneratorState.MainType.Passcode.PasscodeType.Password( - avoidAmbiguousChars = avoidAmbiguousChars, - ), + viewModel.actionChannel.trySend( + GeneratorAction + .MainType + .Passcode + .PasscodeType + .Password + .ToggleAvoidAmbigousCharactersChange( + avoidAmbiguousChars = avoidAmbiguousChars, ), - ) + ) - assertEquals(expectedState, viewModel.stateFlow.value) - } + val expectedState = defaultPasswordState.copy( + generatedText = updatedGeneratedPassword, + selectedType = GeneratorState.MainType.Passcode( + GeneratorState.MainType.Passcode.PasscodeType.Password( + avoidAmbiguousChars = avoidAmbiguousChars, + ), + ), + ) + + assertEquals(expectedState, viewModel.stateFlow.value) } } @@ -489,111 +473,103 @@ class GeneratorViewModelTest : BaseViewModelTest() { @Test fun `NumWordsCounterChange should update the numWords property correctly`() = runTest { - viewModel.eventFlow.test { - val newNumWords = 4 - viewModel.actionChannel.trySend( - GeneratorAction - .MainType - .Passcode - .PasscodeType - .Passphrase - .NumWordsCounterChange( - numWords = newNumWords, - ), - ) - - val expectedState = defaultPassphraseState.copy( - selectedType = GeneratorState.MainType.Passcode( - GeneratorState.MainType.Passcode.PasscodeType.Passphrase( - numWords = newNumWords, - ), + val newNumWords = 4 + viewModel.actionChannel.trySend( + GeneratorAction + .MainType + .Passcode + .PasscodeType + .Passphrase + .NumWordsCounterChange( + numWords = newNumWords, ), - ) + ) - assertEquals(expectedState, viewModel.stateFlow.value) - } + val expectedState = defaultPassphraseState.copy( + selectedType = GeneratorState.MainType.Passcode( + GeneratorState.MainType.Passcode.PasscodeType.Passphrase( + numWords = newNumWords, + ), + ), + ) + + assertEquals(expectedState, viewModel.stateFlow.value) } @Test fun `WordSeparatorTextChange should update wordSeparator correctly to new value`() = runTest { - viewModel.eventFlow.test { - val newWordSeparatorChar = '_' + val newWordSeparatorChar = '_' - viewModel.actionChannel.trySend( - GeneratorAction - .MainType - .Passcode - .PasscodeType.Passphrase - .WordSeparatorTextChange( - wordSeparator = newWordSeparatorChar, - ), - ) - - val expectedState = defaultPassphraseState.copy( - selectedType = GeneratorState.MainType.Passcode( - GeneratorState.MainType.Passcode.PasscodeType.Passphrase( - wordSeparator = newWordSeparatorChar, - ), + viewModel.actionChannel.trySend( + GeneratorAction + .MainType + .Passcode + .PasscodeType.Passphrase + .WordSeparatorTextChange( + wordSeparator = newWordSeparatorChar, ), - ) + ) - assertEquals(expectedState, viewModel.stateFlow.value) - } + val expectedState = defaultPassphraseState.copy( + selectedType = GeneratorState.MainType.Passcode( + GeneratorState.MainType.Passcode.PasscodeType.Passphrase( + wordSeparator = newWordSeparatorChar, + ), + ), + ) + + assertEquals(expectedState, viewModel.stateFlow.value) } @Test fun `ToggleIncludeNumberChange should update the includeNumber property correctly`() = runTest { - viewModel.eventFlow.test { - viewModel.actionChannel.trySend( - GeneratorAction - .MainType - .Passcode - .PasscodeType - .Passphrase - .ToggleIncludeNumberChange( - includeNumber = true, - ), - ) - - val expectedState = defaultPassphraseState.copy( - selectedType = GeneratorState.MainType.Passcode( - selectedType = GeneratorState.MainType.Passcode.PasscodeType.Passphrase( - includeNumber = true, - ), + viewModel.actionChannel.trySend( + GeneratorAction + .MainType + .Passcode + .PasscodeType + .Passphrase + .ToggleIncludeNumberChange( + includeNumber = true, ), - ) + ) - assertEquals(expectedState, viewModel.stateFlow.value) - } + val expectedState = defaultPassphraseState.copy( + selectedType = GeneratorState.MainType.Passcode( + selectedType = GeneratorState.MainType.Passcode.PasscodeType.Passphrase( + includeNumber = true, + ), + ), + ) + + assertEquals(expectedState, viewModel.stateFlow.value) } @Test fun `ToggleCapitalizeChange should update the capitalize property correctly`() = runTest { - viewModel.eventFlow.test { - viewModel.actionChannel.trySend( - GeneratorAction - .MainType - .Passcode - .PasscodeType - .Passphrase - .ToggleCapitalizeChange( - capitalize = true, - ), - ) - - val expectedState = defaultPassphraseState.copy( - selectedType = GeneratorState.MainType.Passcode( - GeneratorState.MainType.Passcode.PasscodeType.Passphrase( - capitalize = true, - ), + viewModel.actionChannel.trySend( + GeneratorAction + .MainType + .Passcode + .PasscodeType + .Passphrase + .ToggleCapitalizeChange( + capitalize = true, ), - ) + ) - assertEquals(expectedState, viewModel.stateFlow.value) - } + val expectedState = defaultPassphraseState.copy( + selectedType = GeneratorState.MainType.Passcode( + GeneratorState.MainType.Passcode.PasscodeType.Passphrase( + capitalize = true, + ), + ), + ) + + assertEquals(expectedState, viewModel.stateFlow.value) } } //region Helper Functions