Подготовка к замене AuthRejectReason
This commit is contained in:
@@ -11,4 +11,4 @@
|
||||
from .configuration_manager_tests import ConfigurationManagerTests
|
||||
from .crypto_manager_tests import CryptoManagerTests
|
||||
from .locale_manager_tests import LocaleManagerTests
|
||||
# from .sesson_manager_tests import SessionManagerTests
|
||||
from .sesson_manager_tests import SessionManagerTests
|
||||
|
||||
99
net/xeaf/rack/tests/utils/date_utils_tests.py
Normal file
99
net/xeaf/rack/tests/utils/date_utils_tests.py
Normal file
@@ -0,0 +1,99 @@
|
||||
# DRF Rack
|
||||
# Библиотека классов расширений для Django REST Framework
|
||||
#
|
||||
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
|
||||
# Все права защищены. Лицензия: MIT
|
||||
|
||||
"""
|
||||
Описание класса DateUtilsTest
|
||||
"""
|
||||
|
||||
import datetime
|
||||
from unittest.mock import patch
|
||||
|
||||
from django.test import SimpleTestCase
|
||||
from django.utils import timezone
|
||||
|
||||
from net.xeaf.rack.utils import DateUtils
|
||||
|
||||
|
||||
class DateUtilsTestCase(SimpleTestCase):
|
||||
"""
|
||||
Классы для DateUtils.
|
||||
"""
|
||||
|
||||
def test_now_returns_frozen_current_time(self) -> None:
|
||||
"""
|
||||
Должен вернуть точно зафиксированное текущее время через mock.patch
|
||||
"""
|
||||
|
||||
fixed_time = datetime.datetime(2026, 7, 14, 12, 0, 0, tzinfo=timezone.get_current_timezone())
|
||||
|
||||
with patch("django.utils.timezone.now", return_value=fixed_time):
|
||||
result = DateUtils.now()
|
||||
self.assertEqual(result, fixed_time)
|
||||
|
||||
def test_now_returns_timezone_aware_datetime(self) -> None:
|
||||
"""
|
||||
Должен возвращать объект datetime с информацией о часовом поясе (is_aware)
|
||||
"""
|
||||
|
||||
result = DateUtils.now()
|
||||
self.assertTrue(timezone.is_aware(result))
|
||||
|
||||
def test_shift_time_uses_now_if_date_time_is_none(self) -> None:
|
||||
"""
|
||||
Должен автоматически взять текущее время (now), если date_time передан как None
|
||||
"""
|
||||
|
||||
fixed_now = datetime.datetime(2026, 7, 14, 12, 0, 0, tzinfo=datetime.timezone.utc)
|
||||
expected_time = datetime.datetime(2026, 7, 17, 12, 0, 0, tzinfo=datetime.timezone.utc)
|
||||
|
||||
with patch("django.utils.timezone.now", return_value=fixed_now):
|
||||
result = DateUtils.shift_time(date_time=None, days=3)
|
||||
self.assertEqual(result, expected_time)
|
||||
|
||||
def test_shift_time_uses_now_by_omission(self) -> None:
|
||||
"""
|
||||
Должен автоматически взять текущее время (now), если параметр date_time вообще опущен
|
||||
"""
|
||||
|
||||
fixed_now = datetime.datetime(2026, 7, 14, 12, 0, 0, tzinfo=datetime.timezone.utc)
|
||||
expected_time = datetime.datetime(2026, 7, 14, 14, 0, 0, tzinfo=datetime.timezone.utc)
|
||||
|
||||
with patch("django.utils.timezone.now", return_value=fixed_now):
|
||||
result = DateUtils.shift_time(hours=2)
|
||||
self.assertEqual(result, expected_time)
|
||||
|
||||
def test_shift_time_adds_days_correctly_with_explicit_date(self) -> None:
|
||||
"""
|
||||
Должен корректно сдвигать время вперед, если передан явный объект datetime
|
||||
"""
|
||||
|
||||
base_time = datetime.datetime(2026, 7, 14, 12, 0, 0, tzinfo=datetime.timezone.utc)
|
||||
expected_time = datetime.datetime(2026, 7, 19, 12, 0, 0, tzinfo=datetime.timezone.utc)
|
||||
|
||||
result = DateUtils.shift_time(base_time, days=5)
|
||||
self.assertEqual(result, expected_time)
|
||||
|
||||
def test_shift_time_subtracts_hours_correctly(self) -> None:
|
||||
"""
|
||||
Должен корректно сдвигать время назад при передаче отрицательных значений
|
||||
"""
|
||||
|
||||
base_time = datetime.datetime(2026, 7, 14, 12, 0, 0, tzinfo=datetime.timezone.utc)
|
||||
expected_time = datetime.datetime(2026, 7, 14, 9, 0, 0, tzinfo=datetime.timezone.utc)
|
||||
|
||||
result = DateUtils.shift_time(base_time, hours=-3)
|
||||
self.assertEqual(result, expected_time)
|
||||
|
||||
def test_shift_time_complex_modification(self) -> None:
|
||||
"""
|
||||
Должен атомарно применять комбинированный сдвиг по всем осям времени
|
||||
"""
|
||||
|
||||
base_time = datetime.datetime(2026, 7, 14, 12, 0, 0, tzinfo=datetime.timezone.utc)
|
||||
expected_time = datetime.datetime(2026, 7, 15, 14, 30, 15, tzinfo=datetime.timezone.utc)
|
||||
|
||||
result = DateUtils.shift_time(base_time, days=1, hours=2, minutes=30, seconds=15)
|
||||
self.assertEqual(result, expected_time)
|
||||
Reference in New Issue
Block a user