Added test for T used in HTML tags, fix language encode(), close #1856

This commit is contained in:
ilvalle
2018-02-10 20:22:32 +01:00
parent 44e27bf65f
commit fa31a6b61b
2 changed files with 27 additions and 2 deletions

View File

@@ -431,7 +431,10 @@ class lazyT(object):
return str(self) if self.M else local_html_escape(str(self), quote=False)
def encode(self, *a, **b):
return str(self).encode(*a, **b)
if PY2 and a[0] != 'utf8':
return to_unicode(str(self)).encode(*a, **b)
else:
return str(self)
def decode(self, *a, **b):
if PY2:

View File

@@ -12,8 +12,9 @@ import tempfile
import unittest
from gluon import languages
from gluon._compat import PY2, to_unicode
from gluon._compat import PY2, to_unicode, to_bytes
from gluon.storage import Messages
from gluon.html import SPAN
MP_WORKING = 0
try:
@@ -201,3 +202,24 @@ class TestMessages(unittest.TestCase):
messages = Messages(T)
messages.update({'email_sent':'Email sent', 'test': "ä"})
self.assertEqual(to_unicode(messages.email_sent, 'utf-8'), 'Email sent')
class TestHTMLTag(unittest.TestCase):
def setUp(self):
if os.path.isdir('gluon'):
self.langpath = 'applications/welcome/languages'
else:
self.langpath = os.path.realpath(
'../../applications/welcome/languages')
self.http_accept_language = 'en'
def tearDown(self):
pass
def test_decode(self):
T = languages.translator(self.langpath, self.http_accept_language)
elem = SPAN(T("Complete"))
self.assertEqual(elem.flatten(), "Complete")
elem = SPAN(T("Cannot be empty", language="ru"))
self.assertEqual(elem.xml(), to_bytes('<span>Пустое значение недопустимо</span>'))
self.assertEqual(elem.flatten(), 'Пустое значение недопустимо')