comparison test/db_test_base.py @ 2196:85954067e496

mysql and postgresql schema mutation now handle added Multilinks; fixed test too
author Richard Jones <richard@users.sourceforge.net>
date Thu, 08 Apr 2004 00:40:20 +0000
parents c52a931879c4
children c3baae58d56f
comparison
equal deleted inserted replaced
2195:638600b0d682 2196:85954067e496
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.21 2004-04-05 07:13:10 richard Exp $ 18 # $Id: db_test_base.py,v 1.22 2004-04-08 00:40:20 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
1073 1073
1074 def init_ab(self): 1074 def init_ab(self):
1075 self.db = self.module.Database(config, 'admin') 1075 self.db = self.module.Database(config, 'admin')
1076 a = self.module.Class(self.db, "a", name=String()) 1076 a = self.module.Class(self.db, "a", name=String())
1077 a.setkey("name") 1077 a.setkey("name")
1078 b = self.module.Class(self.db, "b", name=String()) 1078 b = self.module.Class(self.db, "b", name=String(),
1079 fooz=Multilink('a'))
1079 b.setkey("name") 1080 b.setkey("name")
1080 self.db.post_init() 1081 self.db.post_init()
1081 1082
1082 def test_addNewClass(self): 1083 def test_addNewClass(self):
1083 self.init_a() 1084 self.init_a()
1089 self.db.commit(); self.db.close() 1090 self.db.commit(); self.db.close()
1090 1091
1091 # add a new class to the schema and check creation of new items 1092 # add a new class to the schema and check creation of new items
1092 # (and existence of old ones) 1093 # (and existence of old ones)
1093 self.init_ab() 1094 self.init_ab()
1094 bid = self.db.b.create(name='bear') 1095 bid = self.db.b.create(name='bear', fooz=[aid])
1095 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') 1096 self.assertEqual(self.db.a.get(aid, 'name'), 'apple')
1096 self.db.commit() 1097 self.db.commit()
1097 self.db.close() 1098 self.db.close()
1098 1099
1099 # now check we can recall the added class' items 1100 # now check we can recall the added class' items
1100 self.init_ab() 1101 self.init_ab()
1101 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') 1102 self.assertEqual(self.db.a.get(aid, 'name'), 'apple')
1102 self.assertEqual(self.db.a.lookup('apple'), aid) 1103 self.assertEqual(self.db.a.lookup('apple'), aid)
1103 self.assertEqual(self.db.b.get(bid, 'name'), 'bear') 1104 self.assertEqual(self.db.b.get(bid, 'name'), 'bear')
1105 self.assertEqual(self.db.b.get(bid, 'fooz'), [aid])
1104 self.assertEqual(self.db.b.lookup('bear'), bid) 1106 self.assertEqual(self.db.b.lookup('bear'), bid)
1105 1107
1106 # confirm journal's ok 1108 # confirm journal's ok
1107 self.db.getjournal('a', aid) 1109 self.db.getjournal('a', aid)
1108 self.db.getjournal('b', bid) 1110 self.db.getjournal('b', bid)
1172 # confirm journal's ok 1174 # confirm journal's ok
1173 self.db.getjournal('a', aid) 1175 self.db.getjournal('a', aid)
1174 1176
1175 def init_ml(self): 1177 def init_ml(self):
1176 self.db = self.module.Database(config, 'admin') 1178 self.db = self.module.Database(config, 'admin')
1177 a = self.module.Class(self.db, "a", name=String()) 1179 a = self.module.Class(self.db, "a", name=String(),
1180 fooz=Multilink('a'))
1178 a.setkey('name') 1181 a.setkey('name')
1179 b = self.module.Class(self.db, "b", name=String(),
1180 fooz=Multilink('a'))
1181 b.setkey("name")
1182 self.db.post_init() 1182 self.db.post_init()
1183 1183
1184 def test_makeNewMultilink(self): 1184 def test_makeNewMultilink(self):
1185 self.init_a() 1185 self.init_a()
1186 aid = self.db.a.create(name='apple') 1186 aid = self.db.a.create(name='apple')
1187 self.assertEqual(self.db.a.lookup('apple'), aid) 1187 self.assertEqual(self.db.a.lookup('apple'), aid)
1188 self.db.commit(); self.db.close() 1188 self.db.commit(); self.db.close()
1189 1189
1190 # add a multilink prop 1190 # add a multilink prop
1191 self.init_ml() 1191 self.init_ml()
1192 bid = self.db.b.create(name='bear', fooz=[aid]) 1192 bid = self.db.a.create(name='bear', fooz=[aid])
1193 self.assertEqual(self.db.b.find(fooz=aid), [bid]) 1193 self.assertEqual(self.db.a.find(fooz=aid), [bid])
1194 self.assertEqual(self.db.a.lookup('apple'), aid) 1194 self.assertEqual(self.db.a.lookup('apple'), aid)
1195 self.db.commit(); self.db.close() 1195 self.db.commit(); self.db.close()
1196 1196
1197 # check 1197 # check
1198 self.init_ml() 1198 self.init_ml()
1199 self.assertEqual(self.db.b.find(fooz=aid), [bid]) 1199 self.assertEqual(self.db.a.find(fooz=aid), [bid])
1200 self.assertEqual(self.db.a.lookup('apple'), aid) 1200 self.assertEqual(self.db.a.lookup('apple'), aid)
1201 self.assertEqual(self.db.b.lookup('bear'), bid) 1201 self.assertEqual(self.db.a.lookup('bear'), bid)
1202 1202
1203 # confirm journal's ok 1203 # confirm journal's ok
1204 self.db.getjournal('a', aid) 1204 self.db.getjournal('a', aid)
1205 self.db.getjournal('b', bid) 1205 self.db.getjournal('a', bid)
1206 1206
1207 def test_removeMultilink(self): 1207 def test_removeMultilink(self):
1208 # add a multilink prop 1208 # add a multilink prop
1209 self.init_ml() 1209 self.init_ml()
1210 aid = self.db.a.create(name='apple') 1210 aid = self.db.a.create(name='apple')

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