Code

Added the Roundup spec to the new documentation directory.
[roundup.git] / tests / test_db.py
1 import unittest, os, shutil
3 from roundup.backends import anydbm
4 from roundup.hyperdb import String, Link, Multilink, Date, Interval, Class
6 def setupSchema(db):
7     status = Class(db, "status", name=String())
8     status.setkey("name")
9     status.create(name="unread")
10     status.create(name="in-progress")
11     status.create(name="testing")
12     status.create(name="resolved")
13     Class(db, "user", username=String(), password=String())
14     Class(db, "issue", title=String(), status=Link("status"))
16 class DBTestCase(unittest.TestCase):
17     def setUp(self):
18         class Database(anydbm.Database):
19             pass
20         # remove previous test, ignore errors
21         if os.path.exists('_test_dir'):
22             shutil.rmtree('_test_dir')
23         os.mkdir('_test_dir')
24         self.db = Database('_test_dir', 'test')
25         setupSchema(self.db)
27     def tearDown(self):
28         self.db.close()
29         shutil.rmtree('_test_dir')
31     def testChanges(self):
32         self.db.issue.create(title="spam", status='1')
33         self.db.issue.create(title="eggs", status='2')
34         self.db.issue.create(title="ham", status='4')
35         self.db.issue.create(title="arguments", status='2')
36         self.db.issue.create(title="abuse", status='1')
37         self.db.issue.addprop(fixer=Link("user"))
38         props = self.db.issue.getprops()
39         keys = props.keys()
40         keys.sort()
41         self.assertEqual(keys, ['title', 'status', 'user'], 'wrong prop list')
42         self.db.issue.set('5', status=2)
43         self.db.issue.get('5', "status")
44         self.db.status.get('2', "name")
45         self.db.issue.get('5', "title")
46         self.db.issue.find(status = self.db.status.lookup("in-progress"))
47         self.db.issue.history('5')
48         self.db.status.history('1')
49         self.db.status.history('2')
51     def testExceptions(self):
52         # this tests the exceptions that should be raised
54 def suite():
55    return unittest.makeSuite(DBTestCase, 'test')