Merge pull request #1298 from BuhtigithuB/new/prettydate-test-suite
New test suite for prettydate() + fix wrong number of days for month
This commit is contained in:
@@ -7,6 +7,7 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import smtplib
|
import smtplib
|
||||||
|
import datetime
|
||||||
if sys.version < "2.7":
|
if sys.version < "2.7":
|
||||||
import unittest2 as unittest
|
import unittest2 as unittest
|
||||||
else:
|
else:
|
||||||
@@ -20,7 +21,7 @@ DEFAULT_URI = os.getenv('DB', 'sqlite:memory')
|
|||||||
|
|
||||||
from gluon.dal import DAL, Field
|
from gluon.dal import DAL, Field
|
||||||
from pydal.objects import Table
|
from pydal.objects import Table
|
||||||
from tools import Auth, Mail, Recaptcha, Recaptcha2
|
from tools import Auth, Mail, Recaptcha, Recaptcha2, prettydate
|
||||||
from gluon.globals import Request, Response, Session
|
from gluon.globals import Request, Response, Session
|
||||||
from storage import Storage
|
from storage import Storage
|
||||||
from languages import translator
|
from languages import translator
|
||||||
@@ -704,8 +705,88 @@ class TestAuth(unittest.TestCase):
|
|||||||
# TODO: class TestConfig(unittest.TestCase):
|
# TODO: class TestConfig(unittest.TestCase):
|
||||||
|
|
||||||
|
|
||||||
# TODO: class TestToolsFunctions(unittest.TestCase):
|
class TestToolsFunctions(unittest.TestCase):
|
||||||
# For all the tools.py functions
|
"""
|
||||||
|
Test suite for all the tools.py functions
|
||||||
|
"""
|
||||||
|
def test_prettydate(self):
|
||||||
|
# plain
|
||||||
|
now = datetime.datetime.now()
|
||||||
|
self.assertEqual(prettydate(d=now), 'now')
|
||||||
|
one_second = now - datetime.timedelta(seconds=1)
|
||||||
|
self.assertEqual(prettydate(d=one_second), '1 second ago')
|
||||||
|
more_than_one_second = now - datetime.timedelta(seconds=2)
|
||||||
|
self.assertEqual(prettydate(d=more_than_one_second), '2 seconds ago')
|
||||||
|
one_minute = now - datetime.timedelta(seconds=60)
|
||||||
|
self.assertEqual(prettydate(d=one_minute), '1 minute ago')
|
||||||
|
more_than_one_minute = now - datetime.timedelta(seconds=61)
|
||||||
|
self.assertEqual(prettydate(d=more_than_one_minute), '1 minute ago')
|
||||||
|
two_minutes = now - datetime.timedelta(seconds=120)
|
||||||
|
self.assertEqual(prettydate(d=two_minutes), '2 minutes ago')
|
||||||
|
more_than_two_minutes = now - datetime.timedelta(seconds=121)
|
||||||
|
self.assertEqual(prettydate(d=more_than_two_minutes), '2 minutes ago')
|
||||||
|
one_hour = now - datetime.timedelta(seconds=60 * 60)
|
||||||
|
self.assertEqual(prettydate(d=one_hour), '1 hour ago')
|
||||||
|
more_than_one_hour = now - datetime.timedelta(seconds=3601)
|
||||||
|
self.assertEqual(prettydate(d=more_than_one_hour), '1 hour ago')
|
||||||
|
two_hours = now - datetime.timedelta(seconds=2 * 60 * 60)
|
||||||
|
self.assertEqual(prettydate(d=two_hours), '2 hours ago')
|
||||||
|
more_than_two_hours = now - datetime.timedelta(seconds=2 * 60 * 60 + 1)
|
||||||
|
self.assertEqual(prettydate(d=more_than_two_hours), '2 hours ago')
|
||||||
|
one_day = now - datetime.timedelta(days=1)
|
||||||
|
self.assertEqual(prettydate(d=one_day), '1 day ago')
|
||||||
|
more_than_one_day = now - datetime.timedelta(days=2)
|
||||||
|
self.assertEqual(prettydate(d=more_than_one_day), '2 days ago')
|
||||||
|
one_week = now - datetime.timedelta(days=7)
|
||||||
|
self.assertEqual(prettydate(d=one_week), '1 week ago')
|
||||||
|
more_than_one_week = now - datetime.timedelta(days=8)
|
||||||
|
self.assertEqual(prettydate(d=more_than_one_week), '1 week ago')
|
||||||
|
two_weeks = now - datetime.timedelta(days=14)
|
||||||
|
self.assertEqual(prettydate(d=two_weeks), '2 weeks ago')
|
||||||
|
more_than_two_weeks = now - datetime.timedelta(days=15)
|
||||||
|
self.assertEqual(prettydate(d=more_than_two_weeks), '2 weeks ago')
|
||||||
|
three_weeks = now - datetime.timedelta(days=21)
|
||||||
|
self.assertEqual(prettydate(d=three_weeks), '3 weeks ago')
|
||||||
|
one_month = now - datetime.timedelta(days=27)
|
||||||
|
self.assertEqual(prettydate(d=one_month), '1 month ago')
|
||||||
|
more_than_one_month = now - datetime.timedelta(days=28)
|
||||||
|
self.assertEqual(prettydate(d=more_than_one_month), '1 month ago')
|
||||||
|
two_months = now - datetime.timedelta(days=60)
|
||||||
|
self.assertEqual(prettydate(d=two_months), '2 months ago')
|
||||||
|
three_months = now - datetime.timedelta(days=90)
|
||||||
|
self.assertEqual(prettydate(d=three_months), '3 months ago')
|
||||||
|
one_year = now - datetime.timedelta(days=365)
|
||||||
|
self.assertEqual(prettydate(d=one_year), '1 year ago')
|
||||||
|
more_than_one_year = now - datetime.timedelta(days=366)
|
||||||
|
self.assertEqual(prettydate(d=more_than_one_year), '1 year ago')
|
||||||
|
two_years = now - datetime.timedelta(days=2 * 365)
|
||||||
|
self.assertEqual(prettydate(d=two_years), '2 years ago')
|
||||||
|
more_than_two_years = now - datetime.timedelta(days=2 * 365 + 1)
|
||||||
|
self.assertEqual(prettydate(d=more_than_two_years), '2 years ago')
|
||||||
|
# date()
|
||||||
|
d = now.date()
|
||||||
|
self.assertEqual(prettydate(d=d), 'now')
|
||||||
|
one_day = now.date() - datetime.timedelta(days=1)
|
||||||
|
self.assertEqual(prettydate(d=one_day), '1 day ago')
|
||||||
|
tow_days = now.date() - datetime.timedelta(days=2)
|
||||||
|
self.assertEqual(prettydate(d=tow_days), '2 days ago')
|
||||||
|
# from now
|
||||||
|
# from now is picky depending of the execution time, so we can't use sharp value like 1 second or 1 day
|
||||||
|
in_one_minute = now - datetime.timedelta(seconds=-65)
|
||||||
|
self.assertEqual(prettydate(d=in_one_minute), '1 minute from now')
|
||||||
|
in_twenty_three_hours = now - datetime.timedelta(hours=-23.5)
|
||||||
|
self.assertEqual(prettydate(d=in_twenty_three_hours), '23 hours from now')
|
||||||
|
in_one_year = now - datetime.timedelta(days=-366)
|
||||||
|
self.assertEqual(prettydate(d=in_one_year), '1 year from now')
|
||||||
|
# utc=True
|
||||||
|
now = datetime.datetime.utcnow()
|
||||||
|
self.assertEqual(prettydate(d=now, utc=True), 'now')
|
||||||
|
one_second = now - datetime.timedelta(seconds=1)
|
||||||
|
self.assertEqual(prettydate(d=one_second, utc=True), '1 second ago')
|
||||||
|
# not d or invalid date
|
||||||
|
self.assertEqual(prettydate(d=None), '')
|
||||||
|
self.assertEqual(prettydate(d='invalid_date'), '[invalid date]')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|||||||
+1
-1
@@ -6020,7 +6020,7 @@ def prettydate(d, T=lambda x: x, utc=False):
|
|||||||
return T('1 year' + suffix)
|
return T('1 year' + suffix)
|
||||||
elif dt.days >= 60:
|
elif dt.days >= 60:
|
||||||
return T('%d months' + suffix) % int(dt.days / 30)
|
return T('%d months' + suffix) % int(dt.days / 30)
|
||||||
elif dt.days > 21:
|
elif dt.days >= 27: # 4 weeks ugly
|
||||||
return T('1 month' + suffix)
|
return T('1 month' + suffix)
|
||||||
elif dt.days >= 14:
|
elif dt.days >= 14:
|
||||||
return T('%d weeks' + suffix) % int(dt.days / 7)
|
return T('%d weeks' + suffix) % int(dt.days / 7)
|
||||||
|
|||||||
Reference in New Issue
Block a user