Skip to content

Commit

Permalink
Merge pull request #20 from jgeewax/patch-1
Browse files Browse the repository at this point in the history
Allow freeze_time to take date and datetime objects
  • Loading branch information
spulec committed May 5, 2013
2 parents c1ab91a + c1c6b9b commit b90027c
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 1 deletion.
9 changes: 9 additions & 0 deletions freezegun/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,4 +175,13 @@ def wrapper(*args, **kwargs):


def freeze_time(time_to_freeze, tz_offset=0):
if isinstance(time_to_freeze, datetime.datetime):
time_to_freeze = time_to_freeze.strftime('%x %X')
elif isinstance(time_to_freeze, datetime.date):
time_to_freeze = time_to_freeze.strftime('%x')

if not isinstance(time_to_freeze, basestring):
raise TypeError(('freeze_time() expected a string '
'but got type %s.') % type(time_to_freeze))

return _freeze_time(time_to_freeze, tz_offset)
28 changes: 27 additions & 1 deletion tests/test_datetimes.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,32 @@ def test_bad_time_argument():
assert False, "Bad values should raise a ValueError"


def test_date_object():
frozen_date = datetime.date(year=2012, month=11, day=10)
date_freezer = freeze_time(frozen_date)
regular_freezer = freeze_time('2012-11-10')
assert date_freezer.time_to_freeze == regular_freezer.time_to_freeze


def test_invalid_type():
try:
freeze_time(int(4))
except TypeError:
pass
else:
assert False, "Bad types should raise a TypeError"


def test_datetime_object():
frozen_datetime = datetime.datetime(year=2012, month=11, day=10,
hour=4, minute=15, second=30)
datetime_freezer = freeze_time(frozen_datetime)
regular_freezer = freeze_time('2012-11-10 04:15:30')
print datetime_freezer.time_to_freeze
print regular_freezer.time_to_freeze
assert datetime_freezer.time_to_freeze == regular_freezer.time_to_freeze


@freeze_time("2012-01-14")
def test_decorator():
assert datetime.datetime.now() == datetime.datetime(2012, 1, 14)
Expand Down Expand Up @@ -90,4 +116,4 @@ def test_isinstance_without_active():
@freeze_time('2013-04-09')
class TestUnitTestClassDecorator(unittest.TestCase):
def test_class_decorator_works_on_unittest(self):
self.assertEqual(datetime.date(2013,4,9), datetime.date.today())
self.assertEqual(datetime.date(2013,4,9), datetime.date.today())

0 comments on commit b90027c

Please sign in to comment.