diff --git a/src/libs/onboardingSelectors.ts b/src/libs/onboardingSelectors.ts index bdbb3ff142f44..35b1f1b4208c7 100644 --- a/src/libs/onboardingSelectors.ts +++ b/src/libs/onboardingSelectors.ts @@ -15,6 +15,10 @@ function hasCompletedGuidedSetupFlowSelector(onboarding: OnyxValue { + // Not all users have this NVP defined as we did not run a migration to backfill it for existing accounts, hence we need to make sure + // the onboarding flow is only showed to the users with `hasCompletedGuidedSetupFlow` set to false + describe('hasCompletedGuidedSetupFlowSelector', () => { + // It might be the case that backend returns an empty array if the NVP is not defined on this particular account + it('Should return true if onboarding NVP is an array', () => { + const onboarding = [] as OnyxValue; + expect(hasCompletedGuidedSetupFlowSelector(onboarding)).toBe(true); + }); + it('Should return true if onboarding NVP is an empty object', () => { + const onboarding = {} as OnyxValue; + expect(hasCompletedGuidedSetupFlowSelector(onboarding)).toBe(true); + }); + it('Should return true if onboarding NVP contains only signupQualifier', () => { + const onboarding = {signupQualifier: CONST.ONBOARDING_SIGNUP_QUALIFIERS.VSB} as OnyxValue; + expect(hasCompletedGuidedSetupFlowSelector(onboarding)).toBe(true); + }); + it('Should return true if onboarding NVP contains hasCompletedGuidedSetupFlow = true', () => { + const onboarding = {hasCompletedGuidedSetupFlow: true} as OnyxValue; + expect(hasCompletedGuidedSetupFlowSelector(onboarding)).toBe(true); + }); + it('Should return false if onboarding NVP contains hasCompletedGuidedSetupFlow = false', () => { + const onboarding = {hasCompletedGuidedSetupFlow: false} as OnyxValue; + expect(hasCompletedGuidedSetupFlowSelector(onboarding)).toBe(false); + }); + it('Should return true if onboarding NVP contains only selfTourViewed', () => { + const onboarding = {selfTourViewed: true} as OnyxValue; + expect(hasCompletedGuidedSetupFlowSelector(onboarding)).toBe(true); + }); + }); +});