Skip to content

Commit 97fc235

Browse files
committed
Ensure timedelta_to_relative_validity returns an int
The timedelta_to_relative_validity function would return a float that we later expected to convert as if it were an int. Force it to be an int and improve the tests a little.
1 parent 5523df9 commit 97fc235

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

messaging/test/test_sms.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# -*- coding: utf-8 -*-
22
from datetime import datetime, timedelta
3-
import unittest
3+
4+
try:
5+
import unittest2 as unittest
6+
except ImportError:
7+
import unittest
48

59
from messaging.sms import SmsSubmit, SmsDeliver
610
from messaging.utils import (timedelta_to_relative_validity as to_relative,
@@ -11,6 +15,14 @@
1115
class TestEncodingFunctions(unittest.TestCase):
1216

1317
def test_converting_timedelta_to_validity(self):
18+
self.assertRaises(ValueError, to_relative, timedelta(minutes=4))
19+
self.assertRaises(ValueError, to_relative, timedelta(weeks=64))
20+
21+
self.assertIsInstance(to_relative(timedelta(hours=6)), int)
22+
self.assertIsInstance(to_relative(timedelta(hours=18)), int)
23+
self.assertIsInstance(to_relative(timedelta(days=15)), int)
24+
self.assertIsInstance(to_relative(timedelta(weeks=31)), int)
25+
1426
self.assertEqual(to_relative(timedelta(minutes=5)), 0)
1527
self.assertEqual(to_relative(timedelta(minutes=6)), 0)
1628
self.assertEqual(to_relative(timedelta(minutes=10)), 1)

messaging/utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -237,17 +237,17 @@ def timedelta_to_relative_validity(t):
237237
raise ValueError("Max validity is 63 weeks")
238238

239239
if t <= timedelta(hours=12):
240-
return floor(t.seconds / (60 * 5)) - 1
240+
return int(floor(t.seconds / (60 * 5))) - 1
241241

242242
if t <= timedelta(hours=24):
243243
t -= timedelta(hours=12)
244-
return floor(t.seconds / (60 * 30)) + 143
244+
return int(floor(t.seconds / (60 * 30))) + 143
245245

246246
if t <= timedelta(days=30):
247247
return t.days + 166
248248

249249
if t <= timedelta(weeks=63):
250-
return floor(t.days / 7) + 192
250+
return int(floor(t.days / 7)) + 192
251251

252252

253253
def datetime_to_absolute_validity(d, tzname='Unknown'):

0 commit comments

Comments
 (0)