diff test/test_db.py @ 1392:083cce7840aa

Metakit now passes all unit tests! w00t! (except the Number/Boolean unset) - fixed bug in metakit unlink journalling - metakit now handles "unset" for most types (not Number and Boolean) - fixed bug in metakit search-by-ID
author Richard Jones <richard@users.sourceforge.net>
date Mon, 20 Jan 2003 23:03:41 +0000
parents 5d1fe5d51c12
children 6883852e9b15
line wrap: on
line diff
--- a/test/test_db.py	Sun Jan 19 23:15:17 2003 +0000
+++ b/test/test_db.py	Mon Jan 20 23:03:41 2003 +0000
@@ -15,7 +15,7 @@
 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 # 
-# $Id: test_db.py,v 1.67 2003-01-14 10:52:05 richard Exp $ 
+# $Id: test_db.py,v 1.68 2003-01-20 23:03:41 richard Exp $ 
 
 import unittest, os, shutil, time
 
@@ -185,17 +185,23 @@
         self.assertEqual(1, self.db.user.get(userid, 'assignable'))
         self.db.user.set(userid, assignable=0)
         self.assertEqual(self.db.user.get(userid, 'assignable'), 0)
-        self.db.user.set(userid, assignable=None)
-        self.assertEqual(self.db.user.get('1', "assignable"), None)
+
+    def testBooleanUnset(self):
+        nid = self.db.user.create(username='foo', assignable=1)
+        self.db.user.set(nid, assignable=None)
+        self.assertEqual(self.db.user.get(nid, "assignable"), None)
 
     def testNumberChange(self):
         nid = self.db.user.create(username='foo', age=1)
         self.assertEqual(1, self.db.user.get(nid, 'age'))
-        self.db.user.set('1', age=3)
-        self.assertNotEqual(self.db.user.get('1', 'age'), 1)
-        self.db.user.set('1', age=1.0)
-        self.db.user.set('1', age=None)
-        self.assertEqual(self.db.user.get('1', "age"), None)
+        self.db.user.set(nid, age=3)
+        self.assertNotEqual(self.db.user.get(nid, 'age'), 1)
+        self.db.user.set(nid, age=1.0)
+
+    def testNumberUnset(self):
+        nid = self.db.user.create(username='foo', age=1)
+        self.db.user.set(nid, age=None)
+        self.assertEqual(self.db.user.get(nid, "age"), None)
 
     def testKeyValue(self):
         newid = self.db.user.create(username="spam")
@@ -386,15 +392,19 @@
         # invalid multilink index
         ar(IndexError, self.db.issue.set, id, title='foo', status='1',
             nosy=['10'])
+        # NOTE: the following increment the username to avoid problems
+        # within metakit's backend (it creates the node, and then sets the
+        # info, so the create (and by a fluke the username set) go through
+        # before the age/assignable/etc. set, which raises the exception)
         # invalid number value
         ar(TypeError, self.db.user.create, username='foo', age='a')
         # invalid boolean value
-        ar(TypeError, self.db.user.create, username='foo', assignable='true')
-        nid = self.db.user.create(username='foo')
+        ar(TypeError, self.db.user.create, username='foo2', assignable='true')
+        nid = self.db.user.create(username='foo3')
         # invalid number value
-        ar(TypeError, self.db.user.set, nid, username='foo', age='a')
+        ar(TypeError, self.db.user.set, nid, age='a')
         # invalid boolean value
-        ar(TypeError, self.db.user.set, nid, username='foo', assignable='true')
+        ar(TypeError, self.db.user.set, nid, assignable='true')
 
     def testJournals(self):
         self.db.user.create(username="mary")
@@ -808,6 +818,18 @@
         self.assertEqual(num_files2, len(self.db.file.list()))
         self.assertEqual(num_rfiles2, num_rfiles-1)
 
+    def testBooleanUnset(self):
+        # XXX: metakit can't unset Booleans :(
+        nid = self.db.user.create(username='foo', assignable=1)
+        self.db.user.set(nid, assignable=None)
+        self.assertEqual(self.db.user.get(nid, "assignable"), 0)
+
+    def testNumberUnset(self):
+        # XXX: metakit can't unset Numbers :(
+        nid = self.db.user.create(username='foo', age=1)
+        self.db.user.set(nid, age=None)
+        self.assertEqual(self.db.user.get(nid, "age"), 0)
+
 class metakitReadOnlyDBTestCase(anydbmReadOnlyDBTestCase):
     def setUp(self):
         from roundup.backends import metakit

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