diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanModel.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanModel.kt index a84cf20dc5..16ac824023 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanModel.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanModel.kt @@ -142,13 +142,14 @@ internal class TangemPaySelectPlanModel @Inject constructor( modelScope.launch { submitTariffTransitionUseCase(params.userWalletId, transition).fold( ifRight = { - when (params.source) { - TangemPaySelectPlanSource.TIERS_ONBOARDING -> { + when { + transition.type == TangemPayTariffPlanTransition.Type.UPGRADE -> { router.replaceAll(TangemPayAccountDetailsInnerRoute.AccountDetails) } - TangemPaySelectPlanSource.CHANGE_PLAN -> { - router.pop() + params.source == TangemPaySelectPlanSource.TIERS_ONBOARDING -> { + router.replaceAll(TangemPayAccountDetailsInnerRoute.AccountDetails) } + else -> router.pop() } }, ifLeft = { diff --git a/features/tangempay/details/impl/src/test/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanModelTest.kt b/features/tangempay/details/impl/src/test/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanModelTest.kt index 7e8f1a6407..aa7c27babc 100644 --- a/features/tangempay/details/impl/src/test/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanModelTest.kt +++ b/features/tangempay/details/impl/src/test/kotlin/com/tangem/features/tangempay/tiers/select/TangemPaySelectPlanModelTest.kt @@ -258,7 +258,23 @@ internal class TangemPaySelectPlanModelTest { } @Test - fun `GIVEN confirm AND submit succeeds WHEN onConfirmClick THEN router pops`() { + fun `GIVEN change plan non-upgrade AND submit succeeds WHEN onConfirmClick THEN router pops`() { + // GIVEN + coEvery { submitTariffTransitionUseCase(USER_WALLET_ID, any()) } returns Unit.right() + val model = createModel(source = TangemPaySelectPlanSource.CHANGE_PLAN) + model.state.value.onPlanSelected(ACTIVATION_INDEX) + selectContent(model).onSelectClick() + + // WHEN + confirmContent(model).onConfirmClick() + + // THEN + verify(exactly = 1) { router.pop() } + verify(exactly = 0) { router.replaceAll(TangemPayAccountDetailsInnerRoute.AccountDetails) } + } + + @Test + fun `GIVEN change plan upgrade AND submit succeeds WHEN onConfirmClick THEN replaces to account details`() { // GIVEN coEvery { submitTariffTransitionUseCase(USER_WALLET_ID, any()) } returns Unit.right() val model = createModel(source = TangemPaySelectPlanSource.CHANGE_PLAN) @@ -268,7 +284,9 @@ internal class TangemPaySelectPlanModelTest { confirmContent(model).onConfirmClick() // THEN - verify(exactly = 1) { router.pop() } + coVerify(exactly = 1) { submitTariffTransitionUseCase(USER_WALLET_ID, UPGRADE_TRANSITION) } + verify(exactly = 1) { router.replaceAll(TangemPayAccountDetailsInnerRoute.AccountDetails) } + verify(exactly = 0) { router.pop() } } @Test @@ -309,6 +327,8 @@ internal class TangemPaySelectPlanModelTest { private companion object { val USER_WALLET_ID = UserWalletId("aabbcc112233") + const val ACTIVATION_INDEX = 2 + val UPGRADE_TRANSITION = transition(TangemPayTariffPlanTransition.Type.UPGRADE, "PLUS", isBasic = false) val DOWNGRADE_TRANSITION = transition(TangemPayTariffPlanTransition.Type.DOWNGRADE, "BASIC", isBasic = true) val ACTIVATION_TRANSITION = transition(TangemPayTariffPlanTransition.Type.ACTIVATION, "PLUS", isBasic = false)