comparison test/test_db.py @ 1567:fc8998ce6274

fixed missing (pre-commit) journal entries in *dbm backends [SF#679217]
author Richard Jones <richard@users.sourceforge.net>
date Wed, 26 Mar 2003 11:19:28 +0000
parents e2a8ce4d2317
children 33a0d94c7658
comparison
equal deleted inserted replaced
1566:053065585406 1567:fc8998ce6274
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" 14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, 15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
17 # 17 #
18 # $Id: test_db.py,v 1.83 2003-03-26 10:44:05 richard Exp $ 18 # $Id: test_db.py,v 1.84 2003-03-26 11:19:28 richard Exp $
19 19
20 import unittest, os, shutil, time 20 import unittest, os, shutil, time
21 21
22 from roundup.hyperdb import String, Password, Link, Multilink, Date, \ 22 from roundup.hyperdb import String, Password, Link, Multilink, Date, \
23 Interval, DatabaseError, Boolean, Number, Node 23 Interval, DatabaseError, Boolean, Number, Node
86 setupSchema(self.db, 1, anydbm) 86 setupSchema(self.db, 1, anydbm)
87 87
88 # 88 #
89 # schema mutation 89 # schema mutation
90 # 90 #
91 def xtestAddProperty(self): 91 def testAddProperty(self):
92 self.db.issue.create(title="spam", status='1') 92 self.db.issue.create(title="spam", status='1')
93 self.db.commit() 93 self.db.commit()
94 94
95 self.db.issue.addprop(fixer=Link("user")) 95 self.db.issue.addprop(fixer=Link("user"))
96 # force any post-init stuff to happen 96 # force any post-init stuff to happen
101 self.assertEqual(keys, ['activity', 'assignedto', 'creation', 101 self.assertEqual(keys, ['activity', 'assignedto', 'creation',
102 'creator', 'deadline', 'files', 'fixer', 'foo', 'id', 'messages', 102 'creator', 'deadline', 'files', 'fixer', 'foo', 'id', 'messages',
103 'nosy', 'status', 'superseder', 'title']) 103 'nosy', 'status', 'superseder', 'title'])
104 self.assertEqual(self.db.issue.get('1', "fixer"), None) 104 self.assertEqual(self.db.issue.get('1', "fixer"), None)
105 105
106 def xtestRemoveProperty(self): 106 def testRemoveProperty(self):
107 self.db.issue.create(title="spam", status='1') 107 self.db.issue.create(title="spam", status='1')
108 self.db.commit() 108 self.db.commit()
109 109
110 del self.db.issue.properties['title'] 110 del self.db.issue.properties['title']
111 self.db.post_init() 111 self.db.post_init()
115 self.assertEqual(keys, ['activity', 'assignedto', 'creation', 115 self.assertEqual(keys, ['activity', 'assignedto', 'creation',
116 'creator', 'deadline', 'files', 'foo', 'id', 'messages', 116 'creator', 'deadline', 'files', 'foo', 'id', 'messages',
117 'nosy', 'status', 'superseder']) 117 'nosy', 'status', 'superseder'])
118 self.assertEqual(self.db.issue.list(), ['1']) 118 self.assertEqual(self.db.issue.list(), ['1'])
119 119
120 def xtestAddRemoveProperty(self): 120 def testAddRemoveProperty(self):
121 self.db.issue.create(title="spam", status='1') 121 self.db.issue.create(title="spam", status='1')
122 self.db.commit() 122 self.db.commit()
123 123
124 self.db.issue.addprop(fixer=Link("user")) 124 self.db.issue.addprop(fixer=Link("user"))
125 del self.db.issue.properties['title'] 125 del self.db.issue.properties['title']
133 self.assertEqual(self.db.issue.list(), ['1']) 133 self.assertEqual(self.db.issue.list(), ['1'])
134 134
135 # 135 #
136 # basic operations 136 # basic operations
137 # 137 #
138 def xtestIDGeneration(self): 138 def testIDGeneration(self):
139 id1 = self.db.issue.create(title="spam", status='1') 139 id1 = self.db.issue.create(title="spam", status='1')
140 id2 = self.db.issue.create(title="eggs", status='2') 140 id2 = self.db.issue.create(title="eggs", status='2')
141 self.assertNotEqual(id1, id2) 141 self.assertNotEqual(id1, id2)
142 142
143 def xtestStringChange(self): 143 def testStringChange(self):
144 for commit in (0,1): 144 for commit in (0,1):
145 # test set & retrieve 145 # test set & retrieve
146 nid = self.db.issue.create(title="spam", status='1') 146 nid = self.db.issue.create(title="spam", status='1')
147 self.assertEqual(self.db.issue.get(nid, 'title'), 'spam') 147 self.assertEqual(self.db.issue.get(nid, 'title'), 'spam')
148 148
149 # change and make sure we retrieve the correct value 149 # change and make sure we retrieve the correct value
150 self.db.issue.set(nid, title='eggs') 150 self.db.issue.set(nid, title='eggs')
151 if commit: self.db.commit() 151 if commit: self.db.commit()
152 self.assertEqual(self.db.issue.get(nid, 'title'), 'eggs') 152 self.assertEqual(self.db.issue.get(nid, 'title'), 'eggs')
153 153
154 def xtestStringUnset(self): 154 def testStringUnset(self):
155 for commit in (0,1): 155 for commit in (0,1):
156 nid = self.db.issue.create(title="spam", status='1') 156 nid = self.db.issue.create(title="spam", status='1')
157 if commit: self.db.commit() 157 if commit: self.db.commit()
158 self.assertEqual(self.db.issue.get(nid, 'title'), 'spam') 158 self.assertEqual(self.db.issue.get(nid, 'title'), 'spam')
159 # make sure we can unset 159 # make sure we can unset
160 self.db.issue.set(nid, title=None) 160 self.db.issue.set(nid, title=None)
161 if commit: self.db.commit() 161 if commit: self.db.commit()
162 self.assertEqual(self.db.issue.get(nid, "title"), None) 162 self.assertEqual(self.db.issue.get(nid, "title"), None)
163 163
164 def xtestLinkChange(self): 164 def testLinkChange(self):
165 for commit in (0,1): 165 for commit in (0,1):
166 nid = self.db.issue.create(title="spam", status='1') 166 nid = self.db.issue.create(title="spam", status='1')
167 if commit: self.db.commit() 167 if commit: self.db.commit()
168 self.assertEqual(self.db.issue.get(nid, "status"), '1') 168 self.assertEqual(self.db.issue.get(nid, "status"), '1')
169 self.db.issue.set(nid, status='2') 169 self.db.issue.set(nid, status='2')
170 if commit: self.db.commit() 170 if commit: self.db.commit()
171 self.assertEqual(self.db.issue.get(nid, "status"), '2') 171 self.assertEqual(self.db.issue.get(nid, "status"), '2')
172 172
173 def xtestLinkUnset(self): 173 def testLinkUnset(self):
174 for commit in (0,1): 174 for commit in (0,1):
175 nid = self.db.issue.create(title="spam", status='1') 175 nid = self.db.issue.create(title="spam", status='1')
176 if commit: self.db.commit() 176 if commit: self.db.commit()
177 self.db.issue.set(nid, status=None) 177 self.db.issue.set(nid, status=None)
178 if commit: self.db.commit() 178 if commit: self.db.commit()
179 self.assertEqual(self.db.issue.get(nid, "status"), None) 179 self.assertEqual(self.db.issue.get(nid, "status"), None)
180 180
181 def xtestMultilinkChange(self): 181 def testMultilinkChange(self):
182 for commit in (0,1): 182 for commit in (0,1):
183 u1 = self.db.user.create(username='foo%s'%commit) 183 u1 = self.db.user.create(username='foo%s'%commit)
184 u2 = self.db.user.create(username='bar%s'%commit) 184 u2 = self.db.user.create(username='bar%s'%commit)
185 nid = self.db.issue.create(title="spam", nosy=[u1]) 185 nid = self.db.issue.create(title="spam", nosy=[u1])
186 if commit: self.db.commit() 186 if commit: self.db.commit()
190 self.assertEqual(self.db.issue.get(nid, "nosy"), []) 190 self.assertEqual(self.db.issue.get(nid, "nosy"), [])
191 self.db.issue.set(nid, nosy=[u1,u2]) 191 self.db.issue.set(nid, nosy=[u1,u2])
192 if commit: self.db.commit() 192 if commit: self.db.commit()
193 self.assertEqual(self.db.issue.get(nid, "nosy"), [u1,u2]) 193 self.assertEqual(self.db.issue.get(nid, "nosy"), [u1,u2])
194 194
195 def xtestDateChange(self): 195 def testDateChange(self):
196 for commit in (0,1): 196 for commit in (0,1):
197 nid = self.db.issue.create(title="spam", status='1') 197 nid = self.db.issue.create(title="spam", status='1')
198 a = self.db.issue.get(nid, "deadline") 198 a = self.db.issue.get(nid, "deadline")
199 if commit: self.db.commit() 199 if commit: self.db.commit()
200 self.db.issue.set(nid, deadline=date.Date()) 200 self.db.issue.set(nid, deadline=date.Date())
201 b = self.db.issue.get(nid, "deadline") 201 b = self.db.issue.get(nid, "deadline")
202 if commit: self.db.commit() 202 if commit: self.db.commit()
203 self.assertNotEqual(a, b) 203 self.assertNotEqual(a, b)
204 self.assertNotEqual(b, date.Date('1970-1-1 00:00:00')) 204 self.assertNotEqual(b, date.Date('1970-1-1 00:00:00'))
205 205
206 def xtestDateUnset(self): 206 def testDateUnset(self):
207 for commit in (0,1): 207 for commit in (0,1):
208 nid = self.db.issue.create(title="spam", status='1') 208 nid = self.db.issue.create(title="spam", status='1')
209 self.db.issue.set(nid, deadline=date.Date()) 209 self.db.issue.set(nid, deadline=date.Date())
210 if commit: self.db.commit() 210 if commit: self.db.commit()
211 self.assertNotEqual(self.db.issue.get(nid, "deadline"), None) 211 self.assertNotEqual(self.db.issue.get(nid, "deadline"), None)
212 self.db.issue.set(nid, deadline=None) 212 self.db.issue.set(nid, deadline=None)
213 if commit: self.db.commit() 213 if commit: self.db.commit()
214 self.assertEqual(self.db.issue.get(nid, "deadline"), None) 214 self.assertEqual(self.db.issue.get(nid, "deadline"), None)
215 215
216 def xtestIntervalChange(self): 216 def testIntervalChange(self):
217 for commit in (0,1): 217 for commit in (0,1):
218 nid = self.db.issue.create(title="spam", status='1') 218 nid = self.db.issue.create(title="spam", status='1')
219 if commit: self.db.commit() 219 if commit: self.db.commit()
220 a = self.db.issue.get(nid, "foo") 220 a = self.db.issue.get(nid, "foo")
221 i = date.Interval('-1d') 221 i = date.Interval('-1d')
227 self.db.issue.set(nid, foo=j) 227 self.db.issue.set(nid, foo=j)
228 if commit: self.db.commit() 228 if commit: self.db.commit()
229 self.assertNotEqual(self.db.issue.get(nid, "foo"), i) 229 self.assertNotEqual(self.db.issue.get(nid, "foo"), i)
230 self.assertEqual(j, self.db.issue.get(nid, "foo")) 230 self.assertEqual(j, self.db.issue.get(nid, "foo"))
231 231
232 def xtestIntervalUnset(self): 232 def testIntervalUnset(self):
233 for commit in (0,1): 233 for commit in (0,1):
234 nid = self.db.issue.create(title="spam", status='1') 234 nid = self.db.issue.create(title="spam", status='1')
235 self.db.issue.set(nid, foo=date.Interval('-1d')) 235 self.db.issue.set(nid, foo=date.Interval('-1d'))
236 if commit: self.db.commit() 236 if commit: self.db.commit()
237 self.assertNotEqual(self.db.issue.get(nid, "foo"), None) 237 self.assertNotEqual(self.db.issue.get(nid, "foo"), None)
238 self.db.issue.set(nid, foo=None) 238 self.db.issue.set(nid, foo=None)
239 if commit: self.db.commit() 239 if commit: self.db.commit()
240 self.assertEqual(self.db.issue.get(nid, "foo"), None) 240 self.assertEqual(self.db.issue.get(nid, "foo"), None)
241 241
242 def xtestBooleanChange(self): 242 def testBooleanChange(self):
243 userid = self.db.user.create(username='foo', assignable=1) 243 userid = self.db.user.create(username='foo', assignable=1)
244 self.assertEqual(1, self.db.user.get(userid, 'assignable')) 244 self.assertEqual(1, self.db.user.get(userid, 'assignable'))
245 self.db.user.set(userid, assignable=0) 245 self.db.user.set(userid, assignable=0)
246 self.assertEqual(self.db.user.get(userid, 'assignable'), 0) 246 self.assertEqual(self.db.user.get(userid, 'assignable'), 0)
247 247
248 def xtestBooleanUnset(self): 248 def testBooleanUnset(self):
249 nid = self.db.user.create(username='foo', assignable=1) 249 nid = self.db.user.create(username='foo', assignable=1)
250 self.db.user.set(nid, assignable=None) 250 self.db.user.set(nid, assignable=None)
251 self.assertEqual(self.db.user.get(nid, "assignable"), None) 251 self.assertEqual(self.db.user.get(nid, "assignable"), None)
252 252
253 def xtestNumberChange(self): 253 def testNumberChange(self):
254 nid = self.db.user.create(username='foo', age=1) 254 nid = self.db.user.create(username='foo', age=1)
255 self.assertEqual(1, self.db.user.get(nid, 'age')) 255 self.assertEqual(1, self.db.user.get(nid, 'age'))
256 self.db.user.set(nid, age=3) 256 self.db.user.set(nid, age=3)
257 self.assertNotEqual(self.db.user.get(nid, 'age'), 1) 257 self.assertNotEqual(self.db.user.get(nid, 'age'), 1)
258 self.db.user.set(nid, age=1.0) 258 self.db.user.set(nid, age=1.0)
261 self.assertEqual(self.db.user.get(nid, 'age'), 0) 261 self.assertEqual(self.db.user.get(nid, 'age'), 0)
262 262
263 nid = self.db.user.create(username='bar', age=0) 263 nid = self.db.user.create(username='bar', age=0)
264 self.assertEqual(self.db.user.get(nid, 'age'), 0) 264 self.assertEqual(self.db.user.get(nid, 'age'), 0)
265 265
266 def xtestNumberUnset(self): 266 def testNumberUnset(self):
267 nid = self.db.user.create(username='foo', age=1) 267 nid = self.db.user.create(username='foo', age=1)
268 self.db.user.set(nid, age=None) 268 self.db.user.set(nid, age=None)
269 self.assertEqual(self.db.user.get(nid, "age"), None) 269 self.assertEqual(self.db.user.get(nid, "age"), None)
270 270
271 def xtestKeyValue(self): 271 def testKeyValue(self):
272 newid = self.db.user.create(username="spam") 272 newid = self.db.user.create(username="spam")
273 self.assertEqual(self.db.user.lookup('spam'), newid) 273 self.assertEqual(self.db.user.lookup('spam'), newid)
274 self.db.commit() 274 self.db.commit()
275 self.assertEqual(self.db.user.lookup('spam'), newid) 275 self.assertEqual(self.db.user.lookup('spam'), newid)
276 self.db.user.retire(newid) 276 self.db.user.retire(newid)
280 newid2 = self.db.user.create(username="spam") 280 newid2 = self.db.user.create(username="spam")
281 self.assertNotEqual(newid, newid2) 281 self.assertNotEqual(newid, newid2)
282 # try to restore old node. this shouldn't succeed! 282 # try to restore old node. this shouldn't succeed!
283 self.assertRaises(KeyError, self.db.user.restore, newid) 283 self.assertRaises(KeyError, self.db.user.restore, newid)
284 284
285 def xtestRetire(self): 285 def testRetire(self):
286 self.db.issue.create(title="spam", status='1') 286 self.db.issue.create(title="spam", status='1')
287 b = self.db.status.get('1', 'name') 287 b = self.db.status.get('1', 'name')
288 a = self.db.status.list() 288 a = self.db.status.list()
289 self.db.status.retire('1') 289 self.db.status.retire('1')
290 # make sure the list is different 290 # make sure the list is different
296 self.assertNotEqual(a, self.db.status.list()) 296 self.assertNotEqual(a, self.db.status.list())
297 # try to restore retired node 297 # try to restore retired node
298 self.db.status.restore('1') 298 self.db.status.restore('1')
299 self.assertEqual(a, self.db.status.list()) 299 self.assertEqual(a, self.db.status.list())
300 300
301 def xtestSerialisation(self): 301 def testSerialisation(self):
302 nid = self.db.issue.create(title="spam", status='1', 302 nid = self.db.issue.create(title="spam", status='1',
303 deadline=date.Date(), foo=date.Interval('-1d')) 303 deadline=date.Date(), foo=date.Interval('-1d'))
304 self.db.commit() 304 self.db.commit()
305 assert isinstance(self.db.issue.get(nid, 'deadline'), date.Date) 305 assert isinstance(self.db.issue.get(nid, 'deadline'), date.Date)
306 assert isinstance(self.db.issue.get(nid, 'foo'), date.Interval) 306 assert isinstance(self.db.issue.get(nid, 'foo'), date.Interval)
307 uid = self.db.user.create(username="fozzy", 307 uid = self.db.user.create(username="fozzy",
308 password=password.Password('t. bear')) 308 password=password.Password('t. bear'))
309 self.db.commit() 309 self.db.commit()
310 assert isinstance(self.db.user.get(uid, 'password'), password.Password) 310 assert isinstance(self.db.user.get(uid, 'password'), password.Password)
311 311
312 def xtestTransactions(self): 312 def testTransactions(self):
313 # remember the number of items we started 313 # remember the number of items we started
314 num_issues = len(self.db.issue.list()) 314 num_issues = len(self.db.issue.list())
315 num_files = self.db.numfiles() 315 num_files = self.db.numfiles()
316 self.db.issue.create(title="don't commit me!", status='1') 316 self.db.issue.create(title="don't commit me!", status='1')
317 self.assertNotEqual(num_issues, len(self.db.issue.list())) 317 self.assertNotEqual(num_issues, len(self.db.issue.list()))
344 self.db.user.get('1', 'username') 344 self.db.user.get('1', 'username')
345 self.db.rollback() 345 self.db.rollback()
346 name2 = self.db.user.get('1', 'username') 346 name2 = self.db.user.get('1', 'username')
347 self.assertEqual(name1, name2) 347 self.assertEqual(name1, name2)
348 348
349 def xtestDestroyNoJournalling(self): 349 def testDestroyNoJournalling(self):
350 self.innerTestDestroy(klass=self.db.session) 350 self.innerTestDestroy(klass=self.db.session)
351 351
352 def xtestDestroyJournalling(self): 352 def testDestroyJournalling(self):
353 self.innerTestDestroy(klass=self.db.issue) 353 self.innerTestDestroy(klass=self.db.issue)
354 354
355 def innerTestDestroy(self, klass): 355 def innerTestDestroy(self, klass):
356 newid = klass.create(title='Mr Friendly') 356 newid = klass.create(title='Mr Friendly')
357 n = len(klass.list()) 357 n = len(klass.list())
387 self.assertEqual(klass.get(newid, 'title'), 'Mr Friendly') 387 self.assertEqual(klass.get(newid, 'title'), 'Mr Friendly')
388 self.assertEqual(len(klass.list()), n) 388 self.assertEqual(len(klass.list()), n)
389 if klass.do_journal: 389 if klass.do_journal:
390 self.assertNotEqual(klass.history(newid), []) 390 self.assertNotEqual(klass.history(newid), [])
391 391
392 def xtestExceptions(self): 392 def testExceptions(self):
393 # this tests the exceptions that should be raised 393 # this tests the exceptions that should be raised
394 ar = self.assertRaises 394 ar = self.assertRaises
395 395
396 # 396 #
397 # class create 397 # class create
470 # invalid number value 470 # invalid number value
471 ar(TypeError, self.db.user.set, nid, age='a') 471 ar(TypeError, self.db.user.set, nid, age='a')
472 # invalid boolean value 472 # invalid boolean value
473 ar(TypeError, self.db.user.set, nid, assignable='true') 473 ar(TypeError, self.db.user.set, nid, assignable='true')
474 474
475 def xtestJournals(self): 475 def testJournals(self):
476 self.db.user.create(username="mary") 476 self.db.user.create(username="mary")
477 self.db.user.create(username="pete") 477 self.db.user.create(username="pete")
478 self.db.issue.create(title="spam", status='1') 478 self.db.issue.create(title="spam", status='1')
479 self.db.commit() 479 self.db.commit()
480 480
532 entry = self.db.getjournal('issue', '1')[-1] 532 entry = self.db.getjournal('issue', '1')[-1]
533 (x, date_stamp2, x, x, x) = entry 533 (x, date_stamp2, x, x, x) = entry
534 # see if the change was journalled 534 # see if the change was journalled
535 self.assertNotEqual(date_stamp, date_stamp2) 535 self.assertNotEqual(date_stamp, date_stamp2)
536 536
537 def xtestPack(self): 537 def testJournalPreCommit(self):
538 id = self.db.user.create(username="mary")
539 self.assertEqual(len(self.db.getjournal('user', id)), 1)
540 self.db.commit()
541
542 def testPack(self):
538 id = self.db.issue.create(title="spam", status='1') 543 id = self.db.issue.create(title="spam", status='1')
539 self.db.commit() 544 self.db.commit()
540 self.db.issue.set(id, status='2') 545 self.db.issue.set(id, status='2')
541 self.db.commit() 546 self.db.commit()
542 547
554 self.db.pack(pack_before) 559 self.db.pack(pack_before)
555 560
556 # we should have the create and last set entries now 561 # we should have the create and last set entries now
557 self.assertEqual(jlen-1, len(self.db.getjournal('issue', id))) 562 self.assertEqual(jlen-1, len(self.db.getjournal('issue', id)))
558 563
559 def xtestSearching(self): 564 def testSearching(self):
560 self.db.file.create(content='hello', type="text/plain") 565 self.db.file.create(content='hello', type="text/plain")
561 self.db.file.create(content='world', type="text/frozz", 566 self.db.file.create(content='world', type="text/frozz",
562 comment='blah blah') 567 comment='blah blah')
563 self.db.issue.create(files=['1', '2'], title="flebble plop") 568 self.db.issue.create(files=['1', '2'], title="flebble plop")
564 self.db.issue.create(title="flebble frooz") 569 self.db.issue.create(title="flebble frooz")
569 self.assertEquals(self.db.indexer.search(['frooz'], self.db.issue), 574 self.assertEquals(self.db.indexer.search(['frooz'], self.db.issue),
570 {'2': {}}) 575 {'2': {}})
571 self.assertEquals(self.db.indexer.search(['flebble'], self.db.issue), 576 self.assertEquals(self.db.indexer.search(['flebble'], self.db.issue),
572 {'2': {}, '1': {}}) 577 {'2': {}, '1': {}})
573 578
574 def xtestReindexing(self): 579 def testReindexing(self):
575 self.db.issue.create(title="frooz") 580 self.db.issue.create(title="frooz")
576 self.db.commit() 581 self.db.commit()
577 self.assertEquals(self.db.indexer.search(['frooz'], self.db.issue), 582 self.assertEquals(self.db.indexer.search(['frooz'], self.db.issue),
578 {'1': {}}) 583 {'1': {}})
579 self.db.issue.set('1', title="dooble") 584 self.db.issue.set('1', title="dooble")
580 self.db.commit() 585 self.db.commit()
581 self.assertEquals(self.db.indexer.search(['dooble'], self.db.issue), 586 self.assertEquals(self.db.indexer.search(['dooble'], self.db.issue),
582 {'1': {}}) 587 {'1': {}})
583 self.assertEquals(self.db.indexer.search(['frooz'], self.db.issue), {}) 588 self.assertEquals(self.db.indexer.search(['frooz'], self.db.issue), {})
584 589
585 def xtestForcedReindexing(self): 590 def testForcedReindexing(self):
586 self.db.issue.create(title="flebble frooz") 591 self.db.issue.create(title="flebble frooz")
587 self.db.commit() 592 self.db.commit()
588 self.assertEquals(self.db.indexer.search(['flebble'], self.db.issue), 593 self.assertEquals(self.db.indexer.search(['flebble'], self.db.issue),
589 {'1': {}}) 594 {'1': {}})
590 self.db.indexer.quiet = 1 595 self.db.indexer.quiet = 1
627 self.assertEqual(got, ids) 632 self.assertEqual(got, ids)
628 633
629 # none 634 # none
630 self.assertEqual(self.db.issue.find(status='4', nosy='3'), []) 635 self.assertEqual(self.db.issue.find(status='4', nosy='3'), [])
631 636
632 def xtestStringFind(self): 637 def testStringFind(self):
633 ids = [] 638 ids = []
634 ids.append(self.db.issue.create(title="spam")) 639 ids.append(self.db.issue.create(title="spam"))
635 self.db.issue.create(title="not spam") 640 self.db.issue.create(title="not spam")
636 ids.append(self.db.issue.create(title="spam")) 641 ids.append(self.db.issue.create(title="spam"))
637 ids.sort() 642 ids.sort()
658 'nosy': ['1','2'], 'deadline': date.Date('2003-03-08')}): 663 'nosy': ['1','2'], 'deadline': date.Date('2003-03-08')}):
659 self.db.issue.create(**issue) 664 self.db.issue.create(**issue)
660 self.db.commit() 665 self.db.commit()
661 return self.assertEqual, self.db.issue.filter 666 return self.assertEqual, self.db.issue.filter
662 667
663 def xtestFilteringID(self): 668 def testFilteringID(self):
664 ae, filt = self.filteringSetup() 669 ae, filt = self.filteringSetup()
665 ae(filt(None, {'id': '1'}, ('+','id'), (None,None)), ['1']) 670 ae(filt(None, {'id': '1'}, ('+','id'), (None,None)), ['1'])
666 671
667 def xtestFilteringString(self): 672 def testFilteringString(self):
668 ae, filt = self.filteringSetup() 673 ae, filt = self.filteringSetup()
669 ae(filt(None, {'title': 'issue one'}, ('+','id'), (None,None)), ['1']) 674 ae(filt(None, {'title': 'issue one'}, ('+','id'), (None,None)), ['1'])
670 ae(filt(None, {'title': 'issue'}, ('+','id'), (None,None)), 675 ae(filt(None, {'title': 'issue'}, ('+','id'), (None,None)),
671 ['1','2','3']) 676 ['1','2','3'])
672 677
673 def xtestFilteringLink(self): 678 def testFilteringLink(self):
674 ae, filt = self.filteringSetup() 679 ae, filt = self.filteringSetup()
675 ae(filt(None, {'status': '1'}, ('+','id'), (None,None)), ['2','3']) 680 ae(filt(None, {'status': '1'}, ('+','id'), (None,None)), ['2','3'])
676 681
677 def xtestFilteringMultilink(self): 682 def testFilteringMultilink(self):
678 ae, filt = self.filteringSetup() 683 ae, filt = self.filteringSetup()
679 ae(filt(None, {'nosy': '2'}, ('+','id'), (None,None)), ['3']) 684 ae(filt(None, {'nosy': '2'}, ('+','id'), (None,None)), ['3'])
680 ae(filt(None, {'nosy': '-1'}, ('+','id'), (None,None)), ['1', '2']) 685 ae(filt(None, {'nosy': '-1'}, ('+','id'), (None,None)), ['1', '2'])
681 686
682 def xtestFilteringMany(self): 687 def testFilteringMany(self):
683 ae, filt = self.filteringSetup() 688 ae, filt = self.filteringSetup()
684 ae(filt(None, {'nosy': '2', 'status': '1'}, ('+','id'), (None,None)), 689 ae(filt(None, {'nosy': '2', 'status': '1'}, ('+','id'), (None,None)),
685 ['3']) 690 ['3'])
686 691
687 def xtestFilteringRange(self): 692 def testFilteringRange(self):
688 ae, filt = self.filteringSetup() 693 ae, filt = self.filteringSetup()
689 ae(filt(None, {'deadline': 'from 2003-02-10 to 2003-02-23'}), ['2']) 694 ae(filt(None, {'deadline': 'from 2003-02-10 to 2003-02-23'}), ['2'])
690 ae(filt(None, {'deadline': '2003-02-10; 2003-02-23'}), ['2']) 695 ae(filt(None, {'deadline': '2003-02-10; 2003-02-23'}), ['2'])
691 ae(filt(None, {'deadline': '; 2003-02-16'}), ['1']) 696 ae(filt(None, {'deadline': '; 2003-02-16'}), ['1'])
692 # Lets assume people won't invent a time machine, otherwise this test 697 # Lets assume people won't invent a time machine, otherwise this test
693 # may fail :) 698 # may fail :)
694 ae(filt(None, {'deadline': 'from 2003-02-16'}), ['2', '3']) 699 ae(filt(None, {'deadline': 'from 2003-02-16'}), ['2', '3'])
695 ae(filt(None, {'deadline': '2003-02-16'}), ['2', '3']) 700 ae(filt(None, {'deadline': '2003-02-16'}), ['2', '3'])
696 701
697 def xtestFilteringIntervalSort(self): 702 def testFilteringIntervalSort(self):
698 ae, filt = self.filteringSetup() 703 ae, filt = self.filteringSetup()
699 # ascending should sort None, 1:10, 1d 704 # ascending should sort None, 1:10, 1d
700 ae(filt(None, {}, ('+','foo'), (None,None)), ['3', '1', '2']) 705 ae(filt(None, {}, ('+','foo'), (None,None)), ['3', '1', '2'])
701 # descending should sort 1d, 1:10, None 706 # descending should sort 1d, 1:10, None
702 ae(filt(None, {}, ('-','foo'), (None,None)), ['2', '1', '3']) 707 ae(filt(None, {}, ('-','foo'), (None,None)), ['2', '1', '3'])
715 setupSchema(db, 1, anydbm) 720 setupSchema(db, 1, anydbm)
716 db.close() 721 db.close()
717 self.db = anydbm.Database(config) 722 self.db = anydbm.Database(config)
718 setupSchema(self.db, 0, anydbm) 723 setupSchema(self.db, 0, anydbm)
719 724
720 def xtestExceptions(self): 725 def testExceptions(self):
721 # this tests the exceptions that should be raised 726 # this tests the exceptions that should be raised
722 ar = self.assertRaises 727 ar = self.assertRaises
723 728
724 # this tests the exceptions that should be raised 729 # this tests the exceptions that should be raised
725 ar(DatabaseError, self.db.status.create, name="foo") 730 ar(DatabaseError, self.db.status.create, name="foo")
840 shutil.rmtree(config.DATABASE) 845 shutil.rmtree(config.DATABASE)
841 os.makedirs(config.DATABASE + '/files') 846 os.makedirs(config.DATABASE + '/files')
842 self.db = metakit.Database(config, 'admin') 847 self.db = metakit.Database(config, 'admin')
843 setupSchema(self.db, 1, metakit) 848 setupSchema(self.db, 1, metakit)
844 849
845 def xtestTransactions(self): 850 def testTransactions(self):
846 # remember the number of items we started 851 # remember the number of items we started
847 num_issues = len(self.db.issue.list()) 852 num_issues = len(self.db.issue.list())
848 self.db.issue.create(title="don't commit me!", status='1') 853 self.db.issue.create(title="don't commit me!", status='1')
849 self.assertNotEqual(num_issues, len(self.db.issue.list())) 854 self.assertNotEqual(num_issues, len(self.db.issue.list()))
850 self.db.rollback() 855 self.db.rollback()
871 self.db.rollback() 876 self.db.rollback()
872 num_rfiles2 = len(os.listdir(self.db.config.DATABASE + '/files/file/0')) 877 num_rfiles2 = len(os.listdir(self.db.config.DATABASE + '/files/file/0'))
873 self.assertEqual(num_files2, len(self.db.file.list())) 878 self.assertEqual(num_files2, len(self.db.file.list()))
874 self.assertEqual(num_rfiles2, num_rfiles-1) 879 self.assertEqual(num_rfiles2, num_rfiles-1)
875 880
876 def xtestBooleanUnset(self): 881 def testBooleanUnset(self):
877 # XXX: metakit can't unset Booleans :( 882 # XXX: metakit can't unset Booleans :(
878 nid = self.db.user.create(username='foo', assignable=1) 883 nid = self.db.user.create(username='foo', assignable=1)
879 self.db.user.set(nid, assignable=None) 884 self.db.user.set(nid, assignable=None)
880 self.assertEqual(self.db.user.get(nid, "assignable"), 0) 885 self.assertEqual(self.db.user.get(nid, "assignable"), 0)
881 886
882 def xtestNumberUnset(self): 887 def testNumberUnset(self):
883 # XXX: metakit can't unset Numbers :( 888 # XXX: metakit can't unset Numbers :(
884 nid = self.db.user.create(username='foo', age=1) 889 nid = self.db.user.create(username='foo', age=1)
885 self.db.user.set(nid, age=None) 890 self.db.user.set(nid, age=None)
886 self.assertEqual(self.db.user.get(nid, "age"), 0) 891 self.assertEqual(self.db.user.get(nid, "age"), 0)
887 892

Roundup Issue Tracker: http://roundup-tracker.org/