Skip to content

Commit 9099be4

Browse files
committed
(Hopefully) fixed date-related issues in test_custom_encoders.py
1 parent b76c134 commit 9099be4

File tree

2 files changed

+31
-29
lines changed

2 files changed

+31
-29
lines changed

tests/requirements.txt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
pytest>=5.1.1
2-
pytest-cov>=2.8.1
3-
pytz>=2019.1
4-
coverage>=5.1
1+
pytest >= 5.1.1
2+
pytest-cov >= 2.8.1
3+
pytz >= 2019.1
4+
coverage>=5.1
5+
domdf_python_tools[dates] >= 0.1.22

tests/test_custom_encoders.py

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
# 3rd party
1111
import pytz
12+
from domdf_python_tools.dates import datetime_to_utc_timestamp
1213

1314
# this package
1415
import sdjson
@@ -70,16 +71,16 @@ def encode_fraction_str(obj):
7071
sdjson.encoders.unregister(Fraction)
7172

7273

73-
# def test_datetime_float():
74-
# # Create and register a custom encoder for datetime that turns it into a float
75-
# @sdjson.encoders.register(datetime)
76-
# def encode_datetime_float(obj):
77-
# return obj.astimezone(pytz.utc).timestamp()
78-
#
79-
# assert sdjson.dumps(datetime(1945, 5, 8, 19, 20)) == "-777883200.0"
80-
#
81-
# # Cleanup
82-
# sdjson.encoders.unregister(datetime)
74+
def test_datetime_float():
75+
# Create and register a custom encoder for datetime that turns it into a float
76+
@sdjson.encoders.register(datetime)
77+
def encode_datetime_float(obj):
78+
return datetime_to_utc_timestamp(obj)
79+
80+
assert sdjson.dumps(datetime(1945, 5, 8, 19, 20)) == "-777876000.0"
81+
82+
# Cleanup
83+
sdjson.encoders.unregister(datetime)
8384

8485

8586
def test_datetime_str():
@@ -105,20 +106,20 @@ def encode_datetime_tuple(obj):
105106
# Cleanup
106107
sdjson.encoders.unregister(datetime)
107108

108-
#
109-
# def test_timedelta_float():
110-
# # Create and register a custom encoder for timedelta that turns it into a float
111-
# @sdjson.encoders.register(timedelta)
112-
# def encode_timedelta_float(obj):
113-
# return obj.total_seconds()
114-
#
115-
# start_date = datetime(1945, 5, 8, 19, 20).astimezone(pytz.utc)
116-
# end_date = datetime(2020, 5, 8, 9, 0).astimezone(pytz.utc)
117-
# delta = end_date - start_date
118-
# assert sdjson.dumps(delta) == "2366808000.0"
119-
#
120-
# # Cleanup
121-
# sdjson.encoders.unregister(timedelta)
109+
110+
def test_timedelta_float():
111+
# Create and register a custom encoder for timedelta that turns it into a float
112+
@sdjson.encoders.register(timedelta)
113+
def encode_timedelta_float(obj):
114+
return obj.total_seconds()
115+
116+
start_date = datetime(1945, 5, 8, 19, 20).replace(tzinfo=pytz.utc)
117+
end_date = datetime(2020, 5, 8, 9, 0).replace(tzinfo=pytz.utc)
118+
delta = end_date - start_date
119+
assert sdjson.dumps(delta) == "2366804400.0"
120+
121+
# Cleanup
122+
sdjson.encoders.unregister(timedelta)
122123

123124

124125
# def test_date_float():
@@ -130,7 +131,7 @@ def encode_datetime_tuple(obj):
130131
# assert sdjson.dumps(date(1945, 5, 8)) == "-777952800.0"
131132
#
132133
# # Cleanup
133-
# sdjson.encoders.unregister(datetime)
134+
# sdjson.encoders.unregister(date)
134135

135136

136137
def test_date_str():

0 commit comments

Comments
 (0)