tasks_pytest_test.py 文件源码

python
阅读 20 收藏 0 点赞 0 评论 0

项目:micromasters 作者: mitodl 项目源码 文件源码
def test_generate_course_certificates():
    """
    Test that generate_course_certificates_for_fa_students creates certificates for appropriate FinalGrades
    """
    course = CourseFactory.create(program__financial_aid_availability=True)
    # Create two exam runs for course with different date_grades_available
    exam_run_grades_available = ExamRunFactory.create(
        course__program__financial_aid_availability=True,
        date_grades_available=now_in_utc() - timedelta(weeks=1))
    course_with_exams = exam_run_grades_available.course
    exam_run_no_grades = ExamRunFactory.create(
        course=course_with_exams,
        date_grades_available=now_in_utc() + timedelta(weeks=1))
    # Another non-fa course
    non_fa_course = CourseFactory.create(program__financial_aid_availability=False)
    # Create FinalGrade records with different courses and a mix of passed and failed outcomes
    passed_final_grades = FinalGradeFactory.create_batch(4, course_run__course=course, passed=True)
    passed_final_grades_with_exam = FinalGradeFactory.create_batch(
        6,
        course_run__course=course_with_exams,
        passed=True
    )
    FinalGradeFactory.create(course_run__course=non_fa_course, passed=True)
    FinalGradeFactory.create(course_run__course=course, passed=False)
    FinalGradeFactory.create(course_run__course=course, passed=True, status='pending')
    # Create ProctoredExamGrade records with a mix of passed and failed outcomes, and exam grade availability
    final_grades_with_passed_exam = passed_final_grades_with_exam[:2]
    final_grades_with_passed_exam_no_grades = passed_final_grades_with_exam[2:4]
    final_grades_with_failed_exam = passed_final_grades_with_exam[4:]
    ProctoredExamGradeFactory.create_batch(
        2,
        user=factory.Iterator([final_grade.user for final_grade in final_grades_with_passed_exam]),
        course=course_with_exams,
        exam_run=exam_run_grades_available,
        passed=True,
    )
    ProctoredExamGradeFactory.create_batch(
        2,
        user=factory.Iterator([final_grade.user for final_grade in final_grades_with_passed_exam_no_grades]),
        course=course_with_exams,
        exam_run=exam_run_no_grades,
        passed=True,
    )
    ProctoredExamGradeFactory.create_batch(
        2,
        user=factory.Iterator([final_grade.user for final_grade in final_grades_with_failed_exam]),
        course=course_with_exams,
        passed=False,
    )

    tasks.generate_course_certificates_for_fa_students.delay()

    # Make sure that certificates were created only for passed and 'complete' status FinalGrades that either
    # had no course exam, or had a passed ProctoredExamGrade.
    created_certificates = MicromastersCourseCertificate.objects.all()
    assert len(created_certificates) == 6
    certificate_grade_ids = set([certificate.final_grade.id for certificate in created_certificates])
    expected_certificate_final_grades = passed_final_grades + final_grades_with_passed_exam
    assert certificate_grade_ids == set([final_grade.id for final_grade in expected_certificate_final_grades])
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号