Добавление класса LocaleManager

This commit is contained in:
2026-07-10 23:02:17 +03:00
parent ef09fb4de3
commit 31a13c7ccc
6 changed files with 487 additions and 1 deletions

View File

@@ -13,7 +13,7 @@ from django.test import TestCase
from net.xeaf.rack.enums import UILanguage
class UILanguageTest(TestCase):
class UILanguageTests(TestCase):
"""
Тесты для перечисления UILanguage
"""
@@ -34,3 +34,79 @@ class UILanguageTest(TestCase):
for code in UILanguage.values():
self.assertEqual(len(code), 2)
self.assertTrue(code.islower())
def test_from_string_returns_english_for_en(self):
"""
Проверяем, что from_string возвращает ENGLISH для 'en'
"""
result = UILanguage.from_string('en')
self.assertEqual(result, UILanguage.ENGLISH)
def test_from_string_returns_russian_for_ru(self):
"""
Проверяем, что from_string возвращает RUSSIAN для 'ru'
"""
result = UILanguage.from_string('ru')
self.assertEqual(result, UILanguage.RUSSIAN)
def test_from_string_handles_uppercase(self):
"""
Проверяем, что from_string корректно обрабатывает заглавные буквы
"""
result = UILanguage.from_string('EN')
self.assertEqual(result, UILanguage.ENGLISH)
result = UILanguage.from_string('RU')
self.assertEqual(result, UILanguage.RUSSIAN)
def test_from_string_handles_regional_variants(self):
"""
Проверяем, что from_string корректно обрабатывает региональные варианты и лишние суффиксы
"""
test_cases = [
('en-us', UILanguage.ENGLISH),
('en-US', UILanguage.ENGLISH),
('en-gb', UILanguage.ENGLISH),
('en-GB', UILanguage.ENGLISH),
('en-us-extra', UILanguage.ENGLISH), # лишний суффикс
('en-us-extra-stuff', UILanguage.ENGLISH), # несколько суффиксов
('ru-ru', UILanguage.RUSSIAN),
('ru-RU', UILanguage.RUSSIAN),
]
for value, expected in test_cases:
with self.subTest(value=value):
result = UILanguage.from_string(value)
self.assertEqual(result, expected)
def test_from_string_raises_value_error_for_unknown(self):
"""
Проверяем, что from_string выбрасывает ValueError для неизвестного языка
"""
with self.assertRaises(ValueError):
UILanguage.from_string('fr')
with self.assertRaises(ValueError):
UILanguage.from_string('de')
with self.assertRaises(ValueError):
UILanguage.from_string('es')
def test_from_string_raises_value_error_for_invalid_format(self):
"""
Проверяем, что from_string выбрасывает ValueError для некорректного формата
"""
with self.assertRaises(ValueError):
UILanguage.from_string('123')
with self.assertRaises(ValueError):
UILanguage.from_string('')
with self.assertRaises(ValueError):
UILanguage.from_string('fr-FR') # 'fr' не поддерживается