@@ -18,8 +18,10 @@ import * as mitxonline from "api/mitxonline-test-utils"
1818import { useFeatureFlagEnabled } from "posthog-js/react"
1919import HomeContent from "./HomeContent"
2020import invariant from "tiny-invariant"
21+ import * as NextProgressBar from "next-nprogress-bar"
2122
2223jest . mock ( "posthog-js/react" )
24+ jest . mock ( "next-nprogress-bar" )
2325const mockedUseFeatureFlagEnabled = jest
2426 . mocked ( useFeatureFlagEnabled )
2527 . mockImplementation ( ( ) => false )
@@ -251,8 +253,15 @@ describe("HomeContent", () => {
251253 expect ( screen . queryByText ( "Enrollment Error" ) ) . not . toBeInTheDocument ( )
252254 } )
253255
254- test ( "Displays enrollment error alert when query param is present" , async ( ) => {
256+ test ( "Displays enrollment error alert when query param is present and then clears it " , async ( ) => {
255257 setupAPIs ( )
258+ const mockReplace = jest . fn ( )
259+ jest . spyOn ( NextProgressBar , "useRouter" ) . mockReturnValue ( {
260+ replace : mockReplace ,
261+ } as Partial < ReturnType < typeof NextProgressBar . useRouter > > as ReturnType <
262+ typeof NextProgressBar . useRouter
263+ > )
264+
256265 renderWithProviders ( < HomeContent /> , {
257266 url : "/dashboard?enrollment_error=1" ,
258267 } )
@@ -261,12 +270,37 @@ describe("HomeContent", () => {
261270 name : "Your MIT Learning Journey" ,
262271 } )
263272
273+ // Verify the alert was shown
264274 expect ( screen . getByText ( "Enrollment Error" ) ) . toBeInTheDocument ( )
265275 expect (
266276 screen . getByText (
267277 / T h e E n r o l l m e n t C o d e i s i n c o r r e c t o r n o l o n g e r a v a i l a b l e / ,
268278 ) ,
269279 ) . toBeInTheDocument ( )
270280 expect ( screen . getByText ( "Contact Support" ) ) . toBeInTheDocument ( )
281+
282+ // Verify the query param is cleared
283+ expect ( mockReplace ) . toHaveBeenCalledWith ( "/dashboard" )
284+ } )
285+
286+ test ( "Does not clear query param when it is not present" , async ( ) => {
287+ setupAPIs ( )
288+ const mockReplace = jest . fn ( )
289+ jest . spyOn ( NextProgressBar , "useRouter" ) . mockReturnValue ( {
290+ replace : mockReplace ,
291+ } as Partial < ReturnType < typeof NextProgressBar . useRouter > > as ReturnType <
292+ typeof NextProgressBar . useRouter
293+ > )
294+
295+ renderWithProviders ( < HomeContent /> , {
296+ url : "/dashboard" ,
297+ } )
298+
299+ await screen . findByRole ( "heading" , {
300+ name : "Your MIT Learning Journey" ,
301+ } )
302+
303+ // Verify router.replace was not called
304+ expect ( mockReplace ) . not . toHaveBeenCalled ( )
271305 } )
272306} )
0 commit comments