summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGary Wilson Jr <gary.wilson@gmail.com>2007-09-17 04:50:12 +0000
committerGary Wilson Jr <gary.wilson@gmail.com>2007-09-17 04:50:12 +0000
commit66203fc9ee7499bc331123678c7280873dd912f9 (patch)
treef405878af3192c0e1f701d9e4d4fadb94ad96261 /tests
parent771481695f0e53556824bdd64662efea87d55f32 (diff)
Fixed #2675 -- Changed the `timeuntil` and `timesince` template filters to display "0 minutes" when passed a past or future date respectively instead of "-1 years, 12 months". Thanks to nickefford for the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@6366 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/templates/tests.py8
-rw-r--r--tests/regressiontests/utils/tests.py10
-rw-r--r--tests/regressiontests/utils/timesince.py77
3 files changed, 95 insertions, 0 deletions
diff --git a/tests/regressiontests/templates/tests.py b/tests/regressiontests/templates/tests.py
index 11dd092156..0c851d5f78 100644
--- a/tests/regressiontests/templates/tests.py
+++ b/tests/regressiontests/templates/tests.py
@@ -771,6 +771,10 @@ class Templates(unittest.TestCase):
# Check that timezone is respected
'timesince06' : ('{{ a|timesince:b }}', {'a':NOW_tz + timedelta(hours=8), 'b':NOW_tz}, '8 hours'),
+ # Check times in the future.
+ 'timesince07' : ('{{ a|timesince }}', {'a':datetime.now() + timedelta(minutes=1, seconds=10)}, '0 minutes'),
+ 'timesince08' : ('{{ a|timesince }}', {'a':datetime.now() + timedelta(days=1, minutes=1)}, '0 minutes'),
+
### TIMEUNTIL TAG ##################################################
# Default compare with datetime.now()
'timeuntil01' : ('{{ a|timeuntil }}', {'a':datetime.now() + timedelta(minutes=2, seconds = 10)}, '2 minutes'),
@@ -781,6 +785,10 @@ class Templates(unittest.TestCase):
'timeuntil04' : ('{{ a|timeuntil:b }}', {'a':NOW - timedelta(days=1), 'b':NOW - timedelta(days=2)}, '1 day'),
'timeuntil05' : ('{{ a|timeuntil:b }}', {'a':NOW - timedelta(days=2), 'b':NOW - timedelta(days=2, minutes=1)}, '1 minute'),
+ # Check times in the past.
+ 'timeuntil07' : ('{{ a|timeuntil }}', {'a':datetime.now() - timedelta(minutes=1, seconds=10)}, '0 minutes'),
+ 'timeuntil08' : ('{{ a|timeuntil }}', {'a':datetime.now() - timedelta(days=1, minutes=1)}, '0 minutes'),
+
### URL TAG ########################################################
# Successes
'url01' : ('{% url regressiontests.templates.views.client client.id %}', {'client': {'id': 1}}, '/url_tag/client/1/'),
diff --git a/tests/regressiontests/utils/tests.py b/tests/regressiontests/utils/tests.py
index 258aea697e..fe0b226adc 100644
--- a/tests/regressiontests/utils/tests.py
+++ b/tests/regressiontests/utils/tests.py
@@ -6,6 +6,8 @@ from unittest import TestCase
from django.utils import html
+from timesince import timesince_tests
+
class TestUtilsHtml(TestCase):
def check_output(self, function, value, output=None):
@@ -113,3 +115,11 @@ class TestUtilsHtml(TestCase):
)
for value, output in items:
self.check_output(f, value, output)
+
+__test__ = {
+ 'timesince_tests': timesince_tests,
+}
+
+if __name__ == "__main__":
+ import doctest
+ doctest.testmod()
diff --git a/tests/regressiontests/utils/timesince.py b/tests/regressiontests/utils/timesince.py
new file mode 100644
index 0000000000..30200be6e9
--- /dev/null
+++ b/tests/regressiontests/utils/timesince.py
@@ -0,0 +1,77 @@
+timesince_tests = """
+>>> from datetime import datetime, timedelta
+>>> from django.utils.timesince import timesince
+
+>>> t = datetime(2007, 8, 14, 13, 46, 0)
+
+>>> onemicrosecond = timedelta(microseconds=1)
+>>> onesecond = timedelta(seconds=1)
+>>> oneminute = timedelta(minutes=1)
+>>> onehour = timedelta(hours=1)
+>>> oneday = timedelta(days=1)
+>>> oneweek = timedelta(days=7)
+>>> onemonth = timedelta(days=30)
+>>> oneyear = timedelta(days=365)
+
+# equal datetimes.
+>>> timesince(t, t)
+u'0 minutes'
+
+# Microseconds and seconds are ignored.
+>>> timesince(t, t+onemicrosecond)
+u'0 minutes'
+>>> timesince(t, t+onesecond)
+u'0 minutes'
+
+# Test other units.
+>>> timesince(t, t+oneminute)
+u'1 minute'
+>>> timesince(t, t+onehour)
+u'1 hour'
+>>> timesince(t, t+oneday)
+u'1 day'
+>>> timesince(t, t+oneweek)
+u'1 week'
+>>> timesince(t, t+onemonth)
+u'1 month'
+>>> timesince(t, t+oneyear)
+u'1 year'
+
+# Test multiple units.
+>>> timesince(t, t+2*oneday+6*onehour)
+u'2 days, 6 hours'
+>>> timesince(t, t+2*oneweek+2*oneday)
+u'2 weeks, 2 days'
+
+# If the two differing units aren't adjacent, only the first unit is displayed.
+>>> timesince(t, t+2*oneweek+3*onehour+4*oneminute)
+u'2 weeks'
+>>> timesince(t, t+4*oneday+5*oneminute)
+u'4 days'
+
+# When the second date occurs before the first, we should always get 0 minutes.
+>>> timesince(t, t-onemicrosecond)
+u'0 minutes'
+>>> timesince(t, t-onesecond)
+u'0 minutes'
+>>> timesince(t, t-oneminute)
+u'0 minutes'
+>>> timesince(t, t-onehour)
+u'0 minutes'
+>>> timesince(t, t-oneday)
+u'0 minutes'
+>>> timesince(t, t-oneweek)
+u'0 minutes'
+>>> timesince(t, t-onemonth)
+u'0 minutes'
+>>> timesince(t, t-oneyear)
+u'0 minutes'
+>>> timesince(t, t-2*oneday-6*onehour)
+u'0 minutes'
+>>> timesince(t, t-2*oneweek-2*oneday)
+u'0 minutes'
+>>> timesince(t, t-2*oneweek-3*onehour-4*oneminute)
+u'0 minutes'
+>>> timesince(t, t-4*oneday-5*oneminute)
+u'0 minutes'
+"""