Commit be7be407 by Ayub khan

Merge pull request #11478 from Ayub-Khan/ayubkhan/ECOM-3603

Fixed progress exception for credit courses
parents 327cdafc 4b81f0bb
......@@ -53,6 +53,8 @@ from xmodule.modulestore.django import modulestore
from xmodule.modulestore.tests.django_utils import TEST_DATA_MIXED_TOY_MODULESTORE
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory, check_mongo_calls
from openedx.core.djangoapps.credit.api import set_credit_requirements
from openedx.core.djangoapps.credit.models import CreditCourse, CreditProvider
@attr('shard_1')
......@@ -907,9 +909,43 @@ class ProgressPageTests(ModuleStoreTestCase):
# Assert that valid 'student_id' returns 200 status
self.assertEqual(resp.status_code, 200)
def test_non_asci_grade_cutoffs(self):
resp = views.progress(self.request, course_id=unicode(self.course.id))
@ddt.data(ModuleStoreEnum.Type.mongo, ModuleStoreEnum.Type.split)
def test_unenrolled_student_progress_for_credit_course(self, default_store):
"""
Test that student progress page does not break while checking for an unenrolled student.
Scenario: When instructor checks the progress of a student who is not enrolled in credit course.
It should return 200 response.
"""
# Create a new course, a user which will not be enrolled in course, admin user for staff access
course = CourseFactory.create(default_store=default_store)
not_enrolled_user = UserFactory.create()
self.request.user = AdminFactory.create()
# Create and enable Credit course
CreditCourse.objects.create(course_key=course.id, enabled=True)
# Configure a credit provider for the course
CreditProvider.objects.create(
provider_id="ASU",
enable_integration=True,
provider_url="https://credit.example.com/request"
)
requirements = [{
"namespace": "grade",
"name": "grade",
"display_name": "Grade",
"criteria": {"min_grade": 0.52},
}]
# Add a single credit requirement (final grade)
set_credit_requirements(course.id, requirements)
resp = views.progress(self.request, course_id=unicode(course.id), student_id=not_enrolled_user.id)
self.assertEqual(resp.status_code, 200)
def test_non_ascii_grade_cutoffs(self):
resp = views.progress(self.request, course_id=unicode(self.course.id))
self.assertEqual(resp.status_code, 200)
def test_generate_cert_config(self):
......
......@@ -1091,11 +1091,9 @@ def _credit_course_requirements(course_key, student):
if not (settings.FEATURES.get("ENABLE_CREDIT_ELIGIBILITY", False) and is_credit_course(course_key)):
return None
# If student is enrolled not enrolled in verified or credit mode,
# short-circuit and return None. This indicates that
# credit requirements should NOT be displayed on the progress page.
# This indicates that credit requirements should NOT be displayed on the progress page.
enrollment = CourseEnrollment.get_enrollment(student, course_key)
if enrollment.mode not in REQUIREMENTS_DISPLAY_MODES:
if enrollment and enrollment.mode not in REQUIREMENTS_DISPLAY_MODES:
return None
# Credit requirement statuses for which user does not remain eligible to get credit.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment