diff --git a/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt b/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt index 5d419c09c9..f6c322af40 100644 --- a/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt +++ b/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt @@ -126,7 +126,7 @@ class OnboardingViewModelTest { viewModel.handle(OnboardingAction.UpdateSignMode(SignMode.SignUp)) test - .assertStatesWithPrevious( + .assertStatesChanges( initialState, { copy(signMode = SignMode.SignUp) }, { copy(asyncRegistration = Loading()) }, @@ -144,7 +144,7 @@ class OnboardingViewModelTest { viewModel.handle(OnboardingAction.PostRegisterAction(A_LOADABLE_REGISTER_ACTION)) test - .assertStatesWithPrevious( + .assertStatesChanges( initialState, { copy(asyncRegistration = Loading()) }, { copy(asyncRegistration = Uninitialized) } @@ -174,7 +174,7 @@ class OnboardingViewModelTest { viewModel.handle(OnboardingAction.PostRegisterAction(A_RESULT_IGNORED_REGISTER_ACTION)) test - .assertStatesWithPrevious( + .assertStatesChanges( initialState, { copy(asyncRegistration = Loading()) }, { copy(asyncRegistration = Uninitialized) } @@ -192,7 +192,7 @@ class OnboardingViewModelTest { viewModel.handle(OnboardingAction.PostRegisterAction(A_LOADABLE_REGISTER_ACTION)) test - .assertStatesWithPrevious( + .assertStatesChanges( initialState, { copy(asyncRegistration = Loading()) }, { copy(asyncLoginAction = Success(Unit), personalizationState = A_HOMESERVER_CAPABILITIES.toPersonalisationState()) }, @@ -210,7 +210,7 @@ class OnboardingViewModelTest { viewModel.handle(OnboardingAction.PostRegisterAction(A_LOADABLE_REGISTER_ACTION)) test - .assertStatesWithPrevious( + .assertStatesChanges( initialState, { copy(asyncRegistration = Loading()) }, { copy(asyncLoginAction = Success(Unit), personalizationState = A_HOMESERVER_CAPABILITIES.toPersonalisationState()) }, @@ -229,7 +229,7 @@ class OnboardingViewModelTest { viewModel.handle(OnboardingAction.UpdateDisplayName(A_DISPLAY_NAME)) test - .assertStatesWithPrevious(personalisedInitialState, expectedSuccessfulDisplayNameUpdateStates()) + .assertStatesChanges(personalisedInitialState, expectedSuccessfulDisplayNameUpdateStates()) .assertEvents(OnboardingViewEvents.OnChooseProfilePicture) .finish() fakeSession.fakeProfileService.verifyUpdatedName(fakeSession.myUserId, A_DISPLAY_NAME) @@ -244,7 +244,7 @@ class OnboardingViewModelTest { viewModel.handle(OnboardingAction.UpdateDisplayName(A_DISPLAY_NAME)) test - .assertStatesWithPrevious(personalisedInitialState, expectedSuccessfulDisplayNameUpdateStates()) + .assertStatesChanges(personalisedInitialState, expectedSuccessfulDisplayNameUpdateStates()) .assertEvents(OnboardingViewEvents.OnPersonalizationComplete) .finish() fakeSession.fakeProfileService.verifyUpdatedName(fakeSession.myUserId, A_DISPLAY_NAME) @@ -258,7 +258,7 @@ class OnboardingViewModelTest { viewModel.handle(OnboardingAction.UpdateDisplayName(A_DISPLAY_NAME)) test - .assertStatesWithPrevious( + .assertStatesChanges( initialState, { copy(asyncDisplayName = Loading()) }, { copy(asyncDisplayName = Fail(AN_ERROR)) }, diff --git a/vector/src/test/java/im/vector/app/test/Extensions.kt b/vector/src/test/java/im/vector/app/test/Extensions.kt index 5fe07b967a..67eff7ca11 100644 --- a/vector/src/test/java/im/vector/app/test/Extensions.kt +++ b/vector/src/test/java/im/vector/app/test/Extensions.kt @@ -55,11 +55,15 @@ class ViewModelTest( return this } - fun assertStatesWithPrevious(initial: S, vararg expected: S.() -> S): ViewModelTest { - return assertStatesWithPrevious(initial, expected.toList()) + fun assertStatesChanges(initial: S, vararg expected: S.() -> S): ViewModelTest { + return assertStatesChanges(initial, expected.toList()) } - fun assertStatesWithPrevious(initial: S, expected: List S>): ViewModelTest { + /** + * Asserts the expected states are in the same order as the actual state emissions + * Each expected lambda is given the previous expected state, starting with the initial + */ + fun assertStatesChanges(initial: S, expected: List S>): ViewModelTest { val reducedExpectedStates = expected.fold(mutableListOf(initial)) { acc, curr -> val next = curr.invoke(acc.last()) acc.add(next)