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:48:34 -0400 |
| commit | c9e0afe2d3fa51b1b76ff5cbd53f95cf19f984f1 (patch) | |
| tree | b366891a70e4041c42232b30664870fb47023c21 | |
| parent | 414e3fc59dcb429d9d96a91348f7c0eb661d70fa (diff) | |
[1.6.x] Fixed #23340 -- Corrected naturaltime docs to match behavior.
Thanks zachborboa for the report and blackguest for the patch.
Backport of 7353e26d5d from master
| -rw-r--r-- | django/contrib/humanize/tests.py | 44 | ||||
| -rw-r--r-- | docs/ref/contrib/humanize.txt | 13 |
2 files changed, 53 insertions, 4 deletions
diff --git a/django/contrib/humanize/tests.py b/django/contrib/humanize/tests.py index d35773e39c..8134752844 100644 --- a/django/contrib/humanize/tests.py +++ b/django/contrib/humanize/tests.py @@ -230,3 +230,47 @@ class HumanizeTests(TransRealMixin, 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) diff --git a/docs/ref/contrib/humanize.txt b/docs/ref/contrib/humanize.txt index aca6ed990d..8accfe326e 100644 --- a/docs/ref/contrib/humanize.txt +++ b/docs/ref/contrib/humanize.txt @@ -111,13 +111,18 @@ Examples (when 'now' is 17 Feb 2007 16:30:00): * ``17 Feb 2007 16:29:31`` becomes ``29 seconds ago``. * ``17 Feb 2007 16:29:00`` becomes ``a minute ago``. * ``17 Feb 2007 16:25:35`` becomes ``4 minutes ago``. -* ``17 Feb 2007 15:30:29`` becomes ``an hour ago``. +* ``17 Feb 2007 15:30:29`` becomes ``59 minutes ago``. +* ``17 Feb 2007 15:30:01`` becomes ``59 minutes ago``. +* ``17 Feb 2007 15:30:00`` becomes ``an hour ago``. * ``17 Feb 2007 13:31:29`` becomes ``2 hours ago``. -* ``16 Feb 2007 13:31:29`` becomes ``1 day, 3 hours ago``. -* ``17 Feb 2007 16:30:30`` becomes ``29 seconds from now``. +* ``16 Feb 2007 13:31:29`` becomes ``1 day, 2 hours ago``. +* ``16 Feb 2007 13:30:01`` becomes ``1 day, 2 hours ago``. +* ``16 Feb 2007 13:30:00`` becomes ``1 day, 3 hours ago``. +* ``17 Feb 2007 16:30:30`` becomes ``30 seconds from now``. +* ``17 Feb 2007 16:30:29`` becomes ``29 seconds from now``. * ``17 Feb 2007 16:31:00`` becomes ``a minute from now``. * ``17 Feb 2007 16:34:35`` becomes ``4 minutes from now``. -* ``17 Feb 2007 16:30:29`` becomes ``an hour from now``. +* ``17 Feb 2007 17:30:29`` becomes ``an hour from now``. * ``17 Feb 2007 18:31:29`` becomes ``2 hours from now``. * ``18 Feb 2007 16:31:29`` becomes ``1 day from now``. * ``26 Feb 2007 18:31:29`` becomes ``1 week, 2 days from now``. |
