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