From a07da78a0f6cc01db006b75e0f8a65b2af282756 Mon Sep 17 00:00:00 2001 From: Waqas Date: Fri, 25 Apr 2014 15:29:19 +0500 Subject: [PATCH] Add the "VERIFIED_CERTIFICATES" toggle on dashboard --- common/djangoapps/student/tests/tests.py | 53 +++++++++++++++++-- .../courseware/features/certificates.py | 1 + lms/envs/common.py | 3 ++ lms/envs/test.py | 2 + .../dashboard/_dashboard_course_listing.html | 41 +++++++------- 5 files changed, 79 insertions(+), 21 deletions(-) diff --git a/common/djangoapps/student/tests/tests.py b/common/djangoapps/student/tests/tests.py index 1a8c105c01..c28a54afe8 100644 --- a/common/djangoapps/student/tests/tests.py +++ b/common/djangoapps/student/tests/tests.py @@ -12,10 +12,11 @@ import pytz from django.conf import settings from django.test import TestCase from django.test.utils import override_settings -from django.test.client import RequestFactory +from django.test.client import RequestFactory, Client from django.contrib.auth.models import User, AnonymousUser -from django.core.urlresolvers import reverse +from django.core.urlresolvers import reverse, NoReverseMatch from django.http import HttpResponse +from unittest.case import SkipTest from xmodule.modulestore.tests.factories import CourseFactory from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase @@ -146,12 +147,58 @@ class DashboardTest(TestCase): def setUp(self): self.course = CourseFactory.create(org=self.COURSE_ORG, display_name=self.COURSE_NAME, number=self.COURSE_SLUG) self.assertIsNotNone(self.course) - self.user = UserFactory.create(username="jack", email="jack@fake.edx.org") + self.user = UserFactory.create(username="jack", email="jack@fake.edx.org", password='test') CourseModeFactory.create( course_id=self.course.id, mode_slug='honor', mode_display_name='Honor Code', ) + self.client = Client() + + def check_verification_status_on(self, mode, value): + """ + Check that the css class and the status message are in the dashboard html. + """ + CourseEnrollment.enroll(self.user, self.course.location.course_id, mode=mode) + try: + response = self.client.get(reverse('dashboard')) + except NoReverseMatch: + raise SkipTest("Skip this test if url cannot be found (ie running from CMS tests)") + self.assertContains(response, "class=\"course {0}\"".format(mode)) + self.assertContains(response, value) + + @patch.dict("django.conf.settings.FEATURES", {'ENABLE_VERIFIED_CERTIFICATES': True}) + def test_verification_status_visible(self): + """ + Test that the certificate verification status for courses is visible on the dashboard. + """ + self.client.login(username="jack", password="test") + self.check_verification_status_on('verified', 'You\'re enrolled as a verified student') + self.check_verification_status_on('honor', 'You\'re enrolled as an honor code student') + self.check_verification_status_on('audit', 'You\'re auditing this course') + + def check_verification_status_off(self, mode, value): + """ + Check that the css class and the status message are not in the dashboard html. + """ + CourseEnrollment.enroll(self.user, self.course.location.course_id, mode=mode) + try: + response = self.client.get(reverse('dashboard')) + except NoReverseMatch: + raise SkipTest("Skip this test if url cannot be found (ie running from CMS tests)") + self.assertNotContains(response, "class=\"course {0}\"".format(mode)) + self.assertNotContains(response, value) + + @patch.dict("django.conf.settings.FEATURES", {'ENABLE_VERIFIED_CERTIFICATES': False}) + def test_verification_status_invisible(self): + """ + Test that the certificate verification status for courses is not visible on the dashboard + if the verified certificates setting is off. + """ + self.client.login(username="jack", password="test") + self.check_verification_status_off('verified', 'You\'re enrolled as a verified student') + self.check_verification_status_off('honor', 'You\'re enrolled as an honor code student') + self.check_verification_status_off('audit', 'You\'re auditing this course') def test_course_mode_info(self): verified_mode = CourseModeFactory.create( diff --git a/lms/djangoapps/courseware/features/certificates.py b/lms/djangoapps/courseware/features/certificates.py index 91e4f394c5..06d77e8008 100644 --- a/lms/djangoapps/courseware/features/certificates.py +++ b/lms/djangoapps/courseware/features/certificates.py @@ -6,6 +6,7 @@ from lettuce.django import django_url from course_modes.models import CourseMode from nose.tools import assert_equal + UPSELL_LINK_CSS = '.message-upsell a.action-upgrade[href*="edx/999/Certificates"]' def create_cert_course(): diff --git a/lms/envs/common.py b/lms/envs/common.py index 74646b0173..bb4956e980 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -172,6 +172,9 @@ FEATURES = { # Enable instructor dash beta version link 'ENABLE_INSTRUCTOR_BETA_DASHBOARD': True, + # Toggle to enable certificates of courses on dashboard + 'ENABLE_VERIFIED_CERTIFICATES': False, + # Allow use of the hint managment instructor view. 'ENABLE_HINTER_INSTRUCTOR_VIEW': False, diff --git a/lms/envs/test.py b/lms/envs/test.py index f0f734532d..a1bc567964 100644 --- a/lms/envs/test.py +++ b/lms/envs/test.py @@ -37,6 +37,8 @@ FEATURES['ENABLE_INSTRUCTOR_BETA_DASHBOARD'] = True FEATURES['ENABLE_SHOPPING_CART'] = True +FEATURES['ENABLE_VERIFIED_CERTIFICATES'] = True + # Enable this feature for course staff grade downloads, to enable acceptance tests FEATURES['ENABLE_S3_GRADE_DOWNLOADS'] = True FEATURES['ALLOW_COURSE_STAFF_GRADE_DOWNLOADS'] = True diff --git a/lms/templates/dashboard/_dashboard_course_listing.html b/lms/templates/dashboard/_dashboard_course_listing.html index 082c510f25..229fed81d4 100644 --- a/lms/templates/dashboard/_dashboard_course_listing.html +++ b/lms/templates/dashboard/_dashboard_course_listing.html @@ -21,7 +21,11 @@ <%namespace name='static' file='../static_content.html'/>
  • -
    + % if settings.FEATURES.get('ENABLE_VERIFIED_CERTIFICATES'): +
    + % else: +
    + %endif <% course_target = reverse('info', args=[course.id]) %> @@ -35,23 +39,24 @@ ${_('{course_number} {course_name} Cover Image').format(course_number=course.number, course_name=course.display_name_with_default) | h} % endif - - % if enrollment.mode == "verified": - - ${_("Enrolled as: ")} - ID Verified Ribbon/Badge - ${_("Verified")} - - % elif enrollment.mode == "honor": - - ${_("Enrolled as: ")} - ${_("Honor Code")} - - % elif enrollment.mode == "audit": - - ${_("Enrolled as: ")} - ${_("Auditing")} - + % if settings.FEATURES.get('ENABLE_VERIFIED_CERTIFICATES'): + % if enrollment.mode == "verified": + + ${_("Enrolled as: ")} + ID Verified Ribbon/Badge + ${_("Verified")} + + % elif enrollment.mode == "honor": + + ${_("Enrolled as: ")} + ${_("Honor Code")} + + % elif enrollment.mode == "audit": + + ${_("Enrolled as: ")} + ${_("Auditing")} + + % endif % endif