Coverage for tests/store/test_store_logic.py: 100%
43 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-17 22:07 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-17 22:07 +0000
1import unittest
2from datetime import datetime, timedelta, timezone
3from webapp.store.logic import (
4 convert_date,
5 format_relative_date,
6 get_icon,
7 format_slug,
8 parse_package_for_card,
9 paginate,
10)
13class TestStoreLogic(unittest.TestCase):
15 def test_convert_date_today(self):
16 today = datetime.now(timezone.utc).isoformat()
17 result = convert_date(today)
18 self.assertIn(result, ["Today", "Yesterday"])
20 def test_format_relative_date_today(self):
21 now = datetime.now(timezone.utc).isoformat()
22 self.assertEqual(format_relative_date(now), "today")
24 def test_format_relative_date_yesterday(self):
25 yesterday = (
26 datetime.now(timezone.utc) - timedelta(days=1)
27 ).isoformat()
28 self.assertEqual(format_relative_date(yesterday), "yesterday")
30 def test_format_relative_date_weeks(self):
31 old_date = (
32 datetime.now(timezone.utc) - timedelta(days=14)
33 ).isoformat()
34 self.assertEqual(format_relative_date(old_date), "2 weeks ago")
36 def test_format_relative_date_months(self):
37 old_date = (
38 datetime.now(timezone.utc) - timedelta(days=60)
39 ).isoformat()
40 self.assertEqual(format_relative_date(old_date), "2 months ago")
42 def test_get_icon_with_icons(self):
43 media = [{"type": "icon", "url": "https://example.com/icon.png"}]
44 self.assertEqual(get_icon(media), "https://example.com/icon.png")
46 def test_format_slug(self):
47 self.assertEqual(
48 format_slug("hello-world_iot_and_some_random_text"),
49 "Hello World IoT and Some Random Text",
50 )
52 def test_parse_package_for_card(self):
53 package = {
54 "name": "test-package",
55 "metadata": {
56 "summary": "A test summary",
57 "description": "A test description",
58 "title": "test-package",
59 "website": "https://example.com",
60 "contact": "test@example.com",
61 "links": {
62 "media": [
63 {"type": "icon", "url": "https://example.com/icon.png"}
64 ]
65 },
66 "publisher": {
67 "display-name": "Test Publisher",
68 "username": "testuser",
69 "validation": "verified",
70 },
71 },
72 }
73 result = parse_package_for_card(package)
74 self.assertEqual(result["package"]["name"], "test-package")
75 self.assertEqual(result["package"]["display_name"], "Test Package")
76 self.assertEqual(
77 result["package"]["icon_url"], "https://example.com/icon.png"
78 )
79 self.assertEqual(result["publisher"]["name"], "testuser")
81 def test_paginate_bounds(self):
82 packages = [{"name": f"pkg{i}"} for i in range(25)]
83 page = 2
84 size = 10
85 paged = paginate(packages, page, size)
86 self.assertEqual(len(paged), 10)
87 self.assertEqual(paged[0]["name"], "pkg10")
89 def test_paginate_overflow(self):
90 packages = [{"name": f"pkg{i}"} for i in range(5)]
91 paged = paginate(packages, page=10, size=2)
92 self.assertTrue(len(paged) <= 2)