comparison test/db_test_base.py @ 2727:93e2e5b55a3c

new Interval props weren't created properly in rdbms (also, fix logging datestamp)
author Richard Jones <richard@users.sourceforge.net>
date Fri, 08 Oct 2004 00:18:28 +0000
parents c26716932ffe
children d8eb00a54119
comparison
equal deleted inserted replaced
2726:aa95c79cff8b 2727:93e2e5b55a3c
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.47 2004-09-28 10:29:37 a1s Exp $ 18 # $Id: db_test_base.py,v 1.48 2004-10-08 00:18:28 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
1199 self.db.getjournal('a', aid) 1199 self.db.getjournal('a', aid)
1200 self.db.getjournal('b', bid) 1200 self.db.getjournal('b', bid)
1201 1201
1202 def init_amod(self): 1202 def init_amod(self):
1203 self.db = self.module.Database(config, 'admin') 1203 self.db = self.module.Database(config, 'admin')
1204 a = self.module.Class(self.db, "a", name=String(), fooz=String()) 1204 a = self.module.Class(self.db, "a", name=String(), newstr=String(),
1205 newint=Interval(), newnum=Number(), newbool=Boolean(),
1206 newdate=Date())
1205 a.setkey("name") 1207 a.setkey("name")
1206 b = self.module.Class(self.db, "b", name=String()) 1208 b = self.module.Class(self.db, "b", name=String())
1207 b.setkey("name") 1209 b.setkey("name")
1208 self.db.post_init() 1210 self.db.post_init()
1209 1211
1216 self.db.commit(); self.db.close() 1218 self.db.commit(); self.db.close()
1217 1219
1218 # modify "a" schema 1220 # modify "a" schema
1219 self.init_amod() 1221 self.init_amod()
1220 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') 1222 self.assertEqual(self.db.a.get(aid, 'name'), 'apple')
1221 self.assertEqual(self.db.a.get(aid, 'fooz'), None) 1223 self.assertEqual(self.db.a.get(aid, 'newstr'), None)
1224 self.assertEqual(self.db.a.get(aid, 'newint'), None)
1225 self.assertEqual(self.db.a.get(aid, 'newnum'), None)
1226 self.assertEqual(self.db.a.get(aid, 'newbool'), None)
1227 self.assertEqual(self.db.a.get(aid, 'newdate'), None)
1222 self.assertEqual(self.db.b.get(aid, 'name'), 'bear') 1228 self.assertEqual(self.db.b.get(aid, 'name'), 'bear')
1223 aid2 = self.db.a.create(name='aardvark', fooz='booz') 1229 aid2 = self.db.a.create(name='aardvark', newstr='booz')
1224 self.db.commit(); self.db.close() 1230 self.db.commit(); self.db.close()
1225 1231
1226 # test 1232 # test
1227 self.init_amod() 1233 self.init_amod()
1228 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') 1234 self.assertEqual(self.db.a.get(aid, 'name'), 'apple')
1229 self.assertEqual(self.db.a.get(aid, 'fooz'), None) 1235 self.assertEqual(self.db.a.get(aid, 'newstr'), None)
1230 self.assertEqual(self.db.b.get(aid, 'name'), 'bear') 1236 self.assertEqual(self.db.b.get(aid, 'name'), 'bear')
1231 self.assertEqual(self.db.a.get(aid2, 'name'), 'aardvark') 1237 self.assertEqual(self.db.a.get(aid2, 'name'), 'aardvark')
1232 self.assertEqual(self.db.a.get(aid2, 'fooz'), 'booz') 1238 self.assertEqual(self.db.a.get(aid2, 'newstr'), 'booz')
1233 1239
1234 # confirm journal's ok 1240 # confirm journal's ok
1235 self.db.getjournal('a', aid) 1241 self.db.getjournal('a', aid)
1236 self.db.getjournal('a', aid2) 1242 self.db.getjournal('a', aid2)
1237 1243
1238 def init_amodkey(self): 1244 def init_amodkey(self):
1239 self.db = self.module.Database(config, 'admin') 1245 self.db = self.module.Database(config, 'admin')
1240 a = self.module.Class(self.db, "a", name=String(), fooz=String()) 1246 a = self.module.Class(self.db, "a", name=String(), newstr=String())
1241 a.setkey("fooz") 1247 a.setkey("newstr")
1242 b = self.module.Class(self.db, "b", name=String()) 1248 b = self.module.Class(self.db, "b", name=String())
1243 b.setkey("name") 1249 b.setkey("name")
1244 self.db.post_init() 1250 self.db.post_init()
1245 1251
1246 def test_changeClassKey(self): 1252 def test_changeClassKey(self):
1247 self.init_amod() 1253 self.init_amod()
1248 aid = self.db.a.create(name='apple') 1254 aid = self.db.a.create(name='apple')
1249 self.assertEqual(self.db.a.lookup('apple'), aid) 1255 self.assertEqual(self.db.a.lookup('apple'), aid)
1250 self.db.commit(); self.db.close() 1256 self.db.commit(); self.db.close()
1251 1257
1252 # change the key to fooz on a 1258 # change the key to newstr on a
1253 self.init_amodkey() 1259 self.init_amodkey()
1254 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') 1260 self.assertEqual(self.db.a.get(aid, 'name'), 'apple')
1255 self.assertEqual(self.db.a.get(aid, 'fooz'), None) 1261 self.assertEqual(self.db.a.get(aid, 'newstr'), None)
1256 self.assertRaises(KeyError, self.db.a.lookup, 'apple') 1262 self.assertRaises(KeyError, self.db.a.lookup, 'apple')
1257 aid2 = self.db.a.create(name='aardvark', fooz='booz') 1263 aid2 = self.db.a.create(name='aardvark', newstr='booz')
1258 self.db.commit(); self.db.close() 1264 self.db.commit(); self.db.close()
1259 1265
1260 # check 1266 # check
1261 self.init_amodkey() 1267 self.init_amodkey()
1262 self.assertEqual(self.db.a.lookup('booz'), aid2) 1268 self.assertEqual(self.db.a.lookup('booz'), aid2)
1265 self.db.getjournal('a', aid) 1271 self.db.getjournal('a', aid)
1266 1272
1267 def init_amodml(self): 1273 def init_amodml(self):
1268 self.db = self.module.Database(config, 'admin') 1274 self.db = self.module.Database(config, 'admin')
1269 a = self.module.Class(self.db, "a", name=String(), 1275 a = self.module.Class(self.db, "a", name=String(),
1270 fooz=Multilink('a')) 1276 newml=Multilink('a'))
1271 a.setkey('name') 1277 a.setkey('name')
1272 self.db.post_init() 1278 self.db.post_init()
1273 1279
1274 def test_makeNewMultilink(self): 1280 def test_makeNewMultilink(self):
1275 self.init_a() 1281 self.init_a()
1277 self.assertEqual(self.db.a.lookup('apple'), aid) 1283 self.assertEqual(self.db.a.lookup('apple'), aid)
1278 self.db.commit(); self.db.close() 1284 self.db.commit(); self.db.close()
1279 1285
1280 # add a multilink prop 1286 # add a multilink prop
1281 self.init_amodml() 1287 self.init_amodml()
1282 bid = self.db.a.create(name='bear', fooz=[aid]) 1288 bid = self.db.a.create(name='bear', newml=[aid])
1283 self.assertEqual(self.db.a.find(fooz=aid), [bid]) 1289 self.assertEqual(self.db.a.find(newml=aid), [bid])
1284 self.assertEqual(self.db.a.lookup('apple'), aid) 1290 self.assertEqual(self.db.a.lookup('apple'), aid)
1285 self.db.commit(); self.db.close() 1291 self.db.commit(); self.db.close()
1286 1292
1287 # check 1293 # check
1288 self.init_amodml() 1294 self.init_amodml()
1289 self.assertEqual(self.db.a.find(fooz=aid), [bid]) 1295 self.assertEqual(self.db.a.find(newml=aid), [bid])
1290 self.assertEqual(self.db.a.lookup('apple'), aid) 1296 self.assertEqual(self.db.a.lookup('apple'), aid)
1291 self.assertEqual(self.db.a.lookup('bear'), bid) 1297 self.assertEqual(self.db.a.lookup('bear'), bid)
1292 1298
1293 # confirm journal's ok 1299 # confirm journal's ok
1294 self.db.getjournal('a', aid) 1300 self.db.getjournal('a', aid)
1296 1302
1297 def test_removeMultilink(self): 1303 def test_removeMultilink(self):
1298 # add a multilink prop 1304 # add a multilink prop
1299 self.init_amodml() 1305 self.init_amodml()
1300 aid = self.db.a.create(name='apple') 1306 aid = self.db.a.create(name='apple')
1301 bid = self.db.a.create(name='bear', fooz=[aid]) 1307 bid = self.db.a.create(name='bear', newml=[aid])
1302 self.assertEqual(self.db.a.find(fooz=aid), [bid]) 1308 self.assertEqual(self.db.a.find(newml=aid), [bid])
1303 self.assertEqual(self.db.a.lookup('apple'), aid) 1309 self.assertEqual(self.db.a.lookup('apple'), aid)
1304 self.assertEqual(self.db.a.lookup('bear'), bid) 1310 self.assertEqual(self.db.a.lookup('bear'), bid)
1305 self.db.commit(); self.db.close() 1311 self.db.commit(); self.db.close()
1306 1312
1307 # remove the multilink 1313 # remove the multilink

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