@@ -10,6 +10,9 @@ import { EnrollmentDisplay } from "./EnrollmentDisplay"
10
10
import * as mitxonline from "api/mitxonline-test-utils"
11
11
import { useFeatureFlagEnabled } from "posthog-js/react"
12
12
import { setupEnrollments } from "./test-utils"
13
+ import { faker } from "@faker-js/faker/locale/en"
14
+ import { mockAxiosInstance } from "api/test-utils"
15
+ import invariant from "tiny-invariant"
13
16
14
17
jest . mock ( "posthog-js/react" )
15
18
const mockedUseFeatureFlagEnabled = jest
@@ -32,25 +35,25 @@ describe("DashboardDialogs", () => {
32
35
33
36
test ( "Opening the unenroll dialog and confirming the unenroll fires the proper API call" , async ( ) => {
34
37
const { enrollments } = setupApis ( )
35
- let deleteCalls = 0
36
- for ( const enrollment of enrollments ) {
37
- setMockResponse . delete (
38
- mitxonline . urls . enrollment . courseEnrollment ( enrollment . id ) ,
39
- ( ) => {
40
- deleteCalls ++
41
- } ,
42
- )
43
- }
38
+ const enrollment = faker . helpers . arrayElement ( enrollments )
39
+
40
+ setMockResponse . delete (
41
+ mitxonline . urls . enrollment . courseEnrollment ( enrollment . id ) ,
42
+ null ,
43
+ )
44
44
renderWithProviders ( < EnrollmentDisplay /> )
45
45
46
46
await screen . findByRole ( "heading" , { name : "My Learning" } )
47
47
48
48
const cards = await screen . findAllByTestId ( "enrollment-card-desktop" )
49
49
expect ( cards . length ) . toBe ( enrollments . length )
50
50
51
- const contextMenuButton = await within ( cards [ 0 ] ) . findByLabelText (
52
- "More options" ,
51
+ const card = cards . find (
52
+ ( c ) => ! ! within ( c ) . queryByText ( enrollment . run . title ) ,
53
53
)
54
+ invariant ( card )
55
+
56
+ const contextMenuButton = await within ( card ) . findByLabelText ( "More options" )
54
57
await user . click ( contextMenuButton )
55
58
56
59
const unenrollButton = await screen . findByRole ( "menuitem" , {
@@ -65,6 +68,11 @@ describe("DashboardDialogs", () => {
65
68
66
69
await user . click ( confirmButton )
67
70
68
- expect ( deleteCalls ) . toBe ( 1 )
71
+ expect ( mockAxiosInstance . request ) . toHaveBeenCalledWith (
72
+ expect . objectContaining ( {
73
+ method : "DELETE" ,
74
+ url : mitxonline . urls . enrollment . courseEnrollment ( enrollment . id ) ,
75
+ } ) ,
76
+ )
69
77
} )
70
78
} )
0 commit comments