Merge pull request #11478 from Ayub-Khan/ayubkhan/ECOM-3603
Fixed progress exception for credit courses
This commit is contained in:
40
lms/djangoapps/courseware/tests/test_views.py
Normal file → Executable file
40
lms/djangoapps/courseware/tests/test_views.py
Normal file → Executable file
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user