test: Added tests for frappe.translate.get_language
This commit is contained in:
parent
4959dd02f1
commit
421220a872
2 changed files with 56 additions and 3 deletions
|
|
@ -1,13 +1,27 @@
|
|||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
# Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
# MIT License. See license.txt
|
||||
import frappe, unittest, os
|
||||
import os
|
||||
import unittest
|
||||
from random import choices
|
||||
from unittest.mock import patch
|
||||
|
||||
import frappe
|
||||
import frappe.translate
|
||||
from frappe import _
|
||||
from frappe.auth import HTTPRequest
|
||||
from frappe.translate import get_parent_language
|
||||
from frappe.utils import set_request
|
||||
|
||||
dirname = os.path.dirname(__file__)
|
||||
translation_string_file = os.path.join(dirname, 'translation_test_file.txt')
|
||||
first_lang, second_lang, third_lang, fourth_lang, fifth_lang = choices(
|
||||
frappe.get_all("Language", pluck="name"), k=5
|
||||
)
|
||||
|
||||
class TestTranslate(unittest.TestCase):
|
||||
def tearDown(self):
|
||||
frappe.form_dict.pop("_lang", None)
|
||||
|
||||
def test_extract_message_from_file(self):
|
||||
data = frappe.translate.get_messages_from_file(translation_string_file)
|
||||
self.assertListEqual(data, expected_output)
|
||||
|
|
@ -20,6 +34,42 @@ class TestTranslate(unittest.TestCase):
|
|||
finally:
|
||||
frappe.local.lang = 'en'
|
||||
|
||||
def test_request_language_resolution_with_form_dict(self):
|
||||
"""Test for frappe.translate.get_language
|
||||
|
||||
Case 1: frappe.form_dict._lang is set
|
||||
"""
|
||||
|
||||
frappe.form_dict._lang = first_lang
|
||||
|
||||
with patch.object(frappe.translate, "get_preferred_language_cookie", return_value=second_lang):
|
||||
set_request(method="POST", path="/", headers=[("Accept-Language", third_lang)])
|
||||
HTTPRequest()
|
||||
|
||||
self.assertIn(frappe.local.lang, [first_lang, get_parent_language(first_lang)])
|
||||
|
||||
def test_request_language_resolution_with_cookie(self):
|
||||
"""Test for frappe.translate.get_language
|
||||
|
||||
Case 2: frappe.form_dict._lang is not set, but preferred_language cookie is
|
||||
"""
|
||||
|
||||
with patch.object(frappe.translate, "get_preferred_language_cookie", return_value=second_lang):
|
||||
set_request(method="POST", path="/", headers=[("Accept-Language", third_lang)])
|
||||
HTTPRequest()
|
||||
|
||||
self.assertIn(frappe.local.lang, [second_lang, get_parent_language(second_lang)])
|
||||
|
||||
def test_request_language_resolution_with_request_header(self):
|
||||
"""Test for frappe.translate.get_language
|
||||
|
||||
Case 3: frappe.form_dict._lang & preferred_language cookie is not set, but Accept-Language header is
|
||||
"""
|
||||
set_request(method="POST", path="/", headers=[("Accept-Language", third_lang)])
|
||||
HTTPRequest()
|
||||
self.assertIn(frappe.local.lang, [third_lang, get_parent_language(third_lang)])
|
||||
|
||||
|
||||
expected_output = [
|
||||
('apps/frappe/frappe/tests/translation_test_file.txt', 'Warning: Unable to find {0} in any table related to {1}', 'This is some context', 2),
|
||||
('apps/frappe/frappe/tests/translation_test_file.txt', 'Warning: Unable to find {0} in any table related to {1}', None, 4),
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ def get_language(lang_list: List = None) -> str:
|
|||
lang_set = set(lang_list or get_all_languages() or [])
|
||||
|
||||
# fetch language from cookie
|
||||
preferred_language_cookie = frappe.request.cookies.get('preferred_language')
|
||||
preferred_language_cookie = get_preferred_language_cookie()
|
||||
|
||||
if preferred_language_cookie:
|
||||
if preferred_language_cookie in lang_set:
|
||||
|
|
@ -906,3 +906,6 @@ def get_all_languages(with_language_name=False):
|
|||
@frappe.whitelist(allow_guest=True)
|
||||
def set_preferred_language_cookie(preferred_language):
|
||||
frappe.local.cookie_manager.set_cookie("preferred_language", preferred_language)
|
||||
|
||||
def get_preferred_language_cookie():
|
||||
return frappe.request.cookies.get("preferred_language")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue