]> git.decadent.org.uk Git - dak.git/blob - tests/dbtest_ormobject.py
Merge remote-tracking branch 'jcristau/formatone-no-tar-sig'
[dak.git] / tests / dbtest_ormobject.py
1 #!/usr/bin/env python
2
3 from db_test import DBDakTestCase
4
5 from daklib.dbconn import Architecture, Suite
6 from daklib.dak_exceptions import DBUpdateError
7
8 try:
9     # python >= 2.6
10     import json
11 except:
12     # python <= 2.5
13     import simplejson as json
14
15 import re
16 import unittest
17
18 class ORMObjectTestCase(DBDakTestCase):
19     """
20     The ORMObjectTestCase tests the behaviour of the ORMObject.
21     """
22
23     def test_strings(self):
24         'tests json(), __repr__(), and __str__()'
25         architecture = Architecture(arch_string = 'i386')
26         # test json()
27         data = json.loads(architecture.json())
28         self.assertEqual('i386', data['arch_string'])
29         # test repr()
30         self.assertEqual('<Architecture i386>', repr(architecture))
31         # test str()
32         self.assertTrue(re.match('<Architecture {.*}>', str(architecture)))
33         self.assertTrue(re.search('"arch_string": "i386"', str(architecture)))
34         sid = Suite(suite_name = 'sid')
35         squeeze = Suite(suite_name = 'squeeze')
36         architecture.suites = [sid, squeeze]
37         self.assertTrue(re.search('"suites_count": 2', str(architecture)))
38
39     def test_validation(self):
40         suite = Suite()
41         self.session.add(suite)
42         self.assertRaises(DBUpdateError, self.session.flush)
43
44 if __name__ == '__main__':
45     unittest.main()