Code

*** empty log message ***
[roundup.git] / test / db_test_base.py
index 14a9e38e4514a003675967123bb0f58e26033482..57ad7c95bf60eeecd3c049fd47330a5a68c2676d 100644 (file)
@@ -15,7 +15,7 @@
 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 # 
-# $Id: db_test_base.py,v 1.20 2004-03-24 04:57:25 richard Exp $ 
+# $Id: db_test_base.py,v 1.24 2004-04-08 00:43:23 richard Exp $ 
 
 import unittest, os, shutil, errno, imp, sys, time, pprint
 
@@ -892,6 +892,11 @@ class DBTest(MyTestCase):
         # descending should sort 1d, 1:10, None
         ae(filt(None, {}, ('-','foo'), (None,None)), ['2', '1', '4', '3'])
 
+    def testFilteringMultilinkSort(self):
+        ae, filt = self.filteringSetup()
+        ae(filt(None, {}, ('+','nosy'), (None,None)), ['1', '2', '4', '3'])
+        ae(filt(None, {}, ('-','nosy'), (None,None)), ['3', '4', '1', '2'])
+
 # XXX add sorting tests for other types
 # XXX test auditors and reactors
 
@@ -1070,7 +1075,8 @@ class SchemaTest(MyTestCase):
         self.db = self.module.Database(config, 'admin')
         a = self.module.Class(self.db, "a", name=String())
         a.setkey("name")
-        b = self.module.Class(self.db, "b", name=String())
+        b = self.module.Class(self.db, "b", name=String(),
+            fooz=Multilink('a'))
         b.setkey("name")
         self.db.post_init()
 
@@ -1086,7 +1092,7 @@ class SchemaTest(MyTestCase):
         # add a new class to the schema and check creation of new items
         # (and existence of old ones)
         self.init_ab()
-        bid = self.db.b.create(name='bear')
+        bid = self.db.b.create(name='bear', fooz=[aid])
         self.assertEqual(self.db.a.get(aid, 'name'), 'apple')
         self.db.commit()
         self.db.close()
@@ -1096,6 +1102,7 @@ class SchemaTest(MyTestCase):
         self.assertEqual(self.db.a.get(aid, 'name'), 'apple')
         self.assertEqual(self.db.a.lookup('apple'), aid)
         self.assertEqual(self.db.b.get(bid, 'name'), 'bear')
+        self.assertEqual(self.db.b.get(bid, 'fooz'), [aid])
         self.assertEqual(self.db.b.lookup('bear'), bid)
 
         # confirm journal's ok
@@ -1167,13 +1174,11 @@ class SchemaTest(MyTestCase):
         # confirm journal's ok
         self.db.getjournal('a', aid)
 
-    def init_ml(self):
+    def init_amodml(self):
         self.db = self.module.Database(config, 'admin')
-        a = self.module.Class(self.db, "a", name=String())
-        a.setkey('name')
-        b = self.module.Class(self.db, "b", name=String(),
+        a = self.module.Class(self.db, "a", name=String(),
             fooz=Multilink('a'))
-        b.setkey("name")
+        a.setkey('name')
         self.db.post_init()
 
     def test_makeNewMultilink(self):
@@ -1183,45 +1188,45 @@ class SchemaTest(MyTestCase):
         self.db.commit(); self.db.close()
 
         # add a multilink prop
-        self.init_ml()
-        bid = self.db.b.create(name='bear', fooz=[aid])
-        self.assertEqual(self.db.b.find(fooz=aid), [bid])
+        self.init_amodml()
+        bid = self.db.a.create(name='bear', fooz=[aid])
+        self.assertEqual(self.db.a.find(fooz=aid), [bid])
         self.assertEqual(self.db.a.lookup('apple'), aid)
         self.db.commit(); self.db.close()
 
         # check
-        self.init_ml()
-        self.assertEqual(self.db.b.find(fooz=aid), [bid])
+        self.init_amodml()
+        self.assertEqual(self.db.a.find(fooz=aid), [bid])
         self.assertEqual(self.db.a.lookup('apple'), aid)
-        self.assertEqual(self.db.b.lookup('bear'), bid)
+        self.assertEqual(self.db.a.lookup('bear'), bid)
 
         # confirm journal's ok
         self.db.getjournal('a', aid)
-        self.db.getjournal('b', bid)
+        self.db.getjournal('a', bid)
 
     def test_removeMultilink(self):
         # add a multilink prop
-        self.init_ml()
+        self.init_amodml()
         aid = self.db.a.create(name='apple')
-        bid = self.db.b.create(name='bear', fooz=[aid])
-        self.assertEqual(self.db.b.find(fooz=aid), [bid])
+        bid = self.db.a.create(name='bear', fooz=[aid])
+        self.assertEqual(self.db.a.find(fooz=aid), [bid])
         self.assertEqual(self.db.a.lookup('apple'), aid)
-        self.assertEqual(self.db.b.lookup('bear'), bid)
+        self.assertEqual(self.db.a.lookup('bear'), bid)
         self.db.commit(); self.db.close()
 
         # remove the multilink
-        self.init_ab()
+        self.init_a()
         self.assertEqual(self.db.a.lookup('apple'), aid)
-        self.assertEqual(self.db.b.lookup('bear'), bid)
+        self.assertEqual(self.db.a.lookup('bear'), bid)
 
         # confirm journal's ok
         self.db.getjournal('a', aid)
-        self.db.getjournal('b', bid)
+        self.db.getjournal('a', bid)
 
     def test_removeClass(self):
-        self.init_ml()
+        self.init_ab()
         aid = self.db.a.create(name='apple')
-        bid = self.db.b.create(name='bear', fooz=[aid])
+        bid = self.db.b.create(name='bear')
         self.db.commit(); self.db.close()
 
         # drop the b class