Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from unittest.mock import Mock # lint-amnesty, pylint: disable=wrong-import-order
from lms.djangoapps.courseware.tests.factories import StudentInfoFactory
from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase # lint-amnesty, pylint: disable=wrong-import-order
from xmodule.modulestore.tests.factories import CourseFactory # lint-amnesty, pylint: disable=wrong-import-order
Comment on lines +1 to +5

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@VanDavv Why are the # lint-amnesty, pylint: disable=wrong-import-order necessary here?



class NotesVisibilityTestCase(ModuleStoreTestCase, LoginEnrollmentTestCase):
"""
Unit test for courseware notes visibility
"""

def setUp(self):
super().setUp()

self.setup_user()
self.request = Mock()
self.request.user = self.user
self.course = CourseFactory.create(metadata={'edxnotes': True})
self.enroll(self.course)

def test_notes_disabled_on_user_preferece(self):
StudentInfoFactory.create(field_name='edxnotes_visibility', value=False, student=self.user)
response = self.client.get(f'/api/courseware/course/{self.course.id}')

assert response.status_code == 200
assert response.json()["notes"]["enabled"]
assert not response.json()["notes"]["visible"]

def test_notes_enabled_on_user_preferece(self):
StudentInfoFactory.create(field_name='edxnotes_visibility', value=True, student=self.user)
response = self.client.get(f'/api/courseware/course/{self.course.id}')

assert response.status_code == 200
assert response.json()["notes"]["enabled"]
assert response.json()["notes"]["visible"]
8 changes: 6 additions & 2 deletions openedx/core/djangoapps/courseware_api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
setup_masquerade,
is_masquerading_as_non_audit_enrollment,
)
from lms.djangoapps.courseware.models import LastSeenCoursewareTimezone
from lms.djangoapps.courseware.models import LastSeenCoursewareTimezone, XModuleStudentInfoField
from lms.djangoapps.courseware.block_render import get_block_by_usage_id
from lms.djangoapps.courseware.toggles import course_exit_page_is_active, learning_assistant_is_active
from lms.djangoapps.courseware.views.views import get_cert_data
Expand Down Expand Up @@ -136,9 +136,13 @@ def notes(self):
"""
Return whether edxnotes is enabled and visible.
"""
visibility = XModuleStudentInfoField.objects\
.filter(student=self.effective_user, field_name="edxnotes_visibility").first()

user_preference = visibility.value.lower() == "true" if visibility is not None else True
return {
'enabled': is_feature_enabled(self.overview, self.effective_user),
'visible': self.overview.edxnotes_visibility,
'visible': self.overview.edxnotes_visibility and user_preference
}

@property
Expand Down