Code

Change nosymessage and send_message to accept msgid=None (RFE #707235).
[roundup.git] / test / test_schema.py
1 #
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/)
3 # This module is free software, and you may redistribute it and/or modify
4 # under the same terms as Python, so long as this copyright message and
5 # disclaimer are retained in their original form.
6 #
7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE
10 # POSSIBILITY OF SUCH DAMAGE.
11 #
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
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"
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
17
18 # $Id: test_schema.py,v 1.13 2003-10-25 22:53:26 richard Exp $ 
20 import unittest, os, shutil
22 from roundup.backends import back_anydbm
23 from roundup.hyperdb import String, Password, Link, Multilink, Date, \
24     Interval
26 class config:
27     DATABASE='_test_dir'
28     MAILHOST = 'localhost'
29     MAIL_DOMAIN = 'fill.me.in.'
30     NSTANCE_NAME = 'Roundup issue tracker'
31     TRACKER_EMAIL = 'issue_tracker@%s'%MAIL_DOMAIN
32     TRACKER_WEB = 'http://some.useful.url/'
33     ADMIN_EMAIL = 'roundup-admin@%s'%MAIL_DOMAIN
34     FILTER_POSITION = 'bottom'      # one of 'top', 'bottom', 'top and bottom'
35     ANONYMOUS_ACCESS = 'deny'       # either 'deny' or 'allow'
36     ANONYMOUS_REGISTER = 'deny'     # either 'deny' or 'allow'
37     MESSAGES_TO_AUTHOR = 'no'       # either 'yes' or 'no'
38     EMAIL_SIGNATURE_POSITION = 'bottom'
40 class SchemaTestCase(unittest.TestCase):
41     def setUp(self):
42         # remove previous test, ignore errors
43         if os.path.exists(config.DATABASE):
44             shutil.rmtree(config.DATABASE)
45         os.makedirs(config.DATABASE + '/files')
46         self.db = back_anydbm.Database(config, 'admin')
47         self.db.post_init()
48         self.db.clear()
50     def tearDown(self):
51         self.db.close()
52         shutil.rmtree('_test_dir')
54     def testA_Status(self):
55         status = back_anydbm.Class(self.db, "status", name=String())
56         self.assert_(status, 'no class object generated')
57         status.setkey("name")
58         val = status.create(name="unread")
59         self.assertEqual(val, '1', 'expecting "1"')
60         val = status.create(name="in-progress")
61         self.assertEqual(val, '2', 'expecting "2"')
62         val = status.create(name="testing")
63         self.assertEqual(val, '3', 'expecting "3"')
64         val = status.create(name="resolved")
65         self.assertEqual(val, '4', 'expecting "4"')
66         val = status.count()
67         self.assertEqual(val, 4, 'expecting 4')
68         val = status.list()
69         self.assertEqual(val, ['1', '2', '3', '4'], 'blah')
70         val = status.lookup("in-progress")
71         self.assertEqual(val, '2', 'expecting "2"')
72         status.retire('3')
73         val = status.list()
74         self.assertEqual(val, ['1', '2', '4'], 'blah')
76     def testB_Issue(self):
77         issue = back_anydbm.Class(self.db, "issue", title=String(),
78             status=Link("status"))
79         self.assert_(issue, 'no class object returned')
81     def testC_User(self):
82         user = back_anydbm.Class(self.db, "user", username=String(),
83             password=Password())
84         self.assert_(user, 'no class object returned')
85         user.setkey("username")
88 def test_suite():
89     suite = unittest.TestSuite()
90     suite.addTest(unittest.makeSuite(SchemaTestCase))
91     return suite
93 if __name__ == '__main__':
94     runner = unittest.TextTestRunner()
95     unittest.main(testRunner=runner)
98 # vim: set filetype=python ts=4 sw=4 et si