Skip to content

Commit 1d2967f

Browse files
authored
Merge pull request Expensify#64710 from thelullabyy/fix/63488-incorrect-onboarding-via-smb
Login - Incorrect ND onboarding modals when selecting Manage company expenses (10+) option
2 parents ebde594 + b9e3647 commit 1d2967f

3 files changed

Lines changed: 89 additions & 2 deletions

File tree

src/pages/OnboardingWorkEmail/BaseOnboardingWorkEmail.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ function BaseOnboardingWorkEmail({shouldUseNativeStyles}: BaseOnboardingWorkEmai
4848
const workEmail = formValue?.[INPUT_IDS.ONBOARDING_WORK_EMAIL];
4949
const [onboardingErrorMessage] = useOnyx(ONYXKEYS.ONBOARDING_ERROR_MESSAGE, {canBeMissing: true});
5050
const isVsb = onboardingValues && 'signupQualifier' in onboardingValues && onboardingValues.signupQualifier === CONST.ONBOARDING_SIGNUP_QUALIFIERS.VSB;
51+
const isSmb = onboardingValues?.signupQualifier === CONST.ONBOARDING_SIGNUP_QUALIFIERS.SMB;
5152
const {onboardingIsMediumOrLargerScreenWidth} = useResponsiveLayout();
5253
const {inputCallbackRef} = useAutoFocusInput();
5354
const [shouldValidateOnChange, setShouldValidateOnChange] = useState(false);
@@ -77,8 +78,13 @@ function BaseOnboardingWorkEmail({shouldUseNativeStyles}: BaseOnboardingWorkEmai
7778
return;
7879
}
7980

81+
if (isSmb) {
82+
Navigation.navigate(ROUTES.ONBOARDING_EMPLOYEES.getRoute(), {forceReplace: true});
83+
return;
84+
}
85+
8086
Navigation.navigate(ROUTES.ONBOARDING_PURPOSE.getRoute(), {forceReplace: true});
81-
}, [onboardingValues?.shouldValidate, isVsb, isFocused, onboardingValues?.isMergeAccountStepCompleted]);
87+
}, [onboardingValues?.shouldValidate, isVsb, isSmb, isFocused, onboardingValues?.isMergeAccountStepCompleted]);
8288

8389
const submitWorkEmail = useCallback((values: FormOnyxValues<typeof ONYXKEYS.FORMS.ONBOARDING_WORK_EMAIL_FORM>) => {
8490
AddWorkEmail(values[INPUT_IDS.ONBOARDING_WORK_EMAIL]);
@@ -166,6 +172,12 @@ function BaseOnboardingWorkEmail({shouldUseNativeStyles}: BaseOnboardingWorkEmai
166172
Navigation.navigate(ROUTES.ONBOARDING_ACCOUNTING.getRoute(), {forceReplace: true});
167173
return;
168174
}
175+
176+
if (isSmb) {
177+
Navigation.navigate(ROUTES.ONBOARDING_EMPLOYEES.getRoute(), {forceReplace: true});
178+
return;
179+
}
180+
169181
Navigation.navigate(ROUTES.ONBOARDING_PURPOSE.getRoute(), {forceReplace: true});
170182
}}
171183
/>

src/pages/OnboardingWorkEmailValidation/BaseOnboardingWorkEmailValidation.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ function BaseOnboardingWorkEmailValidation({shouldUseNativeStyles}: BaseOnboardi
3636
const {onboardingIsMediumOrLargerScreenWidth} = useResponsiveLayout();
3737
const [onboardingValues] = useOnyx(ONYXKEYS.NVP_ONBOARDING, {canBeMissing: true});
3838
const isVsb = onboardingValues && 'signupQualifier' in onboardingValues && onboardingValues.signupQualifier === CONST.ONBOARDING_SIGNUP_QUALIFIERS.VSB;
39+
const isSmb = onboardingValues?.signupQualifier === CONST.ONBOARDING_SIGNUP_QUALIFIERS.SMB;
3940
const [onboardingErrorMessage] = useOnyx(ONYXKEYS.ONBOARDING_ERROR_MESSAGE, {canBeMissing: true});
4041
const isValidateCodeFormSubmitting = AccountUtils.isValidateCodeFormSubmitting(account);
4142
const isFocused = useIsFocused();
@@ -56,8 +57,13 @@ function BaseOnboardingWorkEmailValidation({shouldUseNativeStyles}: BaseOnboardi
5657
return;
5758
}
5859

60+
if (isSmb) {
61+
Navigation.navigate(ROUTES.ONBOARDING_EMPLOYEES.getRoute(), {forceReplace: true});
62+
return;
63+
}
64+
5965
Navigation.navigate(ROUTES.ONBOARDING_PURPOSE.getRoute(), {forceReplace: true});
60-
}, [onboardingValues, isVsb, isFocused]);
66+
}, [onboardingValues, isVsb, isSmb, isFocused]);
6167

