@@ -217,6 +217,82 @@ describe("ProgramEnrollmentButton", () => {
217217 expect ( button ) . toHaveTextContent ( ENROLL_PROGRAM )
218218 } )
219219
220+ test ( "Hides arrow icon when showArrowIcon is false" , async ( ) => {
221+ const program = makeProgram ( {
222+ enrollment_modes : [ makeEnrollmentMode ( { requires_payment : true } ) ] ,
223+ products : [ makeProduct ( { price : "500" } ) ] ,
224+ } )
225+
226+ setMockResponse . get ( mitxUrls . programEnrollments . enrollmentsListV3 ( ) , [ ] )
227+ setMockResponse . get (
228+ urls . userMe . get ( ) ,
229+ makeUser ( { is_authenticated : false } ) ,
230+ )
231+
232+ renderWithProviders (
233+ < ProgramEnrollmentButton
234+ program = { program }
235+ variant = "primary"
236+ showArrowIcon = { false }
237+ /> ,
238+ )
239+
240+ await screen . findByRole ( "button" , { name : ENROLL_PROGRAM } )
241+ expect ( screen . queryByTestId ( "program-enroll-arrow-icon" ) ) . toBeNull ( )
242+ } )
243+
244+ test ( "Still shows loading spinner when showArrowIcon is false" , async ( ) => {
245+ const product = makeProduct ( { price : "500" } )
246+ const program = makeProgram ( {
247+ enrollment_modes : [ makeEnrollmentMode ( { requires_payment : true } ) ] ,
248+ products : [ product ] ,
249+ } )
250+
251+ setMockResponse . get ( mitxUrls . programEnrollments . enrollmentsListV3 ( ) , [ ] )
252+ setMockResponse . get ( urls . userMe . get ( ) , makeUser ( { is_authenticated : true } ) )
253+ const { promise } = Promise . withResolvers ( )
254+ setMockResponse . delete ( mitxUrls . baskets . clear ( ) , promise )
255+
256+ renderWithProviders (
257+ < ProgramEnrollmentButton
258+ program = { program }
259+ variant = "primary"
260+ showArrowIcon = { false }
261+ /> ,
262+ )
263+
264+ const button = await screen . findByRole ( "button" , { name : ENROLL_PROGRAM } )
265+ await user . click ( button )
266+
267+ await screen . findByRole ( "progressbar" , { name : "Loading" } )
268+ expect ( screen . queryByTestId ( "program-enroll-arrow-icon" ) ) . toBeNull ( )
269+ } )
270+
271+ test ( "Still shows loading spinner during initial loading when showArrowIcon is false" , async ( ) => {
272+ const program = makeProgram ( {
273+ enrollment_modes : [ makeEnrollmentMode ( { requires_payment : false } ) ] ,
274+ } )
275+ const enrollmentResponse = Promise . withResolvers ( )
276+ const userResponse = Promise . withResolvers ( )
277+
278+ setMockResponse . get (
279+ mitxUrls . programEnrollments . enrollmentsListV3 ( ) ,
280+ enrollmentResponse . promise ,
281+ )
282+ setMockResponse . get ( urls . userMe . get ( ) , userResponse . promise )
283+
284+ renderWithProviders (
285+ < ProgramEnrollmentButton
286+ program = { program }
287+ variant = "primary"
288+ showArrowIcon = { false }
289+ /> ,
290+ )
291+
292+ await screen . findByRole ( "progressbar" , { name : "Loading" } )
293+ expect ( screen . queryByTestId ( "program-enroll-arrow-icon" ) ) . toBeNull ( )
294+ } )
295+
220296 test ( "Shows error alert when basket operation fails (paid)" , async ( ) => {
221297 const product = makeProduct ( { price : "500" } )
222298 const program = makeProgram ( {
0 commit comments