Files
edx-platform/common/djangoapps/pipeline_mako/tests/test_render.py
Matt Drayer 68312bdd2d Revert "Revert "saleem-latif/WL-328: Multi-Site Comprehensive Theming""
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
2016-06-30 15:19:51 +05:00

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)