diff options
| author | Collin Anderson <collin@onetencommunications.com> | 2014-09-05 16:55:24 -0700 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-09-06 07:47:56 -0400 |
| commit | 7353e26d5d41563ca51520fb38b5950530cb6b9c (patch) | |
| tree | bd0fbdf2de2861bd6f5b7aff4ff476bee5df6070 /django | |
| parent | 88c4e01d343f6b9165b086adbfe6664885229b00 (diff) | |
Fixed #23340 -- Corrected naturaltime docs to match behavior.
Thanks zachborboa for the report and blackguest for the patch.
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/humanize/tests.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/django/contrib/humanize/tests.py b/django/contrib/humanize/tests.py index 622a704503..6ae5926bfe 100644 --- a/django/contrib/humanize/tests.py +++ b/django/contrib/humanize/tests.py @@ -239,3 +239,47 @@ class HumanizeTests(TestCase): test_list, result_list_with_tz_support, 'naturaltime') finally: humanize.datetime = orig_humanize_datetime + + def test_naturaltime_as_documented(self): + """ + #23340 -- Verify the documented behavior of humanize.naturaltime. + """ + time_format = '%d %b %Y %H:%M:%S' + documented_now = datetime.datetime.strptime('17 Feb 2007 16:30:00', time_format) + + test_data = ( + ('17 Feb 2007 16:30:00', 'now'), + ('17 Feb 2007 16:29:31', '29 seconds ago'), + ('17 Feb 2007 16:29:00', 'a minute ago'), + ('17 Feb 2007 16:25:35', '4 minutes ago'), + ('17 Feb 2007 15:30:29', '59 minutes ago'), + ('17 Feb 2007 15:30:01', '59 minutes ago'), + ('17 Feb 2007 15:30:00', 'an hour ago'), + ('17 Feb 2007 13:31:29', '2 hours ago'), + ('16 Feb 2007 13:31:29', '1 day, 2 hours ago'), + ('16 Feb 2007 13:30:01', '1 day, 2 hours ago'), + ('16 Feb 2007 13:30:00', '1 day, 3 hours ago'), + ('17 Feb 2007 16:30:30', '30 seconds from now'), + ('17 Feb 2007 16:30:29', '29 seconds from now'), + ('17 Feb 2007 16:31:00', 'a minute from now'), + ('17 Feb 2007 16:34:35', '4 minutes from now'), + ('17 Feb 2007 17:30:29', 'an hour from now'), + ('17 Feb 2007 18:31:29', '2 hours from now'), + ('18 Feb 2007 16:31:29', '1 day from now'), + ('26 Feb 2007 18:31:29', '1 week, 2 days from now'), + ) + + class DocumentedMockDateTime(datetime.datetime): + """Override Class for humanize.datetime """ + @classmethod + def now(cls, tz=None): + if tz is None or tz.utcoffset(documented_now) is None: + return documented_now + else: + return documented_now.replace(tzinfo=tz) + tz.utcoffset(now) + + humanize.datetime = DocumentedMockDateTime + for test_time_string, expected_natural_time in test_data: + test_time = datetime.datetime.strptime(test_time_string, time_format) + natural_time = humanize.naturaltime(test_time).replace('\xa0', ' ') + self.assertEqual(expected_natural_time, natural_time) |
