Merge pull request #28698 from edx/mikix/hide-after-due-mfe
feat: notify MFE when a sequence is hidden-after-due
This commit is contained in:
@@ -387,7 +387,8 @@ class CourseApiTestViews(BaseCoursewareTests, MasqueradeMixin):
|
||||
assert courseware_data['is_mfe_proctored_exams_enabled'] == (is_globally_enabled and is_waffle_enabled)
|
||||
|
||||
|
||||
class SequenceApiTestViews(BaseCoursewareTests):
|
||||
@ddt.ddt
|
||||
class SequenceApiTestViews(MasqueradeMixin, BaseCoursewareTests):
|
||||
"""
|
||||
Tests for the sequence REST API
|
||||
"""
|
||||
@@ -407,6 +408,32 @@ class SequenceApiTestViews(BaseCoursewareTests):
|
||||
assert response.data['display_name'] == 'sequence'
|
||||
assert len(response.data['items']) == 1
|
||||
|
||||
@ddt.data(
|
||||
(False, None, False, False),
|
||||
(True, None, True, False),
|
||||
(True, {'username': 'student'}, False, True),
|
||||
# Masquerading as a limited-access learner here, but specific partition/group doesn't matter.
|
||||
# We just want to test that masquerading as a non-specific learner has a different outcome.
|
||||
(True, {'user_partition_id': 51, 'group_id': 1}, True, False),
|
||||
)
|
||||
@ddt.unpack
|
||||
def test_hidden_after_due(self, is_past_due, masquerade_config, expected_hidden, expected_banner):
|
||||
"""Validate the metadata when hide-after-due is set for a sequence"""
|
||||
due = datetime.now() + timedelta(days=-1 if is_past_due else 1)
|
||||
sequence = ItemFactory(parent=self.chapter, category='sequential', hide_after_due=True, due=due)
|
||||
|
||||
CourseEnrollment.enroll(self.user, self.course.id)
|
||||
|
||||
user = self.instructor if masquerade_config else self.user
|
||||
self.client.login(username=user.username, password='foo')
|
||||
if masquerade_config:
|
||||
self.update_masquerade(**masquerade_config)
|
||||
|
||||
response = self.client.get(f'/api/courseware/sequence/{sequence.location}')
|
||||
assert response.status_code == 200
|
||||
assert response.data['is_hidden_after_due'] == expected_hidden
|
||||
assert bool(response.data['banner_text']) == expected_banner
|
||||
|
||||
|
||||
class ResumeApiTestViews(BaseCoursewareTests, CompletionWaffleTestMixin):
|
||||
"""
|
||||
|
||||
@@ -29,7 +29,7 @@ from lms.djangoapps.courseware.access_response import (
|
||||
)
|
||||
from lms.djangoapps.courseware.context_processor import user_timezone_locale_prefs
|
||||
from lms.djangoapps.courseware.courses import check_course_access
|
||||
from lms.djangoapps.courseware.masquerade import setup_masquerade
|
||||
from lms.djangoapps.courseware.masquerade import is_masquerading_as_specific_student, setup_masquerade
|
||||
from lms.djangoapps.courseware.module_render import get_module_by_usage_id
|
||||
from lms.djangoapps.courseware.tabs import get_course_tab_list
|
||||
from lms.djangoapps.courseware.toggles import (
|
||||
@@ -545,7 +545,8 @@ class SequenceMetadata(DeveloperErrorViewMixin, APIView):
|
||||
if request.user.is_anonymous:
|
||||
view = PUBLIC_VIEW
|
||||
|
||||
return Response(sequence.get_metadata(view=view))
|
||||
context = {'specific_masquerade': is_masquerading_as_specific_student(request.user, usage_key.course_key)}
|
||||
return Response(sequence.get_metadata(view=view, context=context))
|
||||
|
||||
|
||||
class Resume(DeveloperErrorViewMixin, APIView):
|
||||
|
||||
Reference in New Issue
Block a user