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