From 4b9b177104420c2ee0c0a5722d9de290a27596e2 Mon Sep 17 00:00:00 2001 From: Adam Brown Date: Fri, 25 Feb 2022 18:26:11 +0000 Subject: [PATCH] forwarding to the profile picture flow when display name changing isn't supported but pictures are when personalising the profile --- .../onboarding/OnboardingViewModel.kt | 2 +- .../onboarding/OnboardingViewModelTest.kt | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt index 791b0200e1..582902710f 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt @@ -933,7 +933,7 @@ class OnboardingViewModel @AssistedInject constructor( withPersonalisationState { when { it.supportsChangingDisplayName -> _viewEvents.post(OnboardingViewEvents.OnChooseDisplayName) - it.supportsChangingProfilePicture -> _viewEvents.post(OnboardingViewEvents.OnChooseDisplayName) + it.supportsChangingProfilePicture -> _viewEvents.post(OnboardingViewEvents.OnChooseProfilePicture) else -> { throw IllegalStateException("It should not be possible to personalize without supporting display name or avatar changing") } 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 a169446bd6..2dbea05194 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 @@ -82,6 +82,32 @@ class OnboardingViewModelTest { .finish() } + @Test + fun `given supports changing display name when handling PersonalizeProfile then emits contents choose display name`() = runBlockingTest { + val initialState = initialState.copy(personalizationState = PersonalizationState(supportsChangingDisplayName = true, supportsChangingProfilePicture = false)) + viewModel = createViewModel(initialState) + val test = viewModel.test(this) + + viewModel.handle(OnboardingAction.PersonalizeProfile) + + test + .assertEvents(OnboardingViewEvents.OnChooseDisplayName) + .finish() + } + + @Test + fun `given only supports changing profile picture when handling PersonalizeProfile then emits contents choose profile picture`() = runBlockingTest { + val initialState = initialState.copy(personalizationState = PersonalizationState(supportsChangingDisplayName = false, supportsChangingProfilePicture = true)) + viewModel = createViewModel(initialState) + val test = viewModel.test(this) + + viewModel.handle(OnboardingAction.PersonalizeProfile) + + test + .assertEvents(OnboardingViewEvents.OnChooseProfilePicture) + .finish() + } + @Test fun `given homeserver does not support personalisation when registering account then updates state and emits account created event`() = runBlockingTest { fakeSession.fakeHomeServerCapabilitiesService.givenCapabilities(HomeServerCapabilities(canChangeDisplayName = false, canChangeAvatar = false))