Also support future dates and times in pretty_date

This commit is contained in:
2016-11-08 12:24:50 +01:00
parent 920a1de263
commit fb6e326a14
2 changed files with 113 additions and 15 deletions

View File

@@ -1,7 +1,11 @@
# -*- encoding: utf-8 -*-
import unittest
from __future__ import absolute_import
import unittest
import datetime
from bson import tz_util
from pillar.web import utils
@@ -35,3 +39,67 @@ class IsValidIdTest(unittest.TestCase):
# unicode variant of valid 12-byte str object
self.assertFalse(utils.is_valid_id(u'beef€67890'))
class PrettyDateTest(unittest.TestCase):
def test_past(self):
from pillar.web.utils import pretty_date
now = datetime.datetime(2016, 11, 8, 11, 46, 30, 0, tz_util.utc) # a Tuesday
def pd(**diff):
return pretty_date(now - datetime.timedelta(**diff), now=now)
self.assertEqual('just now', pd(seconds=5))
self.assertEqual('5m ago', pd(minutes=5))
self.assertEqual('last Tuesday', pd(days=7))
self.assertEqual('1 week ago', pd(days=8))
self.assertEqual('2 weeks ago', pd(days=14))
self.assertEqual('08 Oct', pd(days=31))
self.assertEqual('08 Oct 2015', pd(days=31 + 366))
def test_future(self):
from pillar.web.utils import pretty_date
def pd(**diff):
return pretty_date(now + datetime.timedelta(**diff), now=now)
now = datetime.datetime(2016, 11, 8, 11, 46, 30, 0, tz_util.utc) # a Tuesday
self.assertEqual('just now', pd(seconds=5))
self.assertEqual('in 5m', pd(minutes=5))
self.assertEqual('next Tuesday', pd(days=7))
self.assertEqual('in 1 week', pd(days=8))
self.assertEqual('in 2 weeks', pd(days=14))
self.assertEqual('08 Dec', pd(days=30))
self.assertEqual('08 Dec 2017', pd(days=30 + 365))
def test_past_with_time(self):
from pillar.web.utils import pretty_date
now = datetime.datetime(2016, 11, 8, 11, 46, 30, 0, tz_util.utc) # a Tuesday
def pd(**diff):
return pretty_date(now - datetime.timedelta(**diff), detail=True, now=now)
self.assertEqual('just now', pd(seconds=5))
self.assertEqual('5m ago', pd(minutes=5))
self.assertEqual('last Tuesday at 11:46', pd(days=7))
self.assertEqual('1 week ago at 11:46', pd(days=8))
self.assertEqual('2 weeks ago at 11:46', pd(days=14))
self.assertEqual('08 Oct at 11:46', pd(days=31))
self.assertEqual('08 Oct 2015 at 11:46', pd(days=31 + 366))
def test_future_with_time(self):
from pillar.web.utils import pretty_date
def pd(**diff):
return pretty_date(now + datetime.timedelta(**diff), detail=True, now=now)
now = datetime.datetime(2016, 11, 8, 11, 46, 30, 0, tz_util.utc) # a Tuesday
self.assertEqual('just now', pd(seconds=5))
self.assertEqual('in 5m', pd(minutes=5))
self.assertEqual('next Tuesday at 11:46', pd(days=7))
self.assertEqual('in 1 week at 11:46', pd(days=8))
self.assertEqual('in 2 weeks at 11:46', pd(days=14))
self.assertEqual('08 Dec at 11:46', pd(days=30))
self.assertEqual('08 Dec 2017 at 11:46', pd(days=30 + 365))