6268
const sendValidateCode = useCallback(() => {
6369
if (!credentials?.login) {
@@ -132,6 +138,12 @@ function BaseOnboardingWorkEmailValidation({shouldUseNativeStyles}: BaseOnboardi
132138
Navigation.navigate(ROUTES.ONBOARDING_ACCOUNTING.getRoute(), {forceReplace: true});
133139
return;
134140
}
141+
142+
if (isSmb) {
143+
Navigation.navigate(ROUTES.ONBOARDING_EMPLOYEES.getRoute(), {forceReplace: true});
144+
return;
145+
}
146+
135147
Navigation.navigate(ROUTES.ONBOARDING_PURPOSE.getRoute(), {forceReplace: true});
136148
}}
137149
isLoading={isValidateCodeFormSubmitting}

tests/ui/WorkEmailOnboarding.tsx

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,39 @@ describe('OnboardingWorkEmail Page', () => {
338338
unmount();
339339
await waitForBatchedUpdatesWithAct();
340340
});
341+
342+
it('should navigate to Onboarding employee page when skip is pressed and user is routed app via smb', async () => {
343+
await TestHelper.signInWithTestUser();
344+
345+
await act(async () => {
346+
await Onyx.merge(ONYXKEYS.NVP_ONBOARDING, {
347+
hasCompletedGuidedSetupFlow: false,
348+
signupQualifier: CONST.ONBOARDING_SIGNUP_QUALIFIERS.SMB,
349+
});
350+
});
351+
352+
const {unmount} = renderOnboardingWorkEmailPage(SCREENS.ONBOARDING.WORK_EMAIL, {backTo: ''});
353+
354+
await waitForBatchedUpdatesWithAct();
355+
356+
const skipButton = screen.getByTestId('onboardingPrivateEmailSkipButton');
357+
358+
const mockEvent = {
359+
nativeEvent: {},
360+
type: 'press',
361+
target: skipButton,
362+
currentTarget: skipButton,
363+
};
364+
365+
fireEvent.press(skipButton, mockEvent);
366+
367+
await waitFor(() => {
368+
expect(navigate).toHaveBeenCalledWith(ROUTES.ONBOARDING_EMPLOYEES.getRoute(), {forceReplace: true});
369+
});
370+
371+
unmount();
372+
await waitForBatchedUpdatesWithAct();
373+
});
341374
});
342375

343376
describe('OnboardingWorkEmailValidation Page', () => {
@@ -509,4 +542,34 @@ describe('OnboardingWorkEmailValidation Page', () => {
509542
unmount();
510543
await waitForBatchedUpdatesWithAct();
511544
});
545+
546+
it('should navigate to Onboarding employee page when validate code step is successful and user is routed app via smb', async () => {
547+
await TestHelper.signInWithTestUser();
548+
549+
await act(async () => {
550+
await Onyx.merge(ONYXKEYS.NVP_ONBOARDING, {
551+
hasCompletedGuidedSetupFlow: false,
552+
shouldValidate: true,
553+
signupQualifier: CONST.ONBOARDING_SIGNUP_QUALIFIERS.SMB,
554+
});
555+
await Onyx.merge(ONYXKEYS.FORMS.ONBOARDING_WORK_EMAIL_FORM, {
556+
onboardingWorkEmail: workEmail,
557+
});
558+
});
559+
560+
const {unmount} = renderOnboardingWorkEmailValidationPage(SCREENS.ONBOARDING.WORK_EMAIL_VALIDATION, {backTo: ''});
561+
562+
await waitForBatchedUpdatesWithAct();
563+
564+
MergeIntoAccountAndLoginSuccessful();
565+
566+
await waitForBatchedUpdatesWithAct();
567+
568+
await waitFor(() => {
569+
expect(navigate).toHaveBeenCalledWith(ROUTES.ONBOARDING_EMPLOYEES.getRoute(), {forceReplace: true});
570+
});
571+
572+
unmount();
573+
await waitForBatchedUpdatesWithAct();
574+
});
512575
});

0 commit comments

Comments
 (0)