Skip to content

Commit c515b32

Browse files
committed
issue_28 tests added to catch invalid object types for helpers
1 parent 049ca5e commit c515b32

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

tests.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import arrow
77
from datetime import datetime as pydatetime
88
from datetime import timedelta
9+
from datetime import timezone as pydttz
910
from datemath import dm, datemath
1011
from datemath.helpers import DateMathException as DateMathException
1112
from dateutil import tz
@@ -15,6 +16,9 @@ class TestDM(unittest.TestCase):
1516

1617

1718
def testParse(self):
19+
# Make sure our helpers return the correct objects
20+
self.assertIsInstance(datemath('now'), pydatetime)
21+
self.assertIsInstance(dm('now'), arrow.arrow.Arrow)
1822

1923
# Baisc dates
2024
self.assertEqual(dm('2016.01.02').format(iso8601), '2016-01-02T00:00:00+00:00')
@@ -42,13 +46,16 @@ def testParse(self):
4246
self.assertEqual(dm('2016-01-01', tz='US/Eastern'), pydatetime(2016, 1, 1, tzinfo=tz.gettz('US/Eastern')))
4347
self.assertEqual(datemath('2016-01-01T01:00:00', tz='US/Central'), pydatetime(2016, 1, 1, 1, 0, 0, tzinfo=tz.gettz('US/Central')))
4448
self.assertEqual(datemath('2016-01-01T02:00:00', tz='US/Eastern'), pydatetime(2016, 1, 1, 2, tzinfo=tz.gettz('US/Eastern')))
49+
4550
# TZ offset inside of date string
4651
self.assertEqual(datemath('2016-01-01T16:20:00.5+12:00'), pydatetime(2016, 1, 1, 16, 20, 0, 500000, tzinfo=tz.tzoffset(None, timedelta(hours=12))))
4752
self.assertEqual(datemath('2016-01-01T16:20:00.5-05:00'), pydatetime(2016, 1, 1, 16, 20, 0, 500000, tzinfo=tz.tzoffset(None, timedelta(hours=-5))))
4853
self.assertEqual(datemath('2016-01-01T16:20:00.5-00:00'), pydatetime(2016, 1, 1, 16, 20, 0, 500000, tzinfo=tz.tzoffset(None, timedelta(hours=0))))
54+
4955
# TZ offset inside of date string with datemath
5056
self.assertEqual(datemath('2016-01-01T16:20:00.5+12:00||+1d'), pydatetime(2016, 1, 2, 16, 20, 0, 500000, tzinfo=tz.tzoffset(None, timedelta(hours=12))))
5157
self.assertEqual(datemath('2016-01-01T16:20:00.6+12:00||+2d+1h'), pydatetime(2016, 1, 3, 17, 20, 0, 600000, tzinfo=tz.tzoffset(None, timedelta(hours=12))))
58+
5259
# If a TZ offset is in a datetime string, and there is a tz param used, the TZ offset will take precedence for the returned timeobj
5360
self.assertEqual(datemath('2016-01-01T16:20:00.6+12:00||+2d+1h', tz='US/Eastern'), pydatetime(2016, 1, 3, 17, 20, 0, 600000, tzinfo=tz.tzoffset(None, timedelta(hours=12))))
5461

@@ -62,6 +69,7 @@ def testParse(self):
6269
self.assertEqual(dm('+1M').format(iso8601), arrow.utcnow().shift(months=+1).format(iso8601))
6370
self.assertEqual(dm('+1Y').format(iso8601), arrow.utcnow().shift(years=+1).format(iso8601))
6471
self.assertEqual(dm('+1y').format(iso8601), arrow.utcnow().shift(years=+1).format(iso8601))
72+
6573
# subtraction
6674
self.assertEqual(dm('-1s').format(iso8601), arrow.utcnow().shift(seconds=-1).format(iso8601))
6775
self.assertEqual(dm('-1m').format(iso8601), arrow.utcnow().shift(minutes=-1).format(iso8601))
@@ -71,6 +79,7 @@ def testParse(self):
7179
self.assertEqual(dm('-1M').format(iso8601), arrow.utcnow().shift(months=-1).format(iso8601))
7280
self.assertEqual(dm('-1Y').format(iso8601), arrow.utcnow().shift(years=-1).format(iso8601))
7381
self.assertEqual(dm('-1y').format(iso8601), arrow.utcnow().shift(years=-1).format(iso8601))
82+
7483
# rounding
7584
self.assertEqual(dm('/s').format(iso8601), arrow.utcnow().floor('second').format(iso8601))
7685
self.assertEqual(dm('/m').format(iso8601), arrow.utcnow().floor('minute').format(iso8601))
@@ -80,6 +89,7 @@ def testParse(self):
8089
self.assertEqual(dm('/M').format(iso8601), arrow.utcnow().floor('month').format(iso8601))
8190
self.assertEqual(dm('/Y').format(iso8601), arrow.utcnow().floor('year').format(iso8601))
8291
self.assertEqual(dm('/y').format(iso8601), arrow.utcnow().floor('year').format(iso8601))
92+
8393
# rounding up
8494
self.assertEqual(dm('/s', roundDown=False).format(iso8601), arrow.utcnow().ceil('second').format(iso8601))
8595
self.assertEqual(dm('/m', roundDown=False).format(iso8601), arrow.utcnow().ceil('minute').format(iso8601))
@@ -89,8 +99,7 @@ def testParse(self):
8999
self.assertEqual(dm('/M', roundDown=False).format(iso8601), arrow.utcnow().ceil('month').format(iso8601))
90100
self.assertEqual(dm('/Y', roundDown=False).format(iso8601), arrow.utcnow().ceil('year').format(iso8601))
91101
self.assertEqual(dm('/y', roundDown=False).format(iso8601), arrow.utcnow().ceil('year').format(iso8601))
92-
93-
102+
94103
# roundDown option tests
95104
self.assertEqual(dm('2016-01-01T14:00:00||/d').format(iso8601), '2016-01-01T00:00:00+00:00')
96105
self.assertEqual(dm('2016-01-01T14:00:00||/d', roundDown=False).format(iso8601), '2016-01-01T23:59:59+00:00')
@@ -143,6 +152,7 @@ def testParse(self):
143152
self.assertEqual(dm(1367900664).format(iso8601), '2013-05-07T04:24:24+00:00')
144153

145154
self.assertRaises(DateMathException, dm, '1451610061000')
155+
146156
try:
147157
dm(1451610061000)
148158
except DateMathException as e:

0 commit comments

Comments
 (0)