diff options
author | Bronko <c0de_gitlab_gajim@teamchris.info> | 2023-01-14 01:49:05 +0300 |
---|---|---|
committer | Philipp Hörist <philipp@hoerist.com> | 2023-01-14 01:49:05 +0300 |
commit | 74bd02d085e2d586595e6520429d6f583fc2edc2 (patch) | |
tree | 7b94f06870c0e825c6540c4efbcf1c0bcb90ff28 /test | |
parent | 304e9a9870974da515352bd9991eade5ae839925 (diff) |
imprv: ChatList: Improve timedelta function
Diffstat (limited to 'test')
-rw-r--r-- | test/common/test_get_uf_relative_time.py | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/test/common/test_get_uf_relative_time.py b/test/common/test_get_uf_relative_time.py new file mode 100644 index 000000000..b1d22e1cd --- /dev/null +++ b/test/common/test_get_uf_relative_time.py @@ -0,0 +1,89 @@ + +import unittest +from datetime import datetime +from datetime import timedelta +from datetime import timezone + +from gajim.common import app +from gajim.common.helpers import get_uf_relative_time +from gajim.common.settings import Settings + +app.settings = Settings(in_memory=True) + + +class GetRelativeTimeTest(unittest.TestCase): + '''Tests for the get_uf_relative_time function.''' + + def test_sub_1_minute(self): + '''Test timedelta less than 1 minute''' + timenow = datetime(2023, 1, 2, 3, 4, 0, tzinfo=timezone.utc) + timestamp1 = timenow - timedelta(seconds=30) + self.assertEqual(get_uf_relative_time(timestamp1.timestamp(), + timenow.timestamp()), 'Just now') + + def test_sub_15_minutes(self): + '''Test timedelta less than 15 minutes and more than 1 minute ago''' + timenow = datetime(2023, 1, 2, 3, 4, 0, tzinfo=timezone.utc) + timestamp1 = timenow - timedelta(minutes=3) + self.assertEqual(get_uf_relative_time(timestamp1.timestamp(), + timenow.timestamp()), + '3 mins ago') + + def test_sub_15_minutes_next_day(self): + '''Test timedelta less than 15 minutes and it is the next day''' + timenow = datetime(2023, 1, 1, 0, 5, 0, tzinfo=timezone.utc) + timestamp1 = timenow - timedelta(minutes=10) + self.assertEqual(get_uf_relative_time(timestamp1.timestamp(), + timenow.timestamp()), + '10 mins ago') + + def test_today(self): + '''Test today: same day and more than 15 minutes ago''' + timenow = datetime(2023, 1, 2, 12, 0, 0, tzinfo=timezone.utc) + timestamp1 = timenow - timedelta(hours=4) + self.assertEqual(get_uf_relative_time(timestamp1.timestamp(), + timenow.timestamp()), + timestamp1.strftime(app.settings.get('time_format'))) + + def test_yesterday_less_than_24h(self): + '''Test yesterday and less than 24h ago''' + timenow = datetime(2023, 1, 2, 12, 0, 0, tzinfo=timezone.utc) + timestamp1 = datetime(2023, 1, 1, 14, 0, 0, tzinfo=timezone.utc) + self.assertEqual(get_uf_relative_time(timestamp1.timestamp(), + timenow.timestamp()), 'Yesterday') + + def test_yesterday_more_than_24h(self): + '''Test yesterday and more than 24h ago''' + timenow = datetime(2023, 1, 2, 12, 0, 0, tzinfo=timezone.utc) + timestamp1 = datetime(2023, 1, 1, 10, 0, 0, tzinfo=timezone.utc) + self.assertEqual(get_uf_relative_time(timestamp1.timestamp(), + timenow.timestamp()), + 'Yesterday') + + def test_weekday(self): + '''Test weekday: timestamp older than yesterday and less + than 7 days ago, should return the weekday, i.e. 'Sun' for Sunday''' + timenow = datetime(2023, 1, 5, 1, 2, 3, tzinfo=timezone.utc) + timestamp1 = datetime(2023, 1, 1, 4, 5, 6, tzinfo=timezone.utc) + self.assertEqual(get_uf_relative_time(timestamp1.timestamp(), + timenow.timestamp()), + timestamp1.strftime('%a')) + + def test_month_day(self): + '''Test month_day: timestamp more than 7 days ago but less than 365''' + timenow = datetime(2023, 1, 5, 1, 2, 3, tzinfo=timezone.utc) + timestamp1 = datetime(2022, 11, 15, 4, 5, 6, tzinfo=timezone.utc) + self.assertEqual(get_uf_relative_time(timestamp1.timestamp(), + timenow.timestamp()), + timestamp1.strftime('%b %d')) + + def test_year(self): + '''Test year: timestamp more than 365 days ago''' + timenow = datetime(2023, 1, 5, 1, 2, 3, tzinfo=timezone.utc) + timestamp1 = datetime(2022, 1, 1, 4, 5, 6, tzinfo=timezone.utc) + self.assertEqual(get_uf_relative_time(timestamp1.timestamp(), + timenow.timestamp()), '2022') + + +if __name__ == '__main__': + unittest.main() |