Commit 6f3895f8 by Douglas Hall

Merge pull request #256 from edx/hasnain-naveed/PHX-240

PHX-240 / Student can retry the practice exam even if due date has passed
parents 9ff6ec51 2303060f
......@@ -1559,10 +1559,7 @@ def _get_practice_exam_view(exam, context, exam_id, user_id, course_id):
attempt_status = attempt['status'] if attempt else None
if not attempt_status:
if _has_due_date_passed(exam['due_date']):
student_view_template = 'proctored_exam/expired.html'
else:
student_view_template = 'practice_exam/entrance.html'
student_view_template = 'practice_exam/entrance.html'
elif attempt_status == ProctoredExamStudentAttemptStatus.started:
# when we're taking the exam we should not override the view
return None
......
......@@ -1373,58 +1373,6 @@ class ProctoredExamApiTests(LoggedInTestCase):
else:
self.assertIsNone(None)
@ddt.data(
(True, False),
(True, True),
(False, False),
)
@ddt.unpack
def test_practice_exam_attempt_with_past_due_datetime(self, is_proctored, is_practice):
"""
Test for get_student_view for practice proctored exam with past due datetime
"""
due_date = datetime.now(pytz.UTC) + timedelta(days=1)
# exam is created with due datetime which has already passed
self._create_exam_with_due_time(
is_proctored=is_proctored,
is_practice_exam=is_practice,
due_date=due_date
)
# due_date is exactly after 24 hours, if student arrives after 2 days
# then he can not attempt the proctored exam
reset_time = due_date + timedelta(days=2)
with freeze_time(reset_time):
rendered_response = get_student_view(
user_id=self.user_id,
course_id=self.course_id,
content_id=self.content_id_for_exam_with_due_date,
context={
'is_proctored': True,
'is_practice_exam': True,
'display_name': self.exam_name,
'default_time_limit_mins': self.default_time_limit
}
)
self.assertIn(self.exam_expired_msg, rendered_response)
# call the view again, because the first call set the exam attempt to 'expired'
# this second call will render the view based on the state
rendered_response = get_student_view(
user_id=self.user_id,
course_id=self.course_id,
content_id=self.content_id_for_exam_with_due_date,
context={
'is_proctored': True,
'is_practice_exam': True,
'display_name': self.exam_name,
'default_time_limit_mins': self.default_time_limit
}
)
self.assertIn(self.exam_expired_msg, rendered_response)
def test_proctored_exam_attempt_with_past_due_datetime(self):
"""
Test for get_student_view for proctored exam with past due datetime
......
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