1. from django.template import TemplateSyntaxError
    
  2. from django.test import SimpleTestCase
    
  3. from django.utils import translation
    
  4. 
    
  5. from ...utils import setup
    
  6. 
    
  7. 
    
  8. class I18nGetLanguageInfoTagTests(SimpleTestCase):
    
  9.     libraries = {
    
  10.         "custom": "template_tests.templatetags.custom",
    
  11.         "i18n": "django.templatetags.i18n",
    
  12.     }
    
  13. 
    
  14.     # retrieving language information
    
  15.     @setup(
    
  16.         {
    
  17.             "i18n28_2": "{% load i18n %}"
    
  18.             '{% get_language_info for "de" as l %}'
    
  19.             "{{ l.code }}: {{ l.name }}/{{ l.name_local }} bidi={{ l.bidi }}"
    
  20.         }
    
  21.     )
    
  22.     def test_i18n28_2(self):
    
  23.         output = self.engine.render_to_string("i18n28_2")
    
  24.         self.assertEqual(output, "de: German/Deutsch bidi=False")
    
  25. 
    
  26.     @setup(
    
  27.         {
    
  28.             "i18n29": "{% load i18n %}"
    
  29.             "{% get_language_info for LANGUAGE_CODE as l %}"
    
  30.             "{{ l.code }}: {{ l.name }}/{{ l.name_local }} bidi={{ l.bidi }}"
    
  31.         }
    
  32.     )
    
  33.     def test_i18n29(self):
    
  34.         output = self.engine.render_to_string("i18n29", {"LANGUAGE_CODE": "fi"})
    
  35.         self.assertEqual(output, "fi: Finnish/suomi bidi=False")
    
  36. 
    
  37.     # Test whitespace in filter arguments
    
  38.     @setup(
    
  39.         {
    
  40.             "i18n38": "{% load i18n custom %}"
    
  41.             '{% get_language_info for "de"|noop:"x y" as l %}'
    
  42.             "{{ l.code }}: {{ l.name }}/{{ l.name_local }}/"
    
  43.             "{{ l.name_translated }} bidi={{ l.bidi }}"
    
  44.         }
    
  45.     )
    
  46.     def test_i18n38(self):
    
  47.         with translation.override("cs"):
    
  48.             output = self.engine.render_to_string("i18n38")
    
  49.         self.assertEqual(output, "de: German/Deutsch/německy bidi=False")
    
  50. 
    
  51.     @setup({"template": "{% load i18n %}{% get_language_info %}"})
    
  52.     def test_no_for_as(self):
    
  53.         msg = "'get_language_info' requires 'for string as variable' (got [])"
    
  54.         with self.assertRaisesMessage(TemplateSyntaxError, msg):
    
  55.             self.engine.render_to_string("template")