Skip to content

Commit af62054

Browse files
authored
Merge pull request Expensify#71522 from Expensify/blimpich-surfaceErrorMessages
surface specific error messages for AddWorkEmail
2 parents 00689ff + e16190f commit af62054

2 files changed

Lines changed: 68 additions & 1 deletion

File tree

src/components/OnboardingMergingAccountBlockedView.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import React from 'react';
22
import useLocalize from '@hooks/useLocalize';
3+
import useOnyx from '@hooks/useOnyx';
34
import useThemeStyles from '@hooks/useThemeStyles';
45
import Navigation from '@libs/Navigation/Navigation';
56
import variables from '@styles/variables';
67
import {setOnboardingErrorMessage} from '@userActions/Welcome';
8+
import ONYXKEYS from '@src/ONYXKEYS';
79
import ROUTES from '@src/ROUTES';
810
import BlockingView from './BlockingViews/BlockingView';
911
import Button from './Button';
@@ -20,14 +22,24 @@ type OnboardingMergingAccountBlockedViewProps = {
2022
function OnboardingMergingAccountBlockedView({workEmail, isVsb}: OnboardingMergingAccountBlockedViewProps) {
2123
const styles = useThemeStyles();
2224
const {translate} = useLocalize();
25+
const [onboardingErrorMessage] = useOnyx(ONYXKEYS.ONBOARDING_ERROR_MESSAGE, {canBeMissing: true});
26+
27+
const getErrorSubtitle = () => {
28+
if (onboardingErrorMessage) {
29+
return onboardingErrorMessage;
30+
}
31+
// Fallback to generic error message
32+
return translate('onboarding.mergeBlockScreen.subtitle', {workEmail});
33+
};
34+
2335
return (
2436
<>
2537
<BlockingView
2638
icon={ToddBehindCloud}
2739
iconWidth={variables.modalTopIconWidth}
2840
iconHeight={variables.modalTopIconHeight}
2941
title={translate('onboarding.mergeBlockScreen.title')}
30-
subtitle={translate('onboarding.mergeBlockScreen.subtitle', {workEmail})}
42+
subtitle={getErrorSubtitle()}
3143
subtitleStyle={[styles.colorMuted]}
3244
/>
3345
<Button

tests/ui/WorkEmailOnboarding.tsx

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -581,4 +581,59 @@ describe('OnboardingWorkEmailValidation Page', () => {
581581
unmount();
582582
await waitForBatchedUpdatesWithAct();
583583
});
584+
585+
it('should display specific error message when ONBOARDING_ERROR_MESSAGE is set', async () => {
586+
await TestHelper.signInWithTestUser();
587+
588+
const specificErrorMessage = 'some extraordinarily specific error has occurred!';
589+
590+
await act(async () => {
591+
await Onyx.merge(ONYXKEYS.NVP_ONBOARDING, {
592+
hasCompletedGuidedSetupFlow: false,
593+
shouldValidate: true,
594+
isMergingAccountBlocked: true,
595+
});
596+
await Onyx.merge(ONYXKEYS.FORMS.ONBOARDING_WORK_EMAIL_FORM, {
597+
onboardingWorkEmail: 'test@company.com',
598+
});
599+
await Onyx.merge(ONYXKEYS.ONBOARDING_ERROR_MESSAGE, specificErrorMessage);
600+
});
601+
602+
const {unmount} = renderOnboardingWorkEmailValidationPage(SCREENS.ONBOARDING.WORK_EMAIL_VALIDATION, {backTo: ''});
603+
604+
await waitForBatchedUpdatesWithAct();
605+
606+
await waitFor(() => {
607+
expect(screen.getByText(specificErrorMessage)).toBeOnTheScreen();
608+
});
609+
610+
unmount();
611+
await waitForBatchedUpdatesWithAct();
612+
});
613+
614+
it('should fallback to generic error message when ONBOARDING_ERROR_MESSAGE is not set', async () => {
615+
await TestHelper.signInWithTestUser();
616+
617+
await act(async () => {
618+
await Onyx.merge(ONYXKEYS.NVP_ONBOARDING, {
619+
hasCompletedGuidedSetupFlow: false,
620+
shouldValidate: true,
621+
isMergingAccountBlocked: true,
622+
});
623+
await Onyx.merge(ONYXKEYS.FORMS.ONBOARDING_WORK_EMAIL_FORM, {
624+
onboardingWorkEmail: workEmail,
625+
});
626+
});
627+
628+
const {unmount} = renderOnboardingWorkEmailValidationPage(SCREENS.ONBOARDING.WORK_EMAIL_VALIDATION, {backTo: ''});
629+
630+
await waitForBatchedUpdatesWithAct();
631+
632+
await waitFor(() => {
633+
expect(screen.getByText(translateLocal('onboarding.mergeBlockScreen.subtitle', {workEmail}))).toBeOnTheScreen();
634+
});
635+
636+
unmount();
637+
await waitForBatchedUpdatesWithAct();
638+
});
584639
});

0 commit comments

Comments
 (0)