diff options
Diffstat (limited to 'tests/test_utils.py')
| -rw-r--r-- | tests/test_utils.py | 90 |
1 files changed, 89 insertions, 1 deletions
diff --git a/tests/test_utils.py b/tests/test_utils.py index 5aeba19..44d309b 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -12,7 +12,7 @@ import unittest import mock import lxml.html from nikola.post import get_meta -from nikola.utils import demote_headers +from nikola.utils import demote_headers, TranslatableSetting class dummy(object): @@ -234,5 +234,93 @@ class HeaderDemotionTest(unittest.TestCase): self.assertEquals(lxml.html.tostring(outdoc), lxml.html.tostring(doc)) +class TranslatableSettingsTest(unittest.TestCase): + """Tests for translatable settings.""" + + def test_string_input(self): + """Tests for string input.""" + inp = 'Fancy Blog' + S = TranslatableSetting('S', inp, {'xx': ''}) + S.default_lang = 'xx' + S.lang = 'xx' + + try: + u = unicode(S) + except NameError: # Python 3 + u = str(S) + + cn = S() # no language specified + cr = S('xx') # real language specified + cf = S('zz') # fake language specified + + self.assertEqual(inp, u) + self.assertEqual(inp, cn) + self.assertEqual(inp, cr) + self.assertEqual(inp, cf) + self.assertEqual(S.lang, 'xx') + self.assertEqual(S.default_lang, 'xx') + + def test_dict_input(self): + """Tests for dict input.""" + inp = {'xx': 'Fancy Blog', + 'zz': 'Schmancy Blog'} + + S = TranslatableSetting('S', inp, {'xx': '', 'zz': ''}) + S.default_lang = 'xx' + S.lang = 'xx' + + try: + u = unicode(S) + except NameError: # Python 3 + u = str(S) + + cn = S() + cx = S('xx') + cz = S('zz') + cf = S('ff') + + self.assertEqual(inp['xx'], u) + self.assertEqual(inp['xx'], cn) + self.assertEqual(inp['xx'], cx) + self.assertEqual(inp['zz'], cz) + self.assertEqual(inp['xx'], cf) + + def test_dict_input_lang(self): + """Test dict input, with a language change along the way.""" + inp = {'xx': 'Fancy Blog', + 'zz': 'Schmancy Blog'} + + S = TranslatableSetting('S', inp, {'xx': '', 'zz': ''}) + S.default_lang = 'xx' + S.lang = 'xx' + + try: + u = unicode(S) + except NameError: # Python 3 + u = str(S) + + cn = S() + + self.assertEqual(inp['xx'], u) + self.assertEqual(inp['xx'], cn) + + # Change the language. + # WARNING: DO NOT set lang locally in real code! Set it globally + # instead! (TranslatableSetting.lang = ...) + # WARNING: TranslatableSetting.lang is used to override the current + # locale settings returned by LocaleBorg! Use with care! + S.lang = 'zz' + + try: + u = unicode(S) + except NameError: # Python 3 + u = str(S) + + cn = S() + + self.assertEqual(inp['zz'], u) + self.assertEqual(inp['zz'], cn) + + if __name__ == '__main__': unittest.main() |
