Coverage for src/activities.mys : 100%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1from os.path import Path
2from time import LocalDateTime
3from .database import Database
5class Activity:
6 date: string
7 kind: string
8 message: string
10class Activities:
11 _database: Database
12 _activities: [Activity]
14 func __init__(self, database: Database):
15 self._database = database
16 self._activities = []
18 for date, kind, message in self._database.get_activities():
19 self._activities.append(Activity(date, kind, message))
21 func save(self):
22 self._database.clear_activities()
24 for activity in self._activities:
25 self._database.add_activity(activity.date, activity.kind, activity.message)
27 func add(self, kind: string, message: string):
28 self._activities.insert(0, Activity(str(LocalDateTime()), kind, message))
30 if self._activities.length() > 50:
31 self._activities.pop()
33 func recent(self) -> [Activity]:
34 return self._activities
36func _create_database() -> Database:
37 path = Path("test-database")
38 path.rm(force=True)
40 return Database(path)
42test restart():
43 database = _create_database()
45 # First boot.
46 activities = Activities(database)
47 activities.add("📦", "First!")
48 activities.add("📦", "Second!")
49 recent = activities.recent()
50 assert recent[0].kind == "📦"
51 assert recent[0].message == "Second!"
52 assert recent[1].kind == "📦"
53 assert recent[1].message == "First!"
54 activities.save()
56 # Second boot.
57 activities = Activities(database)
58 recent = activities.recent()
59 assert recent[0].kind == "📦"
60 assert recent[0].message == "Second!"
61 assert recent[1].kind == "📦"
62 assert recent[1].message == "First!"
64test drop_old_activity():
65 database = _create_database()
66 activities = Activities(database)
68 for i in range(100):
69 activities.add(str(i), str(2 * i))
71 recent = activities.recent()
72 assert recent[0].kind == "99"
73 assert recent[0].message == "198"
74 assert recent[-1].kind == "50"
75 assert recent[-1].message == "100"