From 18f3221dcfb5f9f2cadc22c4fa029a1bdad0ded2 Mon Sep 17 00:00:00 2001 From: Waheed Ahmed Date: Thu, 8 Jan 2015 12:36:29 +0500 Subject: [PATCH] Enforced '000' prefix for xmodule.js and added unit test. TNL-1070 --- common/lib/xmodule/xmodule/static_content.py | 4 +++- common/lib/xmodule/xmodule/tests/test_content.py | 15 +++++++++++++++ common/lib/xmodule/xmodule/x_module.py | 6 ++---- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/common/lib/xmodule/xmodule/static_content.py b/common/lib/xmodule/xmodule/static_content.py index a9b4512b0d..85468be87d 100755 --- a/common/lib/xmodule/xmodule/static_content.py +++ b/common/lib/xmodule/xmodule/static_content.py @@ -122,9 +122,11 @@ def _write_js(output_root, classes): js_fragments = set() for class_ in classes: module_js = class_.get_javascript() + # It will enforce 000 prefix for xmodule.js. + js_fragments.add((0, 'js', module_js.get('xmodule_js'))) for filetype in ('coffee', 'js'): for idx, fragment in enumerate(module_js.get(filetype, [])): - js_fragments.add((idx, filetype, fragment)) + js_fragments.add((idx + 1, filetype, fragment)) for idx, filetype, fragment in sorted(js_fragments): filename = "{idx:0=3d}-{hash}.{type}".format( diff --git a/common/lib/xmodule/xmodule/tests/test_content.py b/common/lib/xmodule/xmodule/tests/test_content.py index 5c9c50c4be..f3eea8bbc8 100644 --- a/common/lib/xmodule/xmodule/tests/test_content.py +++ b/common/lib/xmodule/xmodule/tests/test_content.py @@ -1,8 +1,13 @@ +"""Tests for contents""" + +import os import unittest import ddt +from path import path from xmodule.contentstore.content import StaticContent, StaticContentStream from xmodule.contentstore.content import ContentStore from opaque_keys.edx.locations import SlashSeparatedCourseKey, AssetLocation +from xmodule.static_content import _write_js, _list_descriptors SAMPLE_STRING = """ This is a sample string with more than 1024 bytes, the default STREAM_DATA_CHUNK_SIZE @@ -155,3 +160,13 @@ class ContentTest(unittest.TestCase): total_length += len(chunck) self.assertEqual(total_length, last_byte - first_byte + 1) + + def test_static_content_write_js(self): + """ + Test that only one filename starts with 000. + """ + output_root = path(u'common/static/xmodule/descriptors/js') + js_file_paths = _write_js(output_root, _list_descriptors()) + js_file_paths = [file_path for file_path in js_file_paths if os.path.basename(file_path).startswith('000-')] + self.assertEqual(len(js_file_paths), 1) + self.assertIn("XModule.Descriptor = (function () {", open(js_file_paths[0]).read()) diff --git a/common/lib/xmodule/xmodule/x_module.py b/common/lib/xmodule/xmodule/x_module.py index 88f87f80d3..00487d4848 100644 --- a/common/lib/xmodule/xmodule/x_module.py +++ b/common/lib/xmodule/xmodule/x_module.py @@ -200,10 +200,8 @@ class HTMLSnippet(object): coffee = cls.js.setdefault('coffee', []) js = cls.js.setdefault('js', []) - fragment = resource_string(__name__, 'js/src/xmodule.js') - - if fragment not in js: - js.insert(0, fragment) + # Added xmodule.js separately to enforce 000 prefix for this only. + cls.js.setdefault('xmodule_js', resource_string(__name__, 'js/src/xmodule.js')) return cls.js