comparison test/db_test_base.py @ 2728:572746c94537 maint-0.7

merge from HEAD
author Richard Jones <richard@users.sourceforge.net>
date Fri, 08 Oct 2004 00:21:31 +0000
parents b3ea6bad36b7
children 49d1fd44881a
comparison
equal deleted inserted replaced
2725:26b20d0b42fa 2728:572746c94537
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: db_test_base.py,v 1.27.2.10 2004-07-20 23:27:02 richard Exp $ 18 # $Id: db_test_base.py,v 1.27.2.11 2004-10-08 00:21:31 richard Exp $
19 19
20 import unittest, os, shutil, errno, imp, sys, time, pprint 20 import unittest, os, shutil, errno, imp, sys, time, pprint
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
1198 self.db.getjournal('a', aid) 1198 self.db.getjournal('a', aid)
1199 self.db.getjournal('b', bid) 1199 self.db.getjournal('b', bid)
1200 1200
1201 def init_amod(self): 1201 def init_amod(self):
1202 self.db = self.module.Database(config, 'admin') 1202 self.db = self.module.Database(config, 'admin')
1203 a = self.module.Class(self.db, "a", name=String(), fooz=String()) 1203 a = self.module.Class(self.db, "a", name=String(), newstr=String(),
1204 newint=Interval(), newnum=Number(), newbool=Boolean(),
1205 newdate=Date())
1204 a.setkey("name") 1206 a.setkey("name")
1205 b = self.module.Class(self.db, "b", name=String()) 1207 b = self.module.Class(self.db, "b", name=String())
1206 b.setkey("name") 1208 b.setkey("name")
1207 self.db.post_init() 1209 self.db.post_init()
1208 1210
1215 self.db.commit(); self.db.close() 1217 self.db.commit(); self.db.close()
1216 1218
1217 # modify "a" schema 1219 # modify "a" schema
1218 self.init_amod() 1220 self.init_amod()
1219 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') 1221 self.assertEqual(self.db.a.get(aid, 'name'), 'apple')
1220 self.assertEqual(self.db.a.get(aid, 'fooz'), None) 1222 self.assertEqual(self.db.a.get(aid, 'newstr'), None)
1223 self.assertEqual(self.db.a.get(aid, 'newint'), None)
1224 self.assertEqual(self.db.a.get(aid, 'newnum'), None)
1225 self.assertEqual(self.db.a.get(aid, 'newbool'), None)
1226 self.assertEqual(self.db.a.get(aid, 'newdate'), None)
1221 self.assertEqual(self.db.b.get(aid, 'name'), 'bear') 1227 self.assertEqual(self.db.b.get(aid, 'name'), 'bear')
1222 aid2 = self.db.a.create(name='aardvark', fooz='booz') 1228 aid2 = self.db.a.create(name='aardvark', newstr='booz')
1223 self.db.commit(); self.db.close() 1229 self.db.commit(); self.db.close()
1224 1230
1225 # test 1231 # test
1226 self.init_amod() 1232 self.init_amod()
1227 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') 1233 self.assertEqual(self.db.a.get(aid, 'name'), 'apple')
1228 self.assertEqual(self.db.a.get(aid, 'fooz'), None) 1234 self.assertEqual(self.db.a.get(aid, 'newstr'), None)
1229 self.assertEqual(self.db.b.get(aid, 'name'), 'bear') 1235 self.assertEqual(self.db.b.get(aid, 'name'), 'bear')
1230 self.assertEqual(self.db.a.get(aid2, 'name'), 'aardvark') 1236 self.assertEqual(self.db.a.get(aid2, 'name'), 'aardvark')
1231 self.assertEqual(self.db.a.get(aid2, 'fooz'), 'booz') 1237 self.assertEqual(self.db.a.get(aid2, 'newstr'), 'booz')
1232 1238
1233 # confirm journal's ok 1239 # confirm journal's ok
1234 self.db.getjournal('a', aid) 1240 self.db.getjournal('a', aid)
1235 self.db.getjournal('a', aid2) 1241 self.db.getjournal('a', aid2)
1236 1242
1237 def init_amodkey(self): 1243 def init_amodkey(self):
1238 self.db = self.module.Database(config, 'admin') 1244 self.db = self.module.Database(config, 'admin')
1239 a = self.module.Class(self.db, "a", name=String(), fooz=String()) 1245 a = self.module.Class(self.db, "a", name=String(), newstr=String())
1240 a.setkey("fooz") 1246 a.setkey("newstr")
1241 b = self.module.Class(self.db, "b", name=String()) 1247 b = self.module.Class(self.db, "b", name=String())
1242 b.setkey("name") 1248 b.setkey("name")
1243 self.db.post_init() 1249 self.db.post_init()
1244 1250
1245 def test_changeClassKey(self): 1251 def test_changeClassKey(self):
1246 self.init_amod() 1252 self.init_amod()
1247 aid = self.db.a.create(name='apple') 1253 aid = self.db.a.create(name='apple')
1248 self.assertEqual(self.db.a.lookup('apple'), aid) 1254 self.assertEqual(self.db.a.lookup('apple'), aid)
1249 self.db.commit(); self.db.close() 1255 self.db.commit(); self.db.close()
1250 1256
1251 # change the key to fooz on a 1257 # change the key to newstr on a
1252 self.init_amodkey() 1258 self.init_amodkey()
1253 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') 1259 self.assertEqual(self.db.a.get(aid, 'name'), 'apple')
1254 self.assertEqual(self.db.a.get(aid, 'fooz'), None) 1260 self.assertEqual(self.db.a.get(aid, 'newstr'), None)
1255 self.assertRaises(KeyError, self.db.a.lookup, 'apple') 1261 self.assertRaises(KeyError, self.db.a.lookup, 'apple')
1256 aid2 = self.db.a.create(name='aardvark', fooz='booz') 1262 aid2 = self.db.a.create(name='aardvark', newstr='booz')
1257 self.db.commit(); self.db.close() 1263 self.db.commit(); self.db.close()
1258 1264
1259 # check 1265 # check
1260 self.init_amodkey() 1266 self.init_amodkey()
1261 self.assertEqual(self.db.a.lookup('booz'), aid2) 1267 self.assertEqual(self.db.a.lookup('booz'), aid2)
1264 self.db.getjournal('a', aid) 1270 self.db.getjournal('a', aid)
1265 1271
1266 def init_amodml(self): 1272 def init_amodml(self):
1267 self.db = self.module.Database(config, 'admin') 1273 self.db = self.module.Database(config, 'admin')
1268 a = self.module.Class(self.db, "a", name=String(), 1274 a = self.module.Class(self.db, "a", name=String(),
1269 fooz=Multilink('a')) 1275 newml=Multilink('a'))
1270 a.setkey('name') 1276 a.setkey('name')
1271 self.db.post_init() 1277 self.db.post_init()
1272 1278
1273 def test_makeNewMultilink(self): 1279 def test_makeNewMultilink(self):
1274 self.init_a() 1280 self.init_a()
1276 self.assertEqual(self.db.a.lookup('apple'), aid) 1282 self.assertEqual(self.db.a.lookup('apple'), aid)
1277 self.db.commit(); self.db.close() 1283 self.db.commit(); self.db.close()
1278 1284
1279 # add a multilink prop 1285 # add a multilink prop
1280 self.init_amodml() 1286 self.init_amodml()
1281 bid = self.db.a.create(name='bear', fooz=[aid]) 1287 bid = self.db.a.create(name='bear', newml=[aid])
1282 self.assertEqual(self.db.a.find(fooz=aid), [bid]) 1288 self.assertEqual(self.db.a.find(newml=aid), [bid])
1283 self.assertEqual(self.db.a.lookup('apple'), aid) 1289 self.assertEqual(self.db.a.lookup('apple'), aid)
1284 self.db.commit(); self.db.close() 1290 self.db.commit(); self.db.close()
1285 1291
1286 # check 1292 # check
1287 self.init_amodml() 1293 self.init_amodml()
1288 self.assertEqual(self.db.a.find(fooz=aid), [bid]) 1294 self.assertEqual(self.db.a.find(newml=aid), [bid])
1289 self.assertEqual(self.db.a.lookup('apple'), aid) 1295 self.assertEqual(self.db.a.lookup('apple'), aid)
1290 self.assertEqual(self.db.a.lookup('bear'), bid) 1296 self.assertEqual(self.db.a.lookup('bear'), bid)
1291 1297
1292 # confirm journal's ok 1298 # confirm journal's ok
1293 self.db.getjournal('a', aid) 1299 self.db.getjournal('a', aid)
1295 1301
1296 def test_removeMultilink(self): 1302 def test_removeMultilink(self):
1297 # add a multilink prop 1303 # add a multilink prop
1298 self.init_amodml() 1304 self.init_amodml()
1299 aid = self.db.a.create(name='apple') 1305 aid = self.db.a.create(name='apple')
1300 bid = self.db.a.create(name='bear', fooz=[aid]) 1306 bid = self.db.a.create(name='bear', newml=[aid])
1301 self.assertEqual(self.db.a.find(fooz=aid), [bid]) 1307 self.assertEqual(self.db.a.find(newml=aid), [bid])
1302 self.assertEqual(self.db.a.lookup('apple'), aid) 1308 self.assertEqual(self.db.a.lookup('apple'), aid)
1303 self.assertEqual(self.db.a.lookup('bear'), bid) 1309 self.assertEqual(self.db.a.lookup('bear'), bid)
1304 self.db.commit(); self.db.close() 1310 self.db.commit(); self.db.close()
1305 1311
1306 # remove the multilink 1312 # remove the multilink

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