Code

Add 'safeget' method to hyperdb, including tests, and use it to simplify code
[roundup.git] / test / test_schema.py
index 4821aa450dab3f01f259a41463e301b1c18cf566..d6c9e6455057ceeb3f8b684664af5f34499b301e 100644 (file)
@@ -1,19 +1,50 @@
-# $Id: test_schema.py,v 1.1 2001-07-27 06:55:07 richard Exp $ 
+#
+# Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/)
+# This module is free software, and you may redistribute it and/or modify
+# under the same terms as Python, so long as this copyright message and
+# disclaimer are retained in their original form.
+#
+# IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR
+# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
+# OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE.  THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
+# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
+# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+# 
+# $Id: test_schema.py,v 1.13 2003-10-25 22:53:26 richard Exp $ 
 
 import unittest, os, shutil
 
-from roundup.backends import anydbm
-from roundup.hyperdb import String, Link, Multilink, Date, Interval, Class
+from roundup.backends import back_anydbm
+from roundup.hyperdb import String, Password, Link, Multilink, Date, \
+    Interval
+
+class config:
+    DATABASE='_test_dir'
+    MAILHOST = 'localhost'
+    MAIL_DOMAIN = 'fill.me.in.'
+    NSTANCE_NAME = 'Roundup issue tracker'
+    TRACKER_EMAIL = 'issue_tracker@%s'%MAIL_DOMAIN
+    TRACKER_WEB = 'http://some.useful.url/'
+    ADMIN_EMAIL = 'roundup-admin@%s'%MAIL_DOMAIN
+    FILTER_POSITION = 'bottom'      # one of 'top', 'bottom', 'top and bottom'
+    ANONYMOUS_ACCESS = 'deny'       # either 'deny' or 'allow'
+    ANONYMOUS_REGISTER = 'deny'     # either 'deny' or 'allow'
+    MESSAGES_TO_AUTHOR = 'no'       # either 'yes' or 'no'
+    EMAIL_SIGNATURE_POSITION = 'bottom'
 
 class SchemaTestCase(unittest.TestCase):
     def setUp(self):
-        class Database(anydbm.Database):
-            pass
         # remove previous test, ignore errors
-        if os.path.exists('_test_dir'):
-            shutil.rmtree('_test_dir')
-        os.mkdir('_test_dir')
-        self.db = Database('_test_dir', 'test')
+        if os.path.exists(config.DATABASE):
+            shutil.rmtree(config.DATABASE)
+        os.makedirs(config.DATABASE + '/files')
+        self.db = back_anydbm.Database(config, 'admin')
+        self.db.post_init()
         self.db.clear()
 
     def tearDown(self):
@@ -21,7 +52,7 @@ class SchemaTestCase(unittest.TestCase):
         shutil.rmtree('_test_dir')
 
     def testA_Status(self):
-        status = Class(self.db, "status", name=String())
+        status = back_anydbm.Class(self.db, "status", name=String())
         self.assert_(status, 'no class object generated')
         status.setkey("name")
         val = status.create(name="unread")
@@ -43,22 +74,25 @@ class SchemaTestCase(unittest.TestCase):
         self.assertEqual(val, ['1', '2', '4'], 'blah')
 
     def testB_Issue(self):
-        issue = Class(self.db, "issue", title=String(), status=Link("status"))
+        issue = back_anydbm.Class(self.db, "issue", title=String(),
+            status=Link("status"))
         self.assert_(issue, 'no class object returned')
 
     def testC_User(self):
-        user = Class(self.db, "user", username=String(), password=String())
+        user = back_anydbm.Class(self.db, "user", username=String(),
+            password=Password())
         self.assert_(user, 'no class object returned')
         user.setkey("username")
 
 
-def suite():
-   return unittest.makeSuite(SchemaTestCase, 'test')
+def test_suite():
+    suite = unittest.TestSuite()
+    suite.addTest(unittest.makeSuite(SchemaTestCase))
+    return suite
 
+if __name__ == '__main__':
+    runner = unittest.TextTestRunner()
+    unittest.main(testRunner=runner)
 
-#
-# $Log: not supported by cvs2svn $
-# Revision 1.3  2001/07/25 04:34:31  richard
-# Added id and log to tests files...
-#
-#
+
+# vim: set filetype=python ts=4 sw=4 et si