summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCollin Anderson <collin@onetencommunications.com>2014-09-05 16:55:24 -0700
committerTim Graham <timograham@gmail.com>2014-09-06 07:48:34 -0400
commitc9e0afe2d3fa51b1b76ff5cbd53f95cf19f984f1 (patch)
treeb366891a70e4041c42232b30664870fb47023c21
parent414e3fc59dcb429d9d96a91348f7c0eb661d70fa (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.py44
-rw-r--r--docs/ref/contrib/humanize.txt13
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``.