Credit test cleanup
Removed a lot of duplicate code! ECOM-4379
This commit is contained in:
committed by
Clinton Blackburn
parent
46775d0f2d
commit
17e92f5518
@@ -371,7 +371,15 @@ class CreditRequirementApiTests(CreditApiTestBase):
|
||||
eligibilities = api.get_eligibilities_for_user("staff")
|
||||
self.assertEqual(eligibilities, [])
|
||||
|
||||
def assert_grade_requirement_status(self, expected_status, expected_order):
|
||||
""" Assert the status and order of the grade requirement. """
|
||||
req_status = api.get_credit_requirement_status(self.course_key, 'staff', namespace="grade", name="grade")
|
||||
self.assertEqual(req_status[0]["status"], expected_status)
|
||||
self.assertEqual(req_status[0]["order"], expected_order)
|
||||
return req_status
|
||||
|
||||
def test_set_credit_requirement_status(self):
|
||||
username = "staff"
|
||||
self.add_credit_course()
|
||||
requirements = [
|
||||
{
|
||||
@@ -395,40 +403,34 @@ class CreditRequirementApiTests(CreditApiTestBase):
|
||||
self.assertEqual(len(course_requirements), 2)
|
||||
|
||||
# Initially, the status should be None
|
||||
req_status = api.get_credit_requirement_status(self.course_key, "staff", namespace="grade", name="grade")
|
||||
self.assertEqual(req_status[0]["status"], None)
|
||||
self.assertEqual(req_status[0]["order"], 0)
|
||||
self.assert_grade_requirement_status(None, 0)
|
||||
|
||||
# Set the requirement to "satisfied" and check that it's actually set
|
||||
api.set_credit_requirement_status("staff", self.course_key, "grade", "grade")
|
||||
req_status = api.get_credit_requirement_status(self.course_key, "staff", namespace="grade", name="grade")
|
||||
self.assertEqual(req_status[0]["status"], "satisfied")
|
||||
self.assertEqual(req_status[0]["order"], 0)
|
||||
api.set_credit_requirement_status(username, self.course_key, "grade", "grade")
|
||||
self.assert_grade_requirement_status('satisfied', 0)
|
||||
|
||||
# Set the requirement to "failed" and check that it's actually set
|
||||
api.set_credit_requirement_status("staff", self.course_key, "grade", "grade", status="failed")
|
||||
req_status = api.get_credit_requirement_status(self.course_key, "staff", namespace="grade", name="grade")
|
||||
self.assertEqual(req_status[0]["status"], "failed")
|
||||
self.assertEqual(req_status[0]["order"], 0)
|
||||
api.set_credit_requirement_status(username, self.course_key, "grade", "grade", status="failed")
|
||||
self.assert_grade_requirement_status('failed', 0)
|
||||
|
||||
req_status = api.get_credit_requirement_status(self.course_key, "staff")
|
||||
self.assertEqual(req_status[0]["status"], "failed")
|
||||
self.assertEqual(req_status[0]["order"], 0)
|
||||
|
||||
# make sure the 'order' on the 2nd requiemtn is set correctly (aka 1)
|
||||
# make sure the 'order' on the 2nd requirement is set correctly (aka 1)
|
||||
self.assertEqual(req_status[1]["status"], None)
|
||||
self.assertEqual(req_status[1]["order"], 1)
|
||||
|
||||
# Set the requirement to "declined" and check that it's actually set
|
||||
api.set_credit_requirement_status(
|
||||
"staff", self.course_key,
|
||||
username, self.course_key,
|
||||
"reverification",
|
||||
"i4x://edX/DemoX/edx-reverification-block/assessment_uuid",
|
||||
status="declined"
|
||||
)
|
||||
req_status = api.get_credit_requirement_status(
|
||||
self.course_key,
|
||||
"staff",
|
||||
username,
|
||||
namespace="reverification",
|
||||
name="i4x://edX/DemoX/edx-reverification-block/assessment_uuid"
|
||||
)
|
||||
|
||||
@@ -2,24 +2,23 @@
|
||||
Tests for minimum grade requirement status
|
||||
"""
|
||||
|
||||
import pytz
|
||||
import ddt
|
||||
import pytz
|
||||
from datetime import timedelta, datetime
|
||||
from nose.plugins.attrib import attr
|
||||
from unittest import skipUnless
|
||||
|
||||
from django.conf import settings
|
||||
from django.test.client import RequestFactory
|
||||
from unittest import skipUnless
|
||||
from nose.plugins.attrib import attr
|
||||
from student.tests.factories import UserFactory
|
||||
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
|
||||
from xmodule.modulestore.tests.factories import CourseFactory
|
||||
|
||||
from openedx.core.djangoapps.credit.api import (
|
||||
set_credit_requirements, get_credit_requirement_status
|
||||
)
|
||||
|
||||
from openedx.core.djangoapps.credit.models import CreditCourse, CreditProvider
|
||||
from openedx.core.djangoapps.credit.signals import listen_for_grade_calculation
|
||||
from student.tests.factories import UserFactory
|
||||
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
|
||||
from xmodule.modulestore.tests.factories import CourseFactory
|
||||
|
||||
|
||||
@attr('shard_2')
|
||||
@@ -67,20 +66,23 @@ class TestMinGradedRequirementStatus(ModuleStoreTestCase):
|
||||
# Add a single credit requirement (final grade)
|
||||
set_credit_requirements(self.course.id, requirements)
|
||||
|
||||
def assert_requirement_status(self, grade, due_date, expected_status):
|
||||
""" Verify the user's credit requirement status is as expected after simulating a grading calculation. """
|
||||
listen_for_grade_calculation(None, self.user.username, {'percent': grade}, self.course.id, due_date)
|
||||
req_status = get_credit_requirement_status(self.course.id, self.request.user.username, 'grade', 'grade')
|
||||
self.assertEqual(req_status[0]['status'], expected_status)
|
||||
|
||||
@ddt.data(
|
||||
(0.6, VALID_DUE_DATE),
|
||||
(0.52, VALID_DUE_DATE),
|
||||
(0.70, EXPIRED_DUE_DATE),
|
||||
)
|
||||
@ddt.unpack
|
||||
def test_min_grade_requirement_with_valid_grade(self, grade_achieved, due_date):
|
||||
def test_min_grade_requirement_with_valid_grade(self, grade, due_date):
|
||||
"""Test with valid grades. Deadline date does not effect in case
|
||||
of valid grade.
|
||||
"""
|
||||
|
||||
listen_for_grade_calculation(None, self.user.username, {'percent': grade_achieved}, self.course.id, due_date)
|
||||
req_status = get_credit_requirement_status(self.course.id, self.request.user.username, 'grade', 'grade')
|
||||
self.assertEqual(req_status[0]["status"], 'satisfied')
|
||||
self.assert_requirement_status(grade, due_date, 'satisfied')
|
||||
|
||||
@ddt.data(
|
||||
(0.50, None),
|
||||
@@ -88,16 +90,10 @@ class TestMinGradedRequirementStatus(ModuleStoreTestCase):
|
||||
(0.40, VALID_DUE_DATE),
|
||||
)
|
||||
@ddt.unpack
|
||||
def test_min_grade_requirement_failed_grade_valid_deadline(self, grade_achieved, due_date):
|
||||
def test_min_grade_requirement_failed_grade_valid_deadline(self, grade, due_date):
|
||||
"""Test with failed grades and deadline is still open or not defined."""
|
||||
|
||||
listen_for_grade_calculation(None, self.user.username, {'percent': grade_achieved}, self.course.id, due_date)
|
||||
req_status = get_credit_requirement_status(self.course.id, self.request.user.username, 'grade', 'grade')
|
||||
self.assertEqual(req_status[0]["status"], None)
|
||||
self.assert_requirement_status(grade, due_date, None)
|
||||
|
||||
def test_min_grade_requirement_failed_grade_expired_deadline(self):
|
||||
"""Test with failed grades and deadline expire"""
|
||||
|
||||
listen_for_grade_calculation(None, self.user.username, {'percent': 0.22}, self.course.id, self.EXPIRED_DUE_DATE)
|
||||
req_status = get_credit_requirement_status(self.course.id, self.request.user.username, 'grade', 'grade')
|
||||
self.assertEqual(req_status[0]["status"], 'failed')
|
||||
self.assert_requirement_status(0.22, self.EXPIRED_DUE_DATE, 'failed')
|
||||
|
||||
Reference in New Issue
Block a user