comparison test/test_db.py @ 1392:083cce7840aa

Metakit now passes all unit tests! w00t! (except the Number/Boolean unset) - fixed bug in metakit unlink journalling - metakit now handles "unset" for most types (not Number and Boolean) - fixed bug in metakit search-by-ID
author Richard Jones <richard@users.sourceforge.net>
date Mon, 20 Jan 2003 23:03:41 +0000
parents 5d1fe5d51c12
children 6883852e9b15
comparison
equal deleted inserted replaced
1389:7f9bd5b1e798 1392:083cce7840aa
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.67 2003-01-14 10:52:05 richard Exp $ 18 # $Id: test_db.py,v 1.68 2003-01-20 23:03:41 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 23 Interval, DatabaseError, Boolean, Number
183 def testBooleanChange(self): 183 def testBooleanChange(self):
184 userid = self.db.user.create(username='foo', assignable=1) 184 userid = self.db.user.create(username='foo', assignable=1)
185 self.assertEqual(1, self.db.user.get(userid, 'assignable')) 185 self.assertEqual(1, self.db.user.get(userid, 'assignable'))
186 self.db.user.set(userid, assignable=0) 186 self.db.user.set(userid, assignable=0)
187 self.assertEqual(self.db.user.get(userid, 'assignable'), 0) 187 self.assertEqual(self.db.user.get(userid, 'assignable'), 0)
188 self.db.user.set(userid, assignable=None) 188
189 self.assertEqual(self.db.user.get('1', "assignable"), None) 189 def testBooleanUnset(self):
190 nid = self.db.user.create(username='foo', assignable=1)
191 self.db.user.set(nid, assignable=None)
192 self.assertEqual(self.db.user.get(nid, "assignable"), None)
190 193
191 def testNumberChange(self): 194 def testNumberChange(self):
192 nid = self.db.user.create(username='foo', age=1) 195 nid = self.db.user.create(username='foo', age=1)
193 self.assertEqual(1, self.db.user.get(nid, 'age')) 196 self.assertEqual(1, self.db.user.get(nid, 'age'))
194 self.db.user.set('1', age=3) 197 self.db.user.set(nid, age=3)
195 self.assertNotEqual(self.db.user.get('1', 'age'), 1) 198 self.assertNotEqual(self.db.user.get(nid, 'age'), 1)
196 self.db.user.set('1', age=1.0) 199 self.db.user.set(nid, age=1.0)
197 self.db.user.set('1', age=None) 200
198 self.assertEqual(self.db.user.get('1', "age"), None) 201 def testNumberUnset(self):
202 nid = self.db.user.create(username='foo', age=1)
203 self.db.user.set(nid, age=None)
204 self.assertEqual(self.db.user.get(nid, "age"), None)
199 205
200 def testKeyValue(self): 206 def testKeyValue(self):
201 newid = self.db.user.create(username="spam") 207 newid = self.db.user.create(username="spam")
202 self.assertEqual(self.db.user.lookup('spam'), newid) 208 self.assertEqual(self.db.user.lookup('spam'), newid)
203 self.db.commit() 209 self.db.commit()
384 ar(ValueError, self.db.issue.set, id, title='foo', status='1', 390 ar(ValueError, self.db.issue.set, id, title='foo', status='1',
385 nosy=[1]) 391 nosy=[1])
386 # invalid multilink index 392 # invalid multilink index
387 ar(IndexError, self.db.issue.set, id, title='foo', status='1', 393 ar(IndexError, self.db.issue.set, id, title='foo', status='1',
388 nosy=['10']) 394 nosy=['10'])
395 # NOTE: the following increment the username to avoid problems
396 # within metakit's backend (it creates the node, and then sets the
397 # info, so the create (and by a fluke the username set) go through
398 # before the age/assignable/etc. set, which raises the exception)
389 # invalid number value 399 # invalid number value
390 ar(TypeError, self.db.user.create, username='foo', age='a') 400 ar(TypeError, self.db.user.create, username='foo', age='a')
391 # invalid boolean value 401 # invalid boolean value
392 ar(TypeError, self.db.user.create, username='foo', assignable='true') 402 ar(TypeError, self.db.user.create, username='foo2', assignable='true')
393 nid = self.db.user.create(username='foo') 403 nid = self.db.user.create(username='foo3')
394 # invalid number value 404 # invalid number value
395 ar(TypeError, self.db.user.set, nid, username='foo', age='a') 405 ar(TypeError, self.db.user.set, nid, age='a')
396 # invalid boolean value 406 # invalid boolean value
397 ar(TypeError, self.db.user.set, nid, username='foo', assignable='true') 407 ar(TypeError, self.db.user.set, nid, assignable='true')
398 408
399 def testJournals(self): 409 def testJournals(self):
400 self.db.user.create(username="mary") 410 self.db.user.create(username="mary")
401 self.db.user.create(username="pete") 411 self.db.user.create(username="pete")
402 self.db.issue.create(title="spam", status='1') 412 self.db.issue.create(title="spam", status='1')
806 self.db.rollback() 816 self.db.rollback()
807 num_rfiles2 = len(os.listdir(self.db.config.DATABASE + '/files/file/0')) 817 num_rfiles2 = len(os.listdir(self.db.config.DATABASE + '/files/file/0'))
808 self.assertEqual(num_files2, len(self.db.file.list())) 818 self.assertEqual(num_files2, len(self.db.file.list()))
809 self.assertEqual(num_rfiles2, num_rfiles-1) 819 self.assertEqual(num_rfiles2, num_rfiles-1)
810 820
821 def testBooleanUnset(self):
822 # XXX: metakit can't unset Booleans :(
823 nid = self.db.user.create(username='foo', assignable=1)
824 self.db.user.set(nid, assignable=None)
825 self.assertEqual(self.db.user.get(nid, "assignable"), 0)
826
827 def testNumberUnset(self):
828 # XXX: metakit can't unset Numbers :(
829 nid = self.db.user.create(username='foo', age=1)
830 self.db.user.set(nid, age=None)
831 self.assertEqual(self.db.user.get(nid, "age"), 0)
832
811 class metakitReadOnlyDBTestCase(anydbmReadOnlyDBTestCase): 833 class metakitReadOnlyDBTestCase(anydbmReadOnlyDBTestCase):
812 def setUp(self): 834 def setUp(self):
813 from roundup.backends import metakit 835 from roundup.backends import metakit
814 import weakref 836 import weakref
815 metakit._instances = weakref.WeakValueDictionary() 837 metakit._instances = weakref.WeakValueDictionary()

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