summaryrefslogtreecommitdiff
path: root/tests/check_framework
diff options
context:
space:
mode:
authorNick Pope <nick.pope@flightdataservices.com>2018-11-26 12:19:13 +0000
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-03-28 20:10:50 +0100
commit4400d8296d268f5a8523cd02ddc33b12219b2535 (patch)
tree64ddc97f3f123d79e5a40de9cc253e87efa938a3 /tests/check_framework
parentd4783048efac81f73f3b8785696111547a31bcf1 (diff)
downloaddjango-4400d8296d268f5a8523cd02ddc33b12219b2535.tar.gz
Fixed #30241 -- Added more system checks of translation settings.
Diffstat (limited to 'tests/check_framework')
-rw-r--r--tests/check_framework/test_translation.py69
1 files changed, 59 insertions, 10 deletions
diff --git a/tests/check_framework/test_translation.py b/tests/check_framework/test_translation.py
index 7f6d93b38f..9a34b65c06 100644
--- a/tests/check_framework/test_translation.py
+++ b/tests/check_framework/test_translation.py
@@ -1,12 +1,15 @@
from django.core.checks import Error
-from django.core.checks.translation import check_setting_language_code
+from django.core.checks.translation import (
+ check_language_settings_consistent, check_setting_language_code,
+ check_setting_languages, check_setting_languages_bidi,
+)
from django.test import SimpleTestCase
class TranslationCheckTests(SimpleTestCase):
- def test_valid_language_code(self):
- tags = (
+ def setUp(self):
+ self.valid_tags = (
'en', # language
'mas', # language
'sgn-ase', # language+extlang
@@ -17,12 +20,7 @@ class TranslationCheckTests(SimpleTestCase):
# FIXME: The following should be invalid:
'sr@latin', # language+script
)
- for tag in tags:
- with self.subTest(tag), override_settings(LANGUAGE_CODE=tag):
- self.assertEqual(check_setting_language_code(None), [])
-
- def test_invalid_language_code(self):
- tags = (
+ self.invalid_tags = (
None, # invalid type: None.
123, # invalid type: int.
b'en', # invalid type: bytes.
@@ -37,9 +35,60 @@ class TranslationCheckTests(SimpleTestCase):
# FIXME: The following should be invalid:
# 'sr@latin', # locale instead of language tag.
)
+
+ def test_valid_language_code(self):
+ for tag in self.valid_tags:
+ with self.subTest(tag), self.settings(LANGUAGE_CODE=tag):
+ self.assertEqual(check_setting_language_code(None), [])
+
+ def test_invalid_language_code(self):
msg = 'You have provided an invalid value for the LANGUAGE_CODE setting: %s.'
- for tag in tags:
+ for tag in self.invalid_tags:
with self.subTest(tag), self.settings(LANGUAGE_CODE=tag):
self.assertEqual(check_setting_language_code(None), [
Error(msg % tag, id='translation.E001'),
])
+
+ def test_valid_languages(self):
+ for tag in self.valid_tags:
+ with self.subTest(tag), self.settings(LANGUAGES=[(tag, tag)]):
+ self.assertEqual(check_setting_languages(None), [])
+
+ def test_invalid_languages(self):
+ msg = 'You have provided an invalid language code in the LANGUAGES setting: %s.'
+ for tag in self.invalid_tags:
+ with self.subTest(tag), self.settings(LANGUAGES=[(tag, tag)]):
+ self.assertEqual(check_setting_languages(None), [
+ Error(msg % tag, id='translation.E002'),
+ ])
+
+ def test_valid_languages_bidi(self):
+ for tag in self.valid_tags:
+ with self.subTest(tag), self.settings(LANGUAGES_BIDI=[tag]):
+ self.assertEqual(check_setting_languages_bidi(None), [])
+
+ def test_invalid_languages_bidi(self):
+ msg = 'You have provided an invalid language code in the LANGUAGES_BIDI setting: %s.'
+ for tag in self.invalid_tags:
+ with self.subTest(tag), self.settings(LANGUAGES_BIDI=[tag]):
+ self.assertEqual(check_setting_languages_bidi(None), [
+ Error(msg % tag, id='translation.E003'),
+ ])
+
+ def test_inconsistent_language_settings(self):
+ msg = (
+ 'You have provided a value for the LANGUAGE_CODE setting that is '
+ 'not in the LANGUAGES setting.'
+ )
+ with self.settings(LANGUAGE_CODE='fr', LANGUAGES=[('en', 'English')], LANGUAGES_BIDI=[]):
+ self.assertEqual(check_language_settings_consistent(None), [
+ Error(msg, id='translation.E004'),
+ ])
+ msg = (
+ 'You have provided values in the LANGUAGES_BIDI setting that are '
+ 'not in the LANGUAGES setting.'
+ )
+ with self.settings(LANGUAGE_CODE='en', LANGUAGES=[('en', 'English')], LANGUAGES_BIDI=['he']):
+ self.assertEqual(check_language_settings_consistent(None), [
+ Error(msg, id='translation.E005'),
+ ])