Repository navigation
test(messenger): one shared ChatViewModel fixture - #1924
Merged
Merged
Conversation
Ten test classes each built ChatViewModel with a 40-argument named constructor call. Every constructor parameter the planned ChatViewModel split adds would mean editing all of them. chatViewModel(...) in ChatViewModelFixture.kt defaults every dependency to the value most of those copies used; each test now passes only the collaborators it stubs or asserts on. Overrides are the values each copy passed before, so no test changes behaviour.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ChatViewModelhas about 40 constructor parameters, and ten test classes in the messenger module each carried their owncreateViewModelwith the full named-argument call. The plannedChatViewModelsplit adds parameters, and each one would mean editing all ten.This adds
chatViewModel(...)inChatViewModelFixture.kt. Every dependency is a defaulted, named parameter (relaxed mocks, or the real empty instance where the type is a value such asE2eePolicy()); only theMainCoroutineRuledispatcher is required. The ten tests now pass only what they stub or assert on. Where the copies differed, the per-test value is an override at the call site; defaults are the common case. The tests keep their thincreateViewModelwrappers, and unused imports left behind are removed.Test-only: no production code changes. The messenger
testDebugUnitTesttask runs the same 1112 tests before and after, with identical names.MuteChatAnalyticsTestandMuteChatViewerStateSeedTestmatch aChatViewModel(grep but buildMuteChatViewModel, so they are untouched.