From d9b685d5dfe49ed070d3d06600d167198cc09df4 Mon Sep 17 00:00:00 2001 From: Waheed Ahmed Date: Thu, 19 Mar 2015 17:28:34 +0500 Subject: [PATCH] Fixed beta tester functionality for ora problems. TNL-1736 --- lms/djangoapps/courseware/module_render.py | 3 +++ .../courseware/tests/test_module_render.py | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py index b9040150ad..799c71eafc 100644 --- a/lms/djangoapps/courseware/module_render.py +++ b/lms/djangoapps/courseware/module_render.py @@ -41,6 +41,7 @@ from edxmako.shortcuts import render_to_string from eventtracking import tracker from psychometrics.psychoanalyze import make_psychometrics_data_update_handler from student.models import anonymous_id_for_user, user_by_anonymous_id +from student.roles import CourseBetaTesterRole from xblock.core import XBlock from xblock.fields import Scope from xblock.runtime import KvsFieldData, KeyValueStore @@ -642,6 +643,8 @@ def get_module_system_for_user(user, field_data_cache, system.set(u'user_is_staff', user_is_staff) system.set(u'user_is_admin', has_access(user, u'staff', 'global')) + system.set(u'user_is_beta_tester', CourseBetaTesterRole(course_id).has_user(user)) + system.set(u'days_early_for_beta', getattr(descriptor, 'days_early_for_beta')) # make an ErrorDescriptor -- assuming that the descriptor's system is ok if has_access(user, u'staff', descriptor.location, course_id): diff --git a/lms/djangoapps/courseware/tests/test_module_render.py b/lms/djangoapps/courseware/tests/test_module_render.py index 1ef7fc94ae..3064b5356c 100644 --- a/lms/djangoapps/courseware/tests/test_module_render.py +++ b/lms/djangoapps/courseware/tests/test_module_render.py @@ -997,6 +997,7 @@ class TestAnonymousStudentId(ModuleStoreTestCase, LoginEnrollmentTestCase): _field_data_cache={}, _dirty_fields={}, fields={}, + days_early_for_beta=None, ) descriptor.runtime = CombinedSystem(descriptor._runtime, None) # pylint: disable=protected-access # Use the xblock_class's bind_for_student method @@ -1308,6 +1309,25 @@ class LMSXBlockServiceBindingTest(ModuleStoreTestCase): service = runtime.service(descriptor, expected_service) self.assertIsNotNone(service) + def test_beta_tester_fields_added(self): + """ + Tests that the beta tester fields are set on LMS runtime. + """ + descriptor = ItemFactory(category="pure", parent=self.course) + descriptor.days_early_for_beta = 5 + runtime, _ = render.get_module_system_for_user( + self.user, + self.field_data_cache, + descriptor, + self.course.id, + self.track_function, + self.xqueue_callback_url_prefix, + self.request_token + ) + + self.assertFalse(getattr(runtime, u'user_is_beta_tester')) + self.assertEqual(getattr(runtime, u'days_early_for_beta'), 5) + class PureXBlockWithChildren(PureXBlock): """