Mercurial > p > roundup > code
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') |
