@@ -15,14 +15,20 @@ jest.mock('react-redux', () => ({
1515
1616describe ( 'useSiteLanguageTour' , ( ) => {
1717 const mockFormatMessage = jest . fn ( ( msg ) => msg . defaultMessage ) ;
18+ const mockToursState = {
19+ showExistingUserCourseHomeTour : false ,
20+ showNewUserCourseHomeModal : false ,
21+ showNewUserCourseHomeTour : false ,
22+ toursEnabled : true ,
23+ } ;
1824
1925 beforeEach ( ( ) => {
2026 initializeMockApp ( ) ;
2127 useIntl . mockReturnValue ( {
2228 formatMessage : mockFormatMessage ,
2329 } ) ;
2430 useSelector . mockReturnValue ( {
25- showCoursewareTour : false ,
31+ ... mockToursState ,
2632 } ) ;
2733 global . localStorage . clear ( ) ;
2834 } ) ;
@@ -32,44 +38,61 @@ describe('useSiteLanguageTour', () => {
3238 jest . clearAllMocks ( ) ;
3339 } ) ;
3440
35- it ( 'enables tour when not seen before and courseware tour is not showing' , ( ) => {
36- useSelector . mockReturnValue ( {
37- showCoursewareTour : false ,
38- } ) ;
41+ it ( 'enables tour when not seen before, base tours are not showing, and base tours are loaded' , ( ) => {
3942 const { result } = renderHook ( ( ) => useSiteLanguageTour ( ) ) ;
4043 expect ( result . current . siteLanguageTour . enabled ) . toBe ( true ) ;
4144 } ) ;
4245
43- it ( 'disables tour when already seen' , ( ) => {
44- global . localStorage . setItem ( 'hasSeenSiteLanguageTour' , 'true' ) ;
45- const { result } = renderHook ( ( ) => useSiteLanguageTour ( ) ) ;
46+ it ( 'does not show tour until base tours are successfully loaded' , ( ) => {
47+ useSelector . mockReturnValue ( {
48+ ...mockToursState ,
49+ toursEnabled : false ,
50+ } ) ;
51+ const { result, rerender } = renderHook ( ( ) => useSiteLanguageTour ( ) ) ;
4652 expect ( result . current . siteLanguageTour . enabled ) . toBe ( false ) ;
47- } ) ;
4853
49- it ( 'disables tour when courseware tour is showing' , ( ) => {
54+ // Simulate tours being loaded
5055 useSelector . mockReturnValue ( {
51- showCoursewareTour : true ,
56+ ...mockToursState ,
57+ toursEnabled : true ,
5258 } ) ;
59+ rerender ( ) ;
60+ expect ( result . current . siteLanguageTour . enabled ) . toBe ( true ) ;
61+ } ) ;
62+
63+ it ( 'disables tour when already seen' , ( ) => {
64+ global . localStorage . setItem ( 'hasSeenSiteLanguageTour' , 'true' ) ;
5365 const { result } = renderHook ( ( ) => useSiteLanguageTour ( ) ) ;
5466 expect ( result . current . siteLanguageTour . enabled ) . toBe ( false ) ;
5567 } ) ;
5668
57- it ( 're-enables tour when courseware tour stops showing' , ( ) => {
58- const { result, rerender } = renderHook ( ( ) => useSiteLanguageTour ( ) ) ;
69+ describe ( 'disables tour when base tours are showing ' , ( ) => {
70+ it ( 'existing user course home tour' , ( ) => {
71+ useSelector . mockReturnValue ( {
72+ ...mockToursState ,
73+ showExistingUserCourseHomeTour : true ,
74+ } ) ;
75+ const { result } = renderHook ( ( ) => useSiteLanguageTour ( ) ) ;
76+ expect ( result . current . siteLanguageTour . enabled ) . toBe ( false ) ;
77+ } ) ;
5978
60- // Initially, courseware tour is showing
61- useSelector . mockReturnValue ( {
62- showCoursewareTour : true ,
79+ it ( 'new user course home modal' , ( ) => {
80+ useSelector . mockReturnValue ( {
81+ ...mockToursState ,
82+ showNewUserCourseHomeModal : true ,
83+ } ) ;
84+ const { result } = renderHook ( ( ) => useSiteLanguageTour ( ) ) ;
85+ expect ( result . current . siteLanguageTour . enabled ) . toBe ( false ) ;
6386 } ) ;
64- rerender ( ) ;
65- expect ( result . current . siteLanguageTour . enabled ) . toBe ( false ) ;
6687
67- // Courseware tour stops showing
68- useSelector . mockReturnValue ( {
69- showCoursewareTour : false ,
88+ it ( 'new user course home tour' , ( ) => {
89+ useSelector . mockReturnValue ( {
90+ ...mockToursState ,
91+ showNewUserCourseHomeTour : true ,
92+ } ) ;
93+ const { result } = renderHook ( ( ) => useSiteLanguageTour ( ) ) ;
94+ expect ( result . current . siteLanguageTour . enabled ) . toBe ( false ) ;
7095 } ) ;
71- rerender ( ) ;
72- expect ( result . current . siteLanguageTour . enabled ) . toBe ( true ) ;
7396 } ) ;
7497
7598 it ( 'closeTour sets localStorage and disables tour' , ( ) => {
@@ -92,13 +115,15 @@ describe('useSiteLanguageTour', () => {
92115 } ) ;
93116 expect ( result . current . siteLanguageTour . enabled ) . toBe ( false ) ;
94117
95- // Try to trigger a re-render by changing courseware tour state
118+ // Try to trigger a re-render by changing tour state
96119 useSelector . mockReturnValue ( {
97- showCoursewareTour : true ,
120+ ...mockToursState ,
121+ showExistingUserCourseHomeTour : true ,
98122 } ) ;
99123 rerender ( ) ;
100124 useSelector . mockReturnValue ( {
101- showCoursewareTour : false ,
125+ ...mockToursState ,
126+ showExistingUserCourseHomeTour : false ,
102127 } ) ;
103128 rerender ( ) ;
104129
0 commit comments