|
36 | 36 | )
|
37 | 37 | from lms.djangoapps.mobile_api.utils import API_V1, API_V05, API_V2, API_V3
|
38 | 38 | from openedx.core.lib.courses import course_image_url
|
| 39 | +from openedx.core.djangoapps.discussions.models import DiscussionsConfiguration |
39 | 40 | from openedx.features.course_duration_limits.models import CourseDurationLimitConfig
|
40 | 41 | from openedx.features.course_experience.tests.views.helpers import add_course_mode
|
41 | 42 | from xmodule.course_block import DEFAULT_START_DATE # lint-amnesty, pylint: disable=wrong-import-order
|
@@ -713,3 +714,51 @@ def test_with_display_overrides(self, api_version):
|
713 | 714 | assert serialized['course']['number'] == self.course.display_coursenumber
|
714 | 715 | assert serialized['course']['org'] == self.course.display_organization
|
715 | 716 | self._expiration_in_response(serialized, api_version)
|
| 717 | + |
| 718 | + |
| 719 | +@ddt.ddt |
| 720 | +class TestDiscussionCourseEnrollmentSerializer(UrlResetMixin, MobileAPITestCase, MilestonesTestCaseMixin): |
| 721 | + """ |
| 722 | + Tests discussion data in course enrollment serializer |
| 723 | + """ |
| 724 | + |
| 725 | + def setUp(self): |
| 726 | + """ |
| 727 | + Setup data for test |
| 728 | + """ |
| 729 | + with patch.dict('django.conf.settings.FEATURES', {'ENABLE_DISCUSSION_SERVICE': True}): |
| 730 | + super().setUp() |
| 731 | + self.login_and_enroll() |
| 732 | + self.request = RequestFactory().get('/') |
| 733 | + self.request.user = self.user |
| 734 | + |
| 735 | + def get_serialized_data(self, api_version): |
| 736 | + """ |
| 737 | + Return data from CourseEnrollmentSerializer |
| 738 | + """ |
| 739 | + if api_version == API_V05: |
| 740 | + serializer = CourseEnrollmentSerializerv05 |
| 741 | + else: |
| 742 | + serializer = CourseEnrollmentSerializer |
| 743 | + |
| 744 | + return serializer( |
| 745 | + CourseEnrollment.enrollments_for_user(self.user)[0], |
| 746 | + context={'request': self.request, 'api_version': api_version}, |
| 747 | + ).data |
| 748 | + |
| 749 | + @ddt.data(True, False) |
| 750 | + def test_discussion_tab_url(self, discussion_tab_enabled): |
| 751 | + """ |
| 752 | + Tests discussion tab url is None if tab is disabled |
| 753 | + """ |
| 754 | + config, _ = DiscussionsConfiguration.objects.get_or_create(context_key=self.course.id) |
| 755 | + config.enabled = discussion_tab_enabled |
| 756 | + config.save() |
| 757 | + with patch.dict('django.conf.settings.FEATURES', {'ENABLE_DISCUSSION_SERVICE': True}): |
| 758 | + serialized = self.get_serialized_data(API_V2) |
| 759 | + discussion_url = serialized["course"]["discussion_url"] |
| 760 | + if discussion_tab_enabled: |
| 761 | + assert discussion_url is not None |
| 762 | + assert isinstance(discussion_url, str) |
| 763 | + else: |
| 764 | + assert discussion_url is None |
0 commit comments