diff options
author | Nick Pope <nick.pope@flightdataservices.com> | 2018-11-26 12:19:13 +0000 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-03-28 20:10:50 +0100 |
commit | 4400d8296d268f5a8523cd02ddc33b12219b2535 (patch) | |
tree | 64ddc97f3f123d79e5a40de9cc253e87efa938a3 /tests/check_framework | |
parent | d4783048efac81f73f3b8785696111547a31bcf1 (diff) | |
download | django-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.py | 69 |
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'), + ]) |