2. Update COMPREHNSIVE_THEME_DIR to COMPREHENSIVE_THEME_DIRS 3. Update paver commands to support multi theme dirs 4. Updating template loaders 5. Add ENABLE_COMPREHENSIVE_THEMING flag to enable or disable theming via settings 6. Update tests 7. Add backward compatibility for COMPREHEHNSIVE_THEME_DIR
88 lines
3.0 KiB
Python
88 lines
3.0 KiB
Python
""" Tests for rendering functions in the mako pipeline. """
|
|
|
|
import ddt
|
|
from unittest import skipUnless
|
|
|
|
from django.conf import settings
|
|
from django.test import TestCase
|
|
from paver.easy import call_task
|
|
|
|
from pipeline_mako import render_require_js_path_overrides, compressed_css, compressed_js
|
|
|
|
|
|
class RequireJSPathOverridesTest(TestCase):
|
|
"""Test RequireJS path overrides. """
|
|
|
|
OVERRIDES = {
|
|
'jquery': 'common/js/vendor/jquery.js',
|
|
'backbone': 'common/js/vendor/backbone.js',
|
|
'text': 'js/vendor/text.js'
|
|
}
|
|
|
|
OVERRIDES_JS = [
|
|
"<script type=\"text/javascript\">",
|
|
"(function (require) {",
|
|
"require.config({",
|
|
"paths: {",
|
|
"'jquery': 'common/js/vendor/jquery',",
|
|
"'text': 'js/vendor/text',",
|
|
"'backbone': 'common/js/vendor/backbone'",
|
|
"}",
|
|
"});",
|
|
"}).call(this, require || RequireJS.require);",
|
|
"</script>"
|
|
]
|
|
|
|
def test_requirejs_path_overrides(self):
|
|
result = render_require_js_path_overrides(self.OVERRIDES)
|
|
# To make the string comparision easy remove the whitespaces
|
|
self.assertEqual(map(str.strip, result.splitlines()), self.OVERRIDES_JS)
|
|
|
|
|
|
@ddt.ddt
|
|
class PipelineRenderTest(TestCase):
|
|
"""Test individual pipeline rendering functions. """
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
"""
|
|
Create static assets once for all pipeline render tests.
|
|
"""
|
|
super(PipelineRenderTest, cls).setUpClass()
|
|
call_task('pavelib.assets.update_assets', args=('lms', '--settings=test', '--themes=no'))
|
|
|
|
@skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in LMS')
|
|
@ddt.data(
|
|
(True,),
|
|
(False,),
|
|
)
|
|
def test_compressed_css(self, pipeline_enabled):
|
|
"""
|
|
Verify the behavior of compressed_css, with the pipeline
|
|
both enabled and disabled.
|
|
"""
|
|
with self.settings(PIPELINE_ENABLED=pipeline_enabled):
|
|
# Verify the default behavior
|
|
css_include = compressed_css('style-main-v1')
|
|
self.assertIn(u'lms-main-v1.css', css_include)
|
|
|
|
# Verify that raw keyword causes raw URLs to be emitted
|
|
css_include = compressed_css('style-main-v1', raw=True)
|
|
self.assertIn(u'lms-main-v1.css?raw', css_include)
|
|
|
|
@skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in LMS')
|
|
def test_compressed_js(self):
|
|
"""
|
|
Verify the behavior of compressed_css, with the pipeline
|
|
both enabled and disabled.
|
|
"""
|
|
# Verify that a single JS file is rendered with the pipeline enabled
|
|
with self.settings(PIPELINE_ENABLED=True):
|
|
js_include = compressed_js('base_application')
|
|
self.assertIn(u'lms-base-application.js', js_include)
|
|
|
|
# Verify that multiple JS files are rendered with the pipeline disabled
|
|
with self.settings(PIPELINE_ENABLED=False):
|
|
js_include = compressed_js('base_application')
|
|
self.assertIn(u'/static/js/src/logger.js', js_include)
|