[py3] Fixed jsi18n test.

Also refactored said test to avoid leaking state (ie. active
translation) when an error occurs.
This commit is contained in:
Aymeric Augustin 2012-08-15 09:45:28 +02:00
parent 478a69314e
commit e0ec7507ac
1 changed files with 16 additions and 14 deletions

View File

@ -7,7 +7,8 @@ from os import path
from django.conf import settings
from django.core.urlresolvers import reverse
from django.test import TestCase
from django.utils.translation import override, activate, get_language
from django.utils import six
from django.utils.translation import override, get_language
from django.utils.text import javascript_quote
from ..urls import locale_dir
@ -29,20 +30,21 @@ class I18NTests(TestCase):
def test_jsi18n(self):
"""The javascript_catalog can be deployed with language settings"""
saved_lang = get_language()
for lang_code in ['es', 'fr', 'ru']:
activate(lang_code)
catalog = gettext.translation('djangojs', locale_dir, [lang_code])
trans_txt = catalog.ugettext('this is to be translated')
response = self.client.get('/views/jsi18n/')
# in response content must to be a line like that:
# catalog['this is to be translated'] = 'same_that_trans_txt'
# javascript_quote is used to be able to check unicode strings
self.assertContains(response, javascript_quote(trans_txt), 1)
if lang_code == 'fr':
# Message with context (msgctxt)
self.assertContains(response, "['month name\x04May'] = 'mai';", 1)
activate(saved_lang)
with override(lang_code):
catalog = gettext.translation('djangojs', locale_dir, [lang_code])
if six.PY3:
trans_txt = catalog.gettext('this is to be translated')
else:
trans_txt = catalog.ugettext('this is to be translated')
response = self.client.get('/views/jsi18n/')
# in response content must to be a line like that:
# catalog['this is to be translated'] = 'same_that_trans_txt'
# javascript_quote is used to be able to check unicode strings
self.assertContains(response, javascript_quote(trans_txt), 1)
if lang_code == 'fr':
# Message with context (msgctxt)
self.assertContains(response, "['month name\x04May'] = 'mai';", 1)
class JsI18NTests(TestCase):