summaryrefslogtreecommitdiffstats
path: root/tests/test_utils.py
diff options
context:
space:
mode:
authorLibravatarAgustin Henze <tin@sluc.org.ar>2014-06-13 21:51:02 -0300
committerLibravatarAgustin Henze <tin@sluc.org.ar>2014-06-13 21:51:02 -0300
commit58c4878526dec5510f23c812274686787d8724ba (patch)
tree5f2374bc17adb10e15f7e5b4576595d9cc2ef17e /tests/test_utils.py
parentfa50632a9d87c3989566fed3e49c160a132e0d14 (diff)
Imported Upstream version 7.0.1upstream/7.0.1
Diffstat (limited to 'tests/test_utils.py')
-rw-r--r--tests/test_utils.py90
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()