Add unitary tests for pretty-date

This commit is contained in:
nicolargo 2024-10-13 16:28:28 +02:00
parent 7f2454154f
commit db9785e37f
2 changed files with 26 additions and 11 deletions

View File

@ -275,19 +275,18 @@ def safe_makedirs(path):
raise
def pretty_date(time=False):
def pretty_date(ref=False, now=datetime.now()):
"""
Get a datetime object or a int() Epoch timestamp and return a
pretty string like 'an hour ago', 'Yesterday', '3 months ago',
'just now', etc
Source: https://stackoverflow.com/questions/1551382/user-friendly-time-format-in-python
"""
now = datetime.now()
if isinstance(time, int):
diff = now - datetime.fromtimestamp(time)
elif isinstance(time, datetime):
diff = now - time
elif not time:
if isinstance(ref, int):
diff = now - datetime.fromtimestamp(ref)
elif isinstance(ref, datetime):
diff = now - ref
elif not ref:
diff = 0
second_diff = diff.seconds
day_diff = diff.days
@ -313,10 +312,10 @@ def pretty_date(time=False):
if day_diff < 7:
return str(day_diff) + " days"
if day_diff < 31:
return str(day_diff // 7) + " weeks"
return str(day_diff // 7) + " weeks" if (day_diff // 7) > 1 else "1 week"
if day_diff < 365:
return str(day_diff // 30) + " months"
return str(day_diff // 365) + " years"
return str(day_diff // 30) + " months" if (day_diff // 30) > 1 else "1 month"
return str(day_diff // 365) + " years" if (day_diff // 365) > 1 else "1 year"
def urlopen_auth(url, username, password):

View File

@ -14,11 +14,12 @@ import functools
import json
import time
import unittest
from datetime import datetime
from glances import __version__
from glances.events_list import GlancesEventsList
from glances.filter import GlancesFilter, GlancesFilterList
from glances.globals import LINUX, WINDOWS, string_value_to_float, subsample
from glances.globals import LINUX, WINDOWS, pretty_date, string_value_to_float, subsample
from glances.main import GlancesMain
from glances.outputs.glances_bars import Bar
from glances.plugins.plugin.model import GlancesPluginModel
@ -561,6 +562,21 @@ class TestGlances(unittest.TestCase):
self.assertTrue(gfl.is_filtered({'name': 'snake is in the place', 'username': 'nicolargo'}))
self.assertFalse(gfl.is_filtered({'name': 'snake is in the place', 'username': 'notme'}))
def test_021_pretty_date(self):
"""Test pretty_date"""
print('INFO: [TEST_021] pretty_date')
self.assertEqual(pretty_date(datetime(2024, 1, 1, 12, 0), datetime(2024, 1, 1, 12, 0)), 'just now')
self.assertEqual(pretty_date(datetime(2024, 1, 1, 11, 59), datetime(2024, 1, 1, 12, 0)), 'a min')
self.assertEqual(pretty_date(datetime(2024, 1, 1, 11, 55), datetime(2024, 1, 1, 12, 0)), '5 mins')
self.assertEqual(pretty_date(datetime(2024, 1, 1, 11, 0), datetime(2024, 1, 1, 12, 0)), 'an hour')
self.assertEqual(pretty_date(datetime(2024, 1, 1, 0, 0), datetime(2024, 1, 1, 12, 0)), '12 hours')
self.assertEqual(pretty_date(datetime(2023, 12, 20, 0, 0), datetime(2024, 1, 1, 12, 0)), '1 week')
self.assertEqual(pretty_date(datetime(2023, 12, 5, 0, 0), datetime(2024, 1, 1, 12, 0)), '3 weeks')
self.assertEqual(pretty_date(datetime(2023, 12, 1, 0, 0), datetime(2024, 1, 1, 12, 0)), '1 month')
self.assertEqual(pretty_date(datetime(2023, 6, 1, 0, 0), datetime(2024, 1, 1, 12, 0)), '7 months')
self.assertEqual(pretty_date(datetime(2023, 1, 1, 0, 0), datetime(2024, 1, 1, 12, 0)), '1 year')
self.assertEqual(pretty_date(datetime(2020, 1, 1, 0, 0), datetime(2024, 1, 1, 12, 0)), '4 years')
def test_094_thresholds(self):
"""Test thresholds classes"""
print('INFO: [TEST_094] Thresholds')