# DRF Rack # Библиотека классов расширений для Django REST Framework # # Автор: Николай В. Анохин # Все права защищены. Лицензия: MIT """ Описание класса UILanguageTests """ from django.test import TestCase from net.xeaf.rack.enums import UILanguage class UILanguageTests(TestCase): """ Тесты для перечисления UILanguage """ def test_has_expected_values(self): """ Проверяем, что в enum есть ожидаемые языки """ expected = {"en", "ru"} self.assertEqual(set(UILanguage.values()), expected) def test_values_format(self): """ Проверяем формат значений """ 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' не поддерживается