zulip/zerver/tests/test_i18n.py

95 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-
from __future__ import absolute_import
from typing import Any
import mock
from django.test import TestCase
from django.conf import settings
from django.http import HttpResponse
from http.cookies import SimpleCookie
from zerver.lib.test_helpers import AuthedTestCase
class TranslationTestCase(TestCase):
"""
Tranlations strings should change with locale. URLs should be locale
aware.
"""
# e.g. self.client.post(url) if method is "post"
def fetch(self, method, url, expected_status, **kwargs):
# type: (str, str, int, **Any) -> HttpResponse
response = getattr(self.client, method)(url, **kwargs)
self.assertEqual(response.status_code, expected_status,
msg="Expected %d, received %d for %s to %s" % (
expected_status, response.status_code, method, url))
return response
def test_accept_language_header(self):
# type: () -> None
languages = [('en', 'Register'),
('de', 'Registrieren'),
('sr', 'Региструј се'),
('zh-cn', '注册'),
]
for lang, word in languages:
response = self.fetch('get', '/integrations/', 200,
HTTP_ACCEPT_LANGUAGE=lang)
self.assertTrue(word in response.content)
def test_cookie(self):
# type: () -> None
languages = [('en', 'Register'),
('de', 'Registrieren'),
('sr', 'Региструј се'),
('zh-cn', '注册'),
]
for lang, word in languages:
self.client.cookies = SimpleCookie({settings.LANGUAGE_COOKIE_NAME: lang})
response = self.fetch('get', '/integrations/', 200)
self.assertTrue(word in response.content)
def test_i18n_urls(self):
# type: () -> None
languages = [('en', 'Register'),
('de', 'Registrieren'),
('sr', 'Региструј се'),
('zh-cn', '注册'),
]
for lang, word in languages:
response = self.fetch('get', '/{}/integrations/'.format(lang), 200)
self.assertTrue(word in response.content)
class JsonTranslationTestCase(AuthedTestCase):
@mock.patch('zerver.lib.request._')
def test_json_error(self, mock_gettext):
dummy_value = "Some other language '%s'"
mock_gettext.return_value = dummy_value
self.login("hamlet@zulip.com")
result = self.client.post("/json/refer_friend",
HTTP_ACCEPT_LANGUAGE='de')
self.assert_json_error_contains(result,
dummy_value % 'email',
status_code=400)
@mock.patch('zerver.views._')
def test_jsonable_error(self, mock_gettext):
dummy_value = "Some other language"
mock_gettext.return_value = dummy_value
self.login("hamlet@zulip.com")
result = self.client.get("/de/accounts/login/jwt/")
self.assert_json_error_contains(result,
dummy_value,
status_code=400)