diff --git a/common/lib/xmodule/xmodule/html_module.py b/common/lib/xmodule/xmodule/html_module.py index bbf24a6320..8af3693b3f 100644 --- a/common/lib/xmodule/xmodule/html_module.py +++ b/common/lib/xmodule/xmodule/html_module.py @@ -32,6 +32,8 @@ class HtmlModule(HtmlFields, XModule): css = {'scss': [resource_string(__name__, 'css/html/display.scss')]} def get_html(self): + if self.system.anonymous_student_id: + return self.data.replace("%%USER_ID%%", self.system.anonymous_student_id) return self.data diff --git a/common/lib/xmodule/xmodule/tests/test_html_module.py b/common/lib/xmodule/xmodule/tests/test_html_module.py new file mode 100644 index 0000000000..e56e9babe7 --- /dev/null +++ b/common/lib/xmodule/xmodule/tests/test_html_module.py @@ -0,0 +1,40 @@ +import unittest + +from mock import Mock + +from xmodule.html_module import HtmlModule +from xmodule.modulestore import Location + +from . import test_system + +class HtmlModuleSubstitutionTestCase(unittest.TestCase): + location = Location(["i4x", "edX", "toy", "html", "simple_html"]) + descriptor = Mock() + + def test_substitution_works(self): + sample_xml = '''%%USER_ID%%''' + module_data = {'data': sample_xml} + module_system = test_system() + module = HtmlModule(module_system, self.location, self.descriptor, module_data) + self.assertEqual(module.get_html(), str(module_system.anonymous_student_id)) + + + def test_substitution_without_magic_string(self): + sample_xml = ''' + +
Hi USER_ID!11!
+ + ''' + module_data = {'data': sample_xml} + module = HtmlModule(test_system(), self.location, self.descriptor, module_data) + self.assertEqual(module.get_html(), sample_xml) + + + def test_substitution_without_anonymous_student_id(self): + sample_xml = '''%%USER_ID%%''' + module_data = {'data': sample_xml} + module_system = test_system() + module_system.anonymous_student_id = None + module = HtmlModule(module_system, self.location, self.descriptor, module_data) + self.assertEqual(module.get_html(), sample_xml) +