Добавлены тесты для Environment

This commit is contained in:
2026-07-23 16:49:31 +03:00
parent 7f25095014
commit abd999d245
8 changed files with 945 additions and 3 deletions

View File

@@ -0,0 +1,101 @@
# DRF Rack
# Библиотека классов расширений для Django REST Framework
#
# Автор: Николай В. Анохин <n.anokhin@xeaf.net>
# Все права защищены. Лицензия: MIT
"""
Описание класса DateUtilsNowTests
"""
import datetime
from unittest.mock import patch
from django.utils import timezone
from net.xeaf.rack.core.testing import CoreSimpleTestCase
from net.xeaf.rack.utils import DateUtils
class DateUtilsNowTests(CoreSimpleTestCase):
"""
Тестовый класс для DateUtils.now()
"""
def test_now_returns_current_datetime(self):
"""
Проверяет, что метод now() возвращает текущую дату и время.
Тестирует позитивный сценарий получения текущего времени.
"""
# Arrange
expected_now = datetime.datetime(2024, 1, 15, 12, 30, 45, tzinfo=datetime.timezone.utc)
# Act
with patch('django.utils.timezone.now', return_value=expected_now):
result = DateUtils.now()
# Assert
self.assertEqual(result, expected_now)
self.assertIsInstance(result, datetime.datetime)
def test_now_returns_aware_datetime(self):
"""
Проверяет, что now() возвращает aware datetime (с часовым поясом).
Тестирует, что возвращаемое время содержит информацию о часовом поясе.
"""
# Arrange & Act
result = DateUtils.now()
# Assert
self.assertIsNotNone(result.tzinfo)
self.assertTrue(timezone.is_aware(result))
def test_now_returns_correct_type(self):
"""
Проверяет, что now() возвращает объект типа datetime.datetime.
Тестирует корректность типа возвращаемого значения.
"""
# Arrange & Act
result = DateUtils.now()
# Assert
self.assertIsInstance(result, datetime.datetime)
def test_now_uses_django_timezone(self):
"""
Проверяет, что now() использует django.utils.timezone.now().
Тестирует, что метод вызывает правильную функцию из Django.
"""
# Arrange
expected_time = datetime.datetime(2024, 6, 1, 10, 0, 0, tzinfo=datetime.timezone.utc)
# Act
with patch('django.utils.timezone.now', return_value=expected_time) as mock_now:
result = DateUtils.now()
# Assert
mock_now.assert_called_once()
self.assertEqual(result, expected_time)
def test_now_returns_different_values_on_consecutive_calls(self):
"""
Проверяет, что при последовательных вызовах now() возвращаются разные значения.
Тестирует, что метод действительно возвращает актуальное время.
"""
# Arrange
time1 = datetime.datetime(2024, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc)
time2 = datetime.datetime(2024, 1, 1, 0, 0, 1, tzinfo=datetime.timezone.utc)
# Act
with patch('django.utils.timezone.now', side_effect=[time1, time2]):
result1 = DateUtils.now()
result2 = DateUtils.now()
# Assert
self.assertNotEqual(result1, result2)
self.assertLess(result1, result2)