Hide keyboard shortcuts

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 

4 

5class Activity: 

6 date: string 

7 kind: string 

8 message: string 

9 

10class Activities: 

11 _database: Database 

12 _activities: [Activity] 

13 

14 func __init__(self, database: Database): 

15 self._database = database 

16 self._activities = [] 

17 

18 for date, kind, message in self._database.get_activities(): 

19 self._activities.append(Activity(date, kind, message)) 

20 

21 func save(self): 

22 self._database.clear_activities() 

23 

24 for activity in self._activities: 

25 self._database.add_activity(activity.date, activity.kind, activity.message) 

26 

27 func add(self, kind: string, message: string): 

28 self._activities.insert(0, Activity(str(LocalDateTime()), kind, message)) 

29 

30 if self._activities.length() > 50: 

31 self._activities.pop() 

32 

33 func recent(self) -> [Activity]: 

34 return self._activities 

35 

36func _create_database() -> Database: 

37 path = Path("test-database") 

38 path.rm(force=True) 

39 

40 return Database(path) 

41 

42test restart(): 

43 database = _create_database() 

44 

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() 

55 

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!" 

63 

64test drop_old_activity(): 

65 database = _create_database() 

66 activities = Activities(database) 

67 

68 for i in range(100): 

69 activities.add(str(i), str(2 * i)) 

70 

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"