From 47981dc15e59a7f0a2f5442dcd985131c888b947 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 12 Dec 2020 20:02:14 -0800 Subject: [PATCH] Show year in time_since when ambiguous --- bookwyrm/templatetags/bookwyrm_tags.py | 2 ++ bookwyrm/tests/test_templatetags.py | 35 +++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/bookwyrm/templatetags/bookwyrm_tags.py b/bookwyrm/templatetags/bookwyrm_tags.py index deb90427..849974bf 100644 --- a/bookwyrm/templatetags/bookwyrm_tags.py +++ b/bookwyrm/templatetags/bookwyrm_tags.py @@ -132,6 +132,8 @@ def time_since(date): delta = now - date if date < (now - relativedelta(weeks=1)): + if date.year != now.year: + return date.strftime('%b %-d %Y') return date.strftime('%b %-d') delta = relativedelta(now, date) if delta.days: diff --git a/bookwyrm/tests/test_templatetags.py b/bookwyrm/tests/test_templatetags.py index 28f08424..67d28848 100644 --- a/bookwyrm/tests/test_templatetags.py +++ b/bookwyrm/tests/test_templatetags.py @@ -3,6 +3,7 @@ import re from unittest.mock import patch from dateutil.parser import parse +from dateutil.relativedelta import relativedelta from django.test import TestCase from django.utils import timezone @@ -205,5 +206,37 @@ class TemplateTags(TestCase): def test_get_uuid(self): ''' uuid functionality ''' uuid = bookwyrm_tags.get_uuid('hi') - print(uuid) self.assertTrue(re.match(r'hi[A-Za-z0-9\-]', uuid)) + + + def test_time_since(self): + ''' ultraconcise timestamps ''' + self.assertEqual(bookwyrm_tags.time_since('bleh'), '') + + now = timezone.now() + self.assertEqual(bookwyrm_tags.time_since(now), '0s') + + seconds_ago = now - relativedelta(seconds=4) + self.assertEqual(bookwyrm_tags.time_since(seconds_ago), '4s') + + minutes_ago = now - relativedelta(minutes=8) + self.assertEqual(bookwyrm_tags.time_since(minutes_ago), '8m') + + hours_ago = now - relativedelta(hours=9) + self.assertEqual(bookwyrm_tags.time_since(hours_ago), '9h') + + days_ago = now - relativedelta(days=3) + self.assertEqual(bookwyrm_tags.time_since(days_ago), '3d') + + # I am not going to figure out how to mock dates tonight. + months_ago = now - relativedelta(months=5) + self.assertTrue(re.match( + r'[A-Z][a-z]{2} \d?\d', + bookwyrm_tags.time_since(months_ago) + )) + + years_ago = now - relativedelta(years=10) + self.assertTrue(re.match( + r'[A-Z][a-z]{2} \d?\d \d{4}', + bookwyrm_tags.time_since(years_ago) + ))