@@ -523,12 +523,14 @@ def test_deactivate_run_enrollment_line_does_not_exist(
523523@pytest .mark .parametrize ("keep_failed_enrollments" , [True , False ])
524524@pytest .mark .parametrize ("edx_enroll_succeeds" , [True , False ])
525525@pytest .mark .parametrize ("edx_downgrade_succeeds" , [True , False ])
526- def test_defer_enrollment (
526+ @pytest .mark .parametrize ("has_audit_enrollment_already" , [True , False ])
527+ def test_defer_enrollment ( # noqa: PLR0913
527528 mocker ,
528529 course ,
529530 keep_failed_enrollments ,
530531 edx_enroll_succeeds ,
531532 edx_downgrade_succeeds ,
533+ has_audit_enrollment_already ,
532534):
533535 """
534536 defer_enrollment should downgrade current enrollment to audit and create a verified enrollment in another
@@ -542,14 +544,24 @@ def test_defer_enrollment(
542544 )
543545
544546 new_enrollment = CourseRunEnrollmentFactory .create (run = course_runs [1 ])
547+ audit_enrollment = None
548+ if has_audit_enrollment_already :
549+ audit_enrollment = CourseRunEnrollmentFactory .create (
550+ user = existing_enrollment .user ,
551+ run = course_runs [1 ],
552+ enrollment_mode = EDX_ENROLLMENT_AUDIT_MODE ,
553+ )
545554 return_values = [
546555 ([new_enrollment ] if edx_enroll_succeeds else [], edx_enroll_succeeds ),
547556 (
548557 [existing_enrollment ] if edx_downgrade_succeeds else [],
549558 edx_downgrade_succeeds ,
550559 ),
551560 ]
552-
561+ patched_deactivate_run_enrollment = mocker .patch (
562+ "courses.api.deactivate_run_enrollment" ,
563+ return_value = audit_enrollment ,
564+ )
553565 with patch (
554566 "courses.api.create_run_enrollments" , autospec = True
555567 ) as patched_create_enrollments :
@@ -598,6 +610,11 @@ def test_defer_enrollment(
598610 keep_failed_enrollments = keep_failed_enrollments ,
599611 )
600612
613+ if has_audit_enrollment_already :
614+ assert patched_deactivate_run_enrollment .call_count == 1
615+ else :
616+ assert patched_deactivate_run_enrollment .call_count == 0
617+
601618
602619def test_defer_enrollment_validation (mocker , user ):
603620 """
@@ -619,7 +636,7 @@ def test_defer_enrollment_validation(mocker, user):
619636 )
620637 mocker .patch (
621638 "courses.api.deactivate_run_enrollment" ,
622- return_value = [ enrollments [1 ]. run . courseware_id ],
639+ return_value = enrollments [1 ],
623640 )
624641
625642 with pytest .raises (ValidationError ):
0 commit comments