From 5bbeb7d924c9fb9618a40c261ca52e3ee78fc6bb Mon Sep 17 00:00:00 2001 From: Saqib Date: Mon, 23 Nov 2020 19:13:49 +0500 Subject: [PATCH 1/2] add i18n support for js templates --- setup.py | 2 +- xblockutils/resources.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py index e16ae17..2941cbd 100644 --- a/setup.py +++ b/setup.py @@ -66,7 +66,7 @@ def is_requirement(line): README = open(os.path.join(os.path.dirname(__file__), 'README.rst')).read() -VERSION = '2.1.1' +VERSION = '2.1.2' if sys.argv[-1] == 'tag': print("Tagging the version on github:") diff --git a/xblockutils/resources.py b/xblockutils/resources.py index e1bc9b0..34ee288 100644 --- a/xblockutils/resources.py +++ b/xblockutils/resources.py @@ -85,14 +85,14 @@ def render_template(self, template_path, context=None): ) return self.render_django_template(template_path, context) - def render_js_template(self, template_path, element_id, context=None): + def render_js_template(self, template_path, element_id, context=None, i18n_service=None): """ Render a js template. """ context = context or {} return u"".format( element_id, - self.render_django_template(template_path, context) + self.render_django_template(template_path, context, i18n_service) ) def load_scenarios_from_path(self, relative_scenario_dir, include_identifier=False): From 654abe41eb1f1d5a9f87c9e83d346ae1ac39d250 Mon Sep 17 00:00:00 2001 From: Saqib Date: Tue, 24 Nov 2020 13:59:21 +0500 Subject: [PATCH 2/2] add tests --- tests/unit/test_resources.py | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/tests/unit/test_resources.py b/tests/unit/test_resources.py index 9a7423a..8207dca 100644 --- a/tests/unit/test_resources.py +++ b/tests/unit/test_resources.py @@ -105,6 +105,23 @@ \ """.format(expected_filled_template) +expected_filled_translated_js_template = u"""\ +\ +""".format(expected_translated_template) + +expected_filled_not_translated_js_template = u"""\ +\ +""".format(expected_not_translated_template) + +expected_filled_localized_js_template = u"""\ +\ +""".format(expected_localized_template) another_template = u"""\ This is an even simpler xml template. @@ -199,6 +216,27 @@ def test_render_js_template(self): s = loader.render_js_template("data/simple_django_template.txt", example_id, example_context) self.assertEqual(s, expected_filled_js_template) + def test_render_js_template_translated(self): + loader = ResourceLoader(__name__) + s = loader.render_js_template("data/trans_django_template.txt", + example_id, + context=example_context, + i18n_service=MockI18nService()) + self.assertEqual(s, expected_filled_translated_js_template) + + # Test that the language changes were reverted + s = loader.render_js_template("data/trans_django_template.txt", example_id, example_context) + self.assertEqual(s, expected_filled_not_translated_js_template) + + def test_render_js_template_localized(self): + # Test that default template tags like l10n are loaded + loader = ResourceLoader(__name__) + s = loader.render_js_template("data/l10n_django_template.txt", + example_id, + context=example_context, + i18n_service=MockI18nService()) + self.assertEqual(s, expected_filled_localized_js_template) + def test_load_scenarios(self): loader = ResourceLoader(__name__) scenarios = loader.load_scenarios_from_path("data")