More tests, more bug fixes
[doneit] / tests / test_backend.py
1 def assert_projects_same(backend1, backend2):
2         projects1 = list(backend1.get_projects())
3         projects1.sort()
4
5         projects2 = list(backend2.get_projects())
6         projects2.sort()
7
8         assert projects1 == projects2
9
10
11 def assert_locations_same(backend1, backend2):
12         locations1 = list(backend1.get_locations())
13         locations1.sort()
14
15         locations2 = list(backend2.get_locations())
16         locations2.sort()
17
18         assert locations1 == locations2
19
20
21 def assert_tasks_same(backend1, backend2, projId):
22         tasks1 = list(backend1.get_tasks_with_details(projId))
23         tasks1.sort()
24
25         tasks2 = list(backend2.get_tasks_with_details(projId))
26         tasks2.sort()
27
28         assert tasks1 == tasks2
29
30
31 def exercise_projects(backend):
32         PROJECT_1_NAME = "p1"
33         PROJECT_1_NEW_NAME = "p1_1"
34         PROJECT_2_NAME = "p2"
35
36         projects = list(backend.get_projects())
37         assert len(projects) == 0
38
39         # Verify add/getters
40         proj1Id = backend.add_project(PROJECT_1_NAME)
41
42         proj = backend.get_project(proj1Id)
43         assert proj["name"] == PROJECT_1_NAME
44         assert proj["id"] == proj1Id
45         assert proj["isVisible"]
46         assert not proj["isMeta"]
47
48         projects = list(backend.get_projects())
49         assert len(projects) == 1
50         assert proj == projects[0]
51
52         lookupProj = backend.lookup_project(PROJECT_1_NAME)
53         assert proj == lookupProj
54
55         # verify name/getters
56         backend.set_project_name(proj1Id, PROJECT_1_NEW_NAME)
57
58         proj = backend.get_project(proj1Id)
59         assert proj["name"] == PROJECT_1_NEW_NAME
60         assert proj["id"] == proj1Id
61         assert proj["isVisible"]
62         assert not proj["isMeta"]
63
64         projects = list(backend.get_projects())
65         assert len(projects) == 1
66         assert proj == projects[0]
67
68         lookupProj = backend.lookup_project(PROJECT_1_NEW_NAME)
69         assert proj == lookupProj
70
71         # verify visibility/getters
72         backend.set_project_visibility(proj1Id, False)
73
74         proj = backend.get_project(proj1Id)
75         assert proj["name"] == PROJECT_1_NEW_NAME
76         assert proj["id"] == proj1Id
77         assert not proj["isVisible"]
78         assert not proj["isMeta"]
79
80         projects = list(backend.get_projects())
81         assert len(projects) == 1
82         assert proj == projects[0]
83
84         lookupProj = backend.lookup_project(PROJECT_1_NEW_NAME)
85         assert proj == lookupProj
86
87         # verify second project while modifying first
88         proj2Id = backend.add_project(PROJECT_2_NAME)
89
90         proj = backend.get_project(proj1Id)
91         assert proj["name"] == PROJECT_1_NEW_NAME
92         assert proj["id"] == proj1Id
93         assert not proj["isVisible"]
94         assert not proj["isMeta"]
95
96         lookupProj = backend.lookup_project(PROJECT_1_NEW_NAME)
97         assert proj == lookupProj
98
99         proj = backend.get_project(proj2Id)
100         assert proj["name"] == PROJECT_2_NAME
101         assert proj["id"] == proj2Id
102         assert proj["isVisible"]
103         assert not proj["isMeta"]
104
105         lookupProj = backend.lookup_project(PROJECT_2_NAME)
106         assert proj == lookupProj
107
108         backend.set_project_name(proj1Id, PROJECT_1_NAME)
109
110         proj = backend.get_project(proj1Id)
111         assert proj["name"] == PROJECT_1_NAME
112         assert proj["id"] == proj1Id
113         assert not proj["isVisible"]
114         assert not proj["isMeta"]
115
116         lookupProj = backend.lookup_project(PROJECT_1_NAME)
117         assert proj == lookupProj
118
119         proj = backend.get_project(proj2Id)
120         assert proj["name"] == PROJECT_2_NAME
121         assert proj["id"] == proj2Id
122         assert proj["isVisible"]
123         assert not proj["isMeta"]
124
125         lookupProj = backend.lookup_project(PROJECT_2_NAME)
126         assert proj == lookupProj
127
128         # verify visibility/getters
129         backend.set_project_visibility(proj1Id, True)
130
131         proj = backend.get_project(proj1Id)
132         assert proj["name"] == PROJECT_1_NAME
133         assert proj["id"] == proj1Id
134         assert proj["isVisible"]
135         assert not proj["isMeta"]
136
137         lookupProj = backend.lookup_project(PROJECT_1_NAME)
138         assert proj == lookupProj
139
140         proj = backend.get_project(proj2Id)
141         assert proj["name"] == PROJECT_2_NAME
142         assert proj["id"] == proj2Id
143         assert proj["isVisible"]
144         assert not proj["isMeta"]
145
146         lookupProj = backend.lookup_project(PROJECT_2_NAME)
147         assert proj == lookupProj
148
149
150 def exercise_locations(backend):
151         locations = list(backend.get_locations())
152         assert len(locations) == 0
153
154
155 def exercise_task(backend, proj1Id, proj2Id):
156         TASK_1_NAME = "t1"
157         TASK_2_NAME = "t1"
158
159         proj1Tasks = list(backend.get_tasks_with_details(proj1Id))
160         assert len(proj1Tasks) == 0
161         proj2Tasks = list(backend.get_tasks_with_details(proj2Id))
162         assert len(proj2Tasks) == 0
163
164         taskId = backend.add_task(proj1Id, TASK_1_NAME)
165         task = backend.get_task_details(taskId)
166         assert task["name"] == TASK_1_NAME
167         assert task["projId"] == proj1Id
168         assert task["id"] == taskId