summaryrefslogtreecommitdiff
path: root/tests/test_datetime_utils.py
diff options
context:
space:
mode:
authorSergey Schetinin <sergey@maluke.com>2011-03-22 00:30:07 +0200
committerSergey Schetinin <sergey@maluke.com>2011-03-22 00:30:07 +0200
commitd57f2946a5b210a7fc6e7349fff27e5cc0a3584e (patch)
tree0c3b4952052b32d0c71f7bf381ae5887f50c6afc /tests/test_datetime_utils.py
parent1c4912af221e89ecf117154e2708f58984287ad8 (diff)
downloadwebob-d57f2946a5b210a7fc6e7349fff27e5cc0a3584e.tar.gz
This commit aggregates most of the work done at the 2011 PyCon Pyramid sprint in Atlanta GA. Only tests updates are in it, library code changes are committed separately.
The sprint was organised by Chris McDonough and provided WebOb with 100% statement coverage. Participated: Alexandre Conrad, Patricio Paez, Whit Morriss, Rob Miller, Reed O'Brien, Chris Shenton, Joe Dallago, Tres Seaver, Casey Duncan, Kai Groner, Chris McDonough. The bitbucket fork on which this work was done is at https://bitbucket.org/chrism/webob-py3k and contains a detailed changelog. A big thank you to everyone who contributed!
Diffstat (limited to 'tests/test_datetime_utils.py')
-rw-r--r--tests/test_datetime_utils.py61
1 files changed, 50 insertions, 11 deletions
diff --git a/tests/test_datetime_utils.py b/tests/test_datetime_utils.py
index 3b91808..bcaf541 100644
--- a/tests/test_datetime_utils.py
+++ b/tests/test_datetime_utils.py
@@ -1,11 +1,19 @@
-# -*- coding: UTF-8 -*-
+# -*- coding: utf-8 -*-
+import datetime
import calendar
-from datetime import *
from rfc822 import formatdate
from webob import datetime_utils
from nose.tools import ok_, eq_, assert_raises
+def test_UTC():
+ """Test missing function in _UTC"""
+ x = datetime_utils.UTC
+ ok_(x.tzname(datetime.datetime.now())=='UTC')
+ eq_(x.dst(datetime.datetime.now()), datetime.timedelta(0))
+ eq_(x.utcoffset(datetime.datetime.now()), datetime.timedelta(0))
+ eq_(repr(x), 'UTC')
+
def test_parse_date():
"""Testing datetime_utils.parse_date.
We need to verify the following scenarios:
@@ -30,9 +38,11 @@ def test_parse_date():
"to parse_date. We should get None but instead we got %s" %\
ret)
ret = datetime_utils.parse_date('Mon, 20 Nov 1995 19:12:08 -0500')
- eq_(ret, datetime(1995, 11, 21, 0, 12, 8, tzinfo=datetime_utils.UTC))
+ eq_(ret, datetime.datetime(
+ 1995, 11, 21, 0, 12, 8, tzinfo=datetime_utils.UTC))
ret = datetime_utils.parse_date('Mon, 20 Nov 1995 19:12:08')
- eq_(ret, datetime(1995, 11, 20, 19, 12, 8, tzinfo=datetime_utils.UTC))
+ eq_(ret,
+ datetime.datetime(1995, 11, 20, 19, 12, 8, tzinfo=datetime_utils.UTC))
def test_serialize_date():
"""Testing datetime_utils.serialize_date
@@ -44,8 +54,10 @@ def test_serialize_date():
ret = datetime_utils.serialize_date(u'Mon, 20 Nov 1995 19:12:08 GMT')
assert type(ret) is (str)
eq_(ret, 'Mon, 20 Nov 1995 19:12:08 GMT')
- dt = formatdate(calendar.timegm((datetime.now()+timedelta(1)).timetuple()))
- eq_(dt, datetime_utils.serialize_date(timedelta(1)))
+ dt = formatdate(
+ calendar.timegm(
+ (datetime.datetime.now()+datetime.timedelta(1)).timetuple()))
+ eq_(dt, datetime_utils.serialize_date(datetime.timedelta(1)))
assert_raises(ValueError, datetime_utils.serialize_date, None)
def test_parse_date_delta():
@@ -58,7 +70,18 @@ def test_parse_date_delta():
ok_(datetime_utils.parse_date_delta(None) is None, 'Passing none value, '
'should return None')
ret = datetime_utils.parse_date_delta('Mon, 20 Nov 1995 19:12:08 -0500')
- eq_(ret, datetime(1995, 11, 21, 0, 12, 8, tzinfo=datetime_utils.UTC))
+ eq_(ret, datetime.datetime(
+ 1995, 11, 21, 0, 12, 8, tzinfo=datetime_utils.UTC))
+ WHEN = datetime.datetime(2011, 3, 16, 10, 10, 37, tzinfo=datetime_utils.UTC)
+ #with _NowRestorer(WHEN): Dammit, only Python 2.5 w/ __future__
+ nr = _NowRestorer(WHEN)
+ nr.__enter__()
+ try:
+ ret = datetime_utils.parse_date_delta(1)
+ eq_(ret, WHEN + datetime.timedelta(0, 1))
+ finally:
+ nr.__exit__(None, None, None)
+
def test_serialize_date_delta():
"""Testing datetime_utils.serialize_date_delta
@@ -66,13 +89,29 @@ def test_serialize_date_delta():
* if we pass something that's not an int or float, it should delegate
the task to serialize_date
"""
+ eq_(datetime_utils.serialize_date_delta(1), '1')
+ eq_(datetime_utils.serialize_date_delta(1.5), '1')
ret = datetime_utils.serialize_date_delta(u'Mon, 20 Nov 1995 19:12:08 GMT')
assert type(ret) is (str)
eq_(ret, 'Mon, 20 Nov 1995 19:12:08 GMT')
-def test_UTC():
- """Test missing function in _UTC"""
- x = datetime_utils.UTC
- ok_(x.tzname(datetime.now())=='UTC')
+def test_timedelta_to_seconds():
+ val = datetime.timedelta(86400)
+ result = datetime_utils.timedelta_to_seconds(val)
+ eq_(result, 7464960000)
+
+
+class _NowRestorer(object):
+
+ def __init__(self, new_NOW):
+ self._new_NOW = new_NOW
+ self._old_NOW = None
+ def __enter__(self):
+ import webob.datetime_utils
+ self._old_NOW = webob.datetime_utils._NOW
+ webob.datetime_utils._NOW = self._new_NOW
+ def __exit__(self, exc_type, exc_value, traceback):
+ import webob.datetime_utils
+ webob.datetime_utils._NOW = self._old_NOW