mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-04 12:30:11 +03:00
Add failing TZ tests for DateTimeField
- tests "current" timezone activation - tests output for non-UTC timezones
This commit is contained in:
parent
c0a48622e1
commit
7804299b7d
|
@ -1,4 +1,5 @@
|
|||
# Optional packages which may be used with REST framework.
|
||||
pytz==2017.2
|
||||
markdown==2.6.4
|
||||
django-guardian==1.4.8
|
||||
django-filter==1.0.4
|
||||
|
|
|
@ -10,12 +10,17 @@ import pytest
|
|||
from django.http import QueryDict
|
||||
from django.test import TestCase, override_settings
|
||||
from django.utils import six
|
||||
from django.utils.timezone import utc
|
||||
from django.utils.timezone import activate, deactivate, utc
|
||||
|
||||
import rest_framework
|
||||
from rest_framework import compat, serializers
|
||||
from rest_framework.fields import is_simple_callable
|
||||
|
||||
try:
|
||||
import pytz
|
||||
except ImportError:
|
||||
pytz = None
|
||||
|
||||
try:
|
||||
import typings
|
||||
except ImportError:
|
||||
|
@ -1234,6 +1239,52 @@ class TestNaiveDateTimeField(FieldValues):
|
|||
field = serializers.DateTimeField(default_timezone=None)
|
||||
|
||||
|
||||
@pytest.mark.skipif(pytz is None, reason='pytz not installed')
|
||||
class TestTZWithDateTimeField(FieldValues):
|
||||
"""
|
||||
Valid and invalid values for `DateTimeField` when not using UTC as the timezone.
|
||||
"""
|
||||
@classmethod
|
||||
def setup_class(cls):
|
||||
# use class setup method, as class-level attribute will still be evaluated even if test is skipped
|
||||
kolkata = pytz.timezone('Asia/Kolkata')
|
||||
|
||||
cls.valid_inputs = {
|
||||
'2016-12-19T10:00:00': kolkata.localize(datetime.datetime(2016, 12, 19, 10)),
|
||||
'2016-12-19T10:00:00+05:30': kolkata.localize(datetime.datetime(2016, 12, 19, 10)),
|
||||
datetime.datetime(2016, 12, 19, 10): kolkata.localize(datetime.datetime(2016, 12, 19, 10)),
|
||||
}
|
||||
cls.invalid_inputs = {}
|
||||
cls.outputs = {
|
||||
datetime.datetime(2016, 12, 19, 10): '2016-12-19T10:00:00+05:30',
|
||||
datetime.datetime(2016, 12, 19, 4, 30, tzinfo=utc): '2016-12-19T10:00:00+05:30',
|
||||
}
|
||||
cls.field = serializers.DateTimeField(default_timezone=kolkata)
|
||||
|
||||
|
||||
@pytest.mark.skipif(pytz is None, reason='pytz not installed')
|
||||
@override_settings(TIME_ZONE='UTC', USE_TZ=True)
|
||||
class TestDefaultTZDateTimeField(TestCase):
|
||||
"""
|
||||
Test the current/default timezone handling in `DateTimeField`.
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def setup_class(cls):
|
||||
cls.field = serializers.DateTimeField()
|
||||
cls.kolkata = pytz.timezone('Asia/Kolkata')
|
||||
|
||||
def test_default_timezone(self):
|
||||
assert self.field.default_timezone() == utc
|
||||
|
||||
def test_current_timezone(self):
|
||||
assert self.field.default_timezone() == utc
|
||||
activate(self.kolkata)
|
||||
assert self.field.default_timezone() == self.kolkata
|
||||
deactivate()
|
||||
assert self.field.default_timezone() == utc
|
||||
|
||||
|
||||
class TestNaiveDayLightSavingTimeTimeZoneDateTimeField(FieldValues):
|
||||
"""
|
||||
Invalid values for `DateTimeField` with datetime in DST shift (non-existing or ambiguous) and timezone with DST.
|
||||
|
|
Loading…
Reference in New Issue
Block a user