48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
from __future__ import absolute_import
|
|
import datetime
|
|
import unittest
|
|
|
|
import koji.util
|
|
from koji.xmlrpcplus import DateTime
|
|
|
|
|
|
class testEncodeDatetime(unittest.TestCase):
|
|
|
|
DATES = [
|
|
[datetime.datetime(2001, 2, 3, 9, 45, 32),
|
|
'2001-02-03 09:45:32'],
|
|
[datetime.datetime(1970, 1, 1, 0, 0),
|
|
'1970-01-01 00:00:00'],
|
|
[datetime.datetime(2017, 8, 3, 10, 19, 39, 474556),
|
|
'2017-08-03 10:19:39.474556'],
|
|
]
|
|
|
|
def test_simple_dates(self):
|
|
for dt, dstr in self.DATES:
|
|
chk1 = koji.util.encode_datetime(dt)
|
|
chk2 = koji.util.encode_datetime_recurse(dt)
|
|
self.assertEqual(chk1, dstr)
|
|
self.assertEqual(chk2, dstr)
|
|
|
|
def test_xmlrpc_dates(self):
|
|
# we skip the last because xmlrpc's DateTime class does not preserve
|
|
# fractions of seconds
|
|
for dt, dstr in self.DATES[:2]:
|
|
dt = DateTime(dt)
|
|
chk1 = koji.util.encode_datetime(dt)
|
|
chk2 = koji.util.encode_datetime_recurse(dt)
|
|
self.assertEqual(chk1, dstr)
|
|
self.assertEqual(chk2, dstr)
|
|
|
|
def test_embedded_dates(self):
|
|
dt1, ds1 = self.DATES[0]
|
|
dt2, ds2 = self.DATES[1]
|
|
dt3, ds3 = self.DATES[2]
|
|
data1 = [1, "2", [3, dt1], {"4": dt2}, [[[[{"five": dt3}]]]]]
|
|
fix_1 = [1, "2", [3, ds1], {"4": ds2}, [[[[{"five": ds3}]]]]]
|
|
data2 = {1: dt1, "2": [dt2, dt1], "three": {"3": {3: dt3}}}
|
|
fix_2 = {1: ds1, "2": [ds2, ds1], "three": {"3": {3: ds3}}}
|
|
chk1 = koji.util.encode_datetime_recurse(data1)
|
|
chk2 = koji.util.encode_datetime_recurse(data2)
|
|
self.assertEqual(chk1, fix_1)
|
|
self.assertEqual(chk2, fix_2)
|