added tests for instructor_dashboard.py, added docstring for _is_small_course, removed check for settings.ANALYTICS_DASHBOARD_URL when creating dashboard link
This commit is contained in:
125
lms/djangoapps/instructor/tests/test_instructor_dashboard.py
Normal file
125
lms/djangoapps/instructor/tests/test_instructor_dashboard.py
Normal file
@@ -0,0 +1,125 @@
|
||||
"""
|
||||
Unit tests for instructor_dashboard.py.
|
||||
"""
|
||||
from mock import patch
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.test.utils import override_settings
|
||||
from courseware.tests.helpers import LoginEnrollmentTestCase
|
||||
|
||||
from student.tests.factories import AdminFactory
|
||||
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
|
||||
from xmodule.modulestore.tests.factories import CourseFactory
|
||||
|
||||
|
||||
class TestInstructorDashboard(ModuleStoreTestCase, LoginEnrollmentTestCase):
|
||||
"""
|
||||
Tests for the instructor dashboard (not legacy).
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
"""
|
||||
Set up tests
|
||||
"""
|
||||
self.course = CourseFactory.create()
|
||||
|
||||
# Create instructor account
|
||||
instructor = AdminFactory.create()
|
||||
self.client.login(username=instructor.username, password="test")
|
||||
|
||||
# URL for instructor dash
|
||||
self.url = reverse('instructor_dashboard', kwargs={'course_id': self.course.id.to_deprecated_string()})
|
||||
|
||||
def tearDown(self):
|
||||
"""
|
||||
Undo patches.
|
||||
"""
|
||||
patch.stopall()
|
||||
|
||||
def get_dashboard_enrollment_message(self):
|
||||
return 'Enrollment data is now available in <a href="http://example.com/courses/{}" ' \
|
||||
'target="_blank">Example</a>.'.format(unicode(self.course.id))
|
||||
|
||||
def get_dashboard_demographic_message(self):
|
||||
return 'Demographic data is now available in <a href="http://example.com/courses/{}" ' \
|
||||
'target="_blank">Example</a>.'.format(unicode(self.course.id))
|
||||
|
||||
@patch.dict(settings.FEATURES, {'DISPLAY_ANALYTICS_ENROLLMENTS': False})
|
||||
@override_settings(ANALYTICS_DASHBOARD_URL='')
|
||||
def test_no_enrollments(self):
|
||||
"""
|
||||
Test enrollment section is hidden.
|
||||
"""
|
||||
response = self.client.get(self.url)
|
||||
# no enrollment information should be visible
|
||||
self.assertFalse('<h2>Enrollment Information</h2>' in response.content)
|
||||
|
||||
@patch.dict(settings.FEATURES, {'DISPLAY_ANALYTICS_ENROLLMENTS': True})
|
||||
@override_settings(ANALYTICS_DASHBOARD_URL='')
|
||||
def test_show_enrollments_data(self):
|
||||
"""
|
||||
Test enrollment data is shown.
|
||||
"""
|
||||
response = self.client.get(self.url)
|
||||
|
||||
# enrollment information visible
|
||||
self.assertTrue('<h2>Enrollment Information</h2>' in response.content)
|
||||
self.assertTrue('<td>Verified</td>' in response.content)
|
||||
self.assertTrue('<td>Audit</td>' in response.content)
|
||||
self.assertTrue('<td>Honor</td>' in response.content)
|
||||
|
||||
# dashboard link hidden
|
||||
self.assertFalse(self.get_dashboard_enrollment_message() in response.content)
|
||||
|
||||
@patch.dict(settings.FEATURES, {'DISPLAY_ANALYTICS_ENROLLMENTS': False})
|
||||
@override_settings(ANALYTICS_DASHBOARD_URL='http://example.com')
|
||||
@override_settings(ANALYTICS_DASHBOARD_NAME='Example')
|
||||
def test_show_dashboard_enrollment_message(self):
|
||||
"""
|
||||
Test enrollment dashboard message is shown and data is hidden.
|
||||
"""
|
||||
response = self.client.get(self.url)
|
||||
|
||||
# enrollment information hidden
|
||||
self.assertFalse('<td>Verified</td>' in response.content)
|
||||
self.assertFalse('<td>Audit</td>' in response.content)
|
||||
self.assertFalse('<td>Honor</td>' in response.content)
|
||||
|
||||
# link to dashboard shown
|
||||
expected_message = self.get_dashboard_enrollment_message()
|
||||
self.assertTrue(expected_message in response.content)
|
||||
|
||||
@patch.dict(settings.FEATURES, {'DISPLAY_ANALYTICS_DEMOGRAPHICS': True})
|
||||
@override_settings(ANALYTICS_DASHBOARD_URL='')
|
||||
@override_settings(ANALYTICS_DASHBOARD_NAME='')
|
||||
def test_show_dashboard_demographic_data(self):
|
||||
"""
|
||||
Test enrollment demographic data is shown.
|
||||
"""
|
||||
response = self.client.get(self.url)
|
||||
# demographic information displayed
|
||||
self.assertTrue('data-feature="year_of_birth"' in response.content)
|
||||
self.assertTrue('data-feature="gender"' in response.content)
|
||||
self.assertTrue('data-feature="level_of_education"' in response.content)
|
||||
|
||||
# dashboard link hidden
|
||||
self.assertFalse(self.get_dashboard_demographic_message() in response.content)
|
||||
|
||||
@patch.dict(settings.FEATURES, {'DISPLAY_ANALYTICS_DEMOGRAPHICS': False})
|
||||
@override_settings(ANALYTICS_DASHBOARD_URL='http://example.com')
|
||||
@override_settings(ANALYTICS_DASHBOARD_NAME='Example')
|
||||
def test_show_dashboard_demographic_message(self):
|
||||
"""
|
||||
Test enrollment demographic dashboard message is shown and data is hidden.
|
||||
"""
|
||||
response = self.client.get(self.url)
|
||||
|
||||
# demographics are hidden
|
||||
self.assertFalse('data-feature="year_of_birth"' in response.content)
|
||||
self.assertFalse('data-feature="gender"' in response.content)
|
||||
self.assertFalse('data-feature="level_of_education"' in response.content)
|
||||
|
||||
# link to dashboard shown
|
||||
expected_message = self.get_dashboard_demographic_message()
|
||||
self.assertTrue(expected_message in response.content)
|
||||
@@ -263,6 +263,7 @@ def _section_membership(course, access):
|
||||
|
||||
|
||||
def _is_small_course(course_key):
|
||||
""" Compares against MAX_ENROLLMENT_INSTR_BUTTONS to determine if course enrollment is considered small. """
|
||||
is_small_course = False
|
||||
enrollment_count = CourseEnrollment.num_enrolled_in(course_key)
|
||||
max_enrollment_for_buttons = settings.FEATURES.get("MAX_ENROLLMENT_INSTR_BUTTONS")
|
||||
@@ -364,11 +365,9 @@ def _section_send_email(course, access):
|
||||
|
||||
def _get_dashboard_link(course_key):
|
||||
# Construct a URL to the external analytics dashboard
|
||||
link = None
|
||||
if settings.ANALYTICS_DASHBOARD_URL:
|
||||
analytics_dashboard_url = '{0}/courses/{1}'.format(settings.ANALYTICS_DASHBOARD_URL, unicode(course_key))
|
||||
link = "<a href=\"{0}\" target=\"_blank\">{1}</a>".format(analytics_dashboard_url,
|
||||
settings.ANALYTICS_DASHBOARD_NAME)
|
||||
analytics_dashboard_url = '{0}/courses/{1}'.format(settings.ANALYTICS_DASHBOARD_URL, unicode(course_key))
|
||||
link = "<a href=\"{0}\" target=\"_blank\">{1}</a>".format(analytics_dashboard_url,
|
||||
settings.ANALYTICS_DASHBOARD_NAME)
|
||||
return link
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user