Browse Source

Actually hand-spin and use a tzinfo subclass

This is for Python 2.x compatibility.

Suggested-by: David Lord <davidism@gmail.com>
pull/2374/head
Eugene M. Kim 8 years ago
parent
commit
63ccdada1b
  1. 25
      tests/test_helpers.py

25
tests/test_helpers.py

@ -34,6 +34,27 @@ def has_encoding(name):
return False
class FixedOffset(datetime.tzinfo):
"""Fixed offset in hours east from UTC.
This is a slight adaptation of the ``FixedOffset`` example found in
https://docs.python.org/2.7/library/datetime.html.
"""
def __init__(self, hours, name):
self.__offset = datetime.timedelta(hours=hours)
self.__name = name
def utcoffset(self, dt):
return self.__offset
def tzname(self, dt):
return self.__name
def dst(self, dt):
return datetime.timedelta()
class TestJSON(object):
def test_ignore_cached_json(self, app):
with app.test_request_context('/', method='POST', data='malformed',
@ -180,9 +201,9 @@ class TestJSON(object):
@pytest.mark.parametrize('tz', (('UTC', 0), ('PST', -8), ('KST', 9)))
def test_jsonify_aware_datetimes(self, tz):
"""Test if aware datetime.datetime objects are converted into GMT."""
tzinfo = datetime.timezone(datetime.timedelta(hours=tz[1]), name=tz[0])
tzinfo = FixedOffset(hours=tz[1], name=tz[0])
dt = datetime.datetime(2017, 1, 1, 12, 34, 56, tzinfo=tzinfo)
gmt = datetime.timezone(datetime.timedelta(), name='GMT')
gmt = FixedOffset(hours=0, name='GMT')
expected = dt.astimezone(gmt).strftime('"%a, %d %b %Y %H:%M:%S %Z"')
assert flask.json.JSONEncoder().encode(dt) == expected

Loading…
Cancel
Save