updating with previous state helper and including javadoc to help explain its usage
This commit is contained in:
parent
d77061b229
commit
5df2ae9ae2
@ -126,7 +126,7 @@ class OnboardingViewModelTest {
|
|||||||
viewModel.handle(OnboardingAction.UpdateSignMode(SignMode.SignUp))
|
viewModel.handle(OnboardingAction.UpdateSignMode(SignMode.SignUp))
|
||||||
|
|
||||||
test
|
test
|
||||||
.assertStatesWithPrevious(
|
.assertStatesChanges(
|
||||||
initialState,
|
initialState,
|
||||||
{ copy(signMode = SignMode.SignUp) },
|
{ copy(signMode = SignMode.SignUp) },
|
||||||
{ copy(asyncRegistration = Loading()) },
|
{ copy(asyncRegistration = Loading()) },
|
||||||
@ -144,7 +144,7 @@ class OnboardingViewModelTest {
|
|||||||
viewModel.handle(OnboardingAction.PostRegisterAction(A_LOADABLE_REGISTER_ACTION))
|
viewModel.handle(OnboardingAction.PostRegisterAction(A_LOADABLE_REGISTER_ACTION))
|
||||||
|
|
||||||
test
|
test
|
||||||
.assertStatesWithPrevious(
|
.assertStatesChanges(
|
||||||
initialState,
|
initialState,
|
||||||
{ copy(asyncRegistration = Loading()) },
|
{ copy(asyncRegistration = Loading()) },
|
||||||
{ copy(asyncRegistration = Uninitialized) }
|
{ copy(asyncRegistration = Uninitialized) }
|
||||||
@ -174,7 +174,7 @@ class OnboardingViewModelTest {
|
|||||||
viewModel.handle(OnboardingAction.PostRegisterAction(A_RESULT_IGNORED_REGISTER_ACTION))
|
viewModel.handle(OnboardingAction.PostRegisterAction(A_RESULT_IGNORED_REGISTER_ACTION))
|
||||||
|
|
||||||
test
|
test
|
||||||
.assertStatesWithPrevious(
|
.assertStatesChanges(
|
||||||
initialState,
|
initialState,
|
||||||
{ copy(asyncRegistration = Loading()) },
|
{ copy(asyncRegistration = Loading()) },
|
||||||
{ copy(asyncRegistration = Uninitialized) }
|
{ copy(asyncRegistration = Uninitialized) }
|
||||||
@ -192,7 +192,7 @@ class OnboardingViewModelTest {
|
|||||||
viewModel.handle(OnboardingAction.PostRegisterAction(A_LOADABLE_REGISTER_ACTION))
|
viewModel.handle(OnboardingAction.PostRegisterAction(A_LOADABLE_REGISTER_ACTION))
|
||||||
|
|
||||||
test
|
test
|
||||||
.assertStatesWithPrevious(
|
.assertStatesChanges(
|
||||||
initialState,
|
initialState,
|
||||||
{ copy(asyncRegistration = Loading()) },
|
{ copy(asyncRegistration = Loading()) },
|
||||||
{ copy(asyncLoginAction = Success(Unit), personalizationState = A_HOMESERVER_CAPABILITIES.toPersonalisationState()) },
|
{ copy(asyncLoginAction = Success(Unit), personalizationState = A_HOMESERVER_CAPABILITIES.toPersonalisationState()) },
|
||||||
@ -210,7 +210,7 @@ class OnboardingViewModelTest {
|
|||||||
viewModel.handle(OnboardingAction.PostRegisterAction(A_LOADABLE_REGISTER_ACTION))
|
viewModel.handle(OnboardingAction.PostRegisterAction(A_LOADABLE_REGISTER_ACTION))
|
||||||
|
|
||||||
test
|
test
|
||||||
.assertStatesWithPrevious(
|
.assertStatesChanges(
|
||||||
initialState,
|
initialState,
|
||||||
{ copy(asyncRegistration = Loading()) },
|
{ copy(asyncRegistration = Loading()) },
|
||||||
{ copy(asyncLoginAction = Success(Unit), personalizationState = A_HOMESERVER_CAPABILITIES.toPersonalisationState()) },
|
{ copy(asyncLoginAction = Success(Unit), personalizationState = A_HOMESERVER_CAPABILITIES.toPersonalisationState()) },
|
||||||
@ -229,7 +229,7 @@ class OnboardingViewModelTest {
|
|||||||
viewModel.handle(OnboardingAction.UpdateDisplayName(A_DISPLAY_NAME))
|
viewModel.handle(OnboardingAction.UpdateDisplayName(A_DISPLAY_NAME))
|
||||||
|
|
||||||
test
|
test
|
||||||
.assertStatesWithPrevious(personalisedInitialState, expectedSuccessfulDisplayNameUpdateStates())
|
.assertStatesChanges(personalisedInitialState, expectedSuccessfulDisplayNameUpdateStates())
|
||||||
.assertEvents(OnboardingViewEvents.OnChooseProfilePicture)
|
.assertEvents(OnboardingViewEvents.OnChooseProfilePicture)
|
||||||
.finish()
|
.finish()
|
||||||
fakeSession.fakeProfileService.verifyUpdatedName(fakeSession.myUserId, A_DISPLAY_NAME)
|
fakeSession.fakeProfileService.verifyUpdatedName(fakeSession.myUserId, A_DISPLAY_NAME)
|
||||||
@ -244,7 +244,7 @@ class OnboardingViewModelTest {
|
|||||||
viewModel.handle(OnboardingAction.UpdateDisplayName(A_DISPLAY_NAME))
|
viewModel.handle(OnboardingAction.UpdateDisplayName(A_DISPLAY_NAME))
|
||||||
|
|
||||||
test
|
test
|
||||||
.assertStatesWithPrevious(personalisedInitialState, expectedSuccessfulDisplayNameUpdateStates())
|
.assertStatesChanges(personalisedInitialState, expectedSuccessfulDisplayNameUpdateStates())
|
||||||
.assertEvents(OnboardingViewEvents.OnPersonalizationComplete)
|
.assertEvents(OnboardingViewEvents.OnPersonalizationComplete)
|
||||||
.finish()
|
.finish()
|
||||||
fakeSession.fakeProfileService.verifyUpdatedName(fakeSession.myUserId, A_DISPLAY_NAME)
|
fakeSession.fakeProfileService.verifyUpdatedName(fakeSession.myUserId, A_DISPLAY_NAME)
|
||||||
@ -258,7 +258,7 @@ class OnboardingViewModelTest {
|
|||||||
viewModel.handle(OnboardingAction.UpdateDisplayName(A_DISPLAY_NAME))
|
viewModel.handle(OnboardingAction.UpdateDisplayName(A_DISPLAY_NAME))
|
||||||
|
|
||||||
test
|
test
|
||||||
.assertStatesWithPrevious(
|
.assertStatesChanges(
|
||||||
initialState,
|
initialState,
|
||||||
{ copy(asyncDisplayName = Loading()) },
|
{ copy(asyncDisplayName = Loading()) },
|
||||||
{ copy(asyncDisplayName = Fail(AN_ERROR)) },
|
{ copy(asyncDisplayName = Fail(AN_ERROR)) },
|
||||||
|
@ -55,11 +55,15 @@ class ViewModelTest<S, VE>(
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun assertStatesWithPrevious(initial: S, vararg expected: S.() -> S): ViewModelTest<S, VE> {
|
fun assertStatesChanges(initial: S, vararg expected: S.() -> S): ViewModelTest<S, VE> {
|
||||||
return assertStatesWithPrevious(initial, expected.toList())
|
return assertStatesChanges(initial, expected.toList())
|
||||||
}
|
}
|
||||||
|
|
||||||
fun assertStatesWithPrevious(initial: S, expected: List<S.() -> S>): ViewModelTest<S, VE> {
|
/**
|
||||||
|
* 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.() -> S>): ViewModelTest<S, VE> {
|
||||||
val reducedExpectedStates = expected.fold(mutableListOf(initial)) { acc, curr ->
|
val reducedExpectedStates = expected.fold(mutableListOf(initial)) { acc, curr ->
|
||||||
val next = curr.invoke(acc.last())
|
val next = curr.invoke(acc.last())
|
||||||
acc.add(next)
|
acc.add(next)
|
||||||
|
Loading…
Reference in New Issue
Block a user