]> git.decadent.org.uk Git - dak.git/blob - tests/dbtest_contents.py
Refactor dbtest_contents.py.
[dak.git] / tests / dbtest_contents.py
1 #!/usr/bin/env python
2
3 from db_test import DBDakTestCase
4
5 from daklib.dbconn import DBConn, BinContents, OverrideType, get_override_type, \
6     Section, get_section, get_sections, Priority, get_priority, get_priorities
7
8 from sqlalchemy.exc import FlushError, IntegrityError
9 import unittest
10
11 class ContentsTestCase(DBDakTestCase):
12     """
13     This TestCase checks the behaviour of contents generation.
14     """
15
16     def test_duplicates1(self):
17         '''
18         Test the BinContents class for duplication problems.
19         '''
20         self.setup_binaries()
21         contents1 = BinContents(file = 'usr/bin/hello', \
22             binary = self.binary['hello_2.2-1_i386'])
23         self.session.add(contents1)
24         self.session.flush()
25         # test duplicates
26         contents2 = BinContents(file = 'usr/bin/hello', \
27             binary = self.binary['hello_2.2-1_i386'])
28         self.session.add(contents2)
29         self.assertRaises(FlushError, self.session.flush)
30
31     def test_duplicates2(self):
32         '''
33         Test the BinContents class for more duplication problems.
34         '''
35         self.setup_binaries()
36         contents1 = BinContents(file = 'usr/bin/hello', \
37             binary = self.binary['hello_2.2-1_i386'])
38         self.session.add(contents1)
39         contents2 = BinContents(file = 'usr/bin/gruezi', \
40             binary = self.binary['hello_2.2-1_i386'])
41         self.session.add(contents2)
42         self.session.flush()
43         # test duplicates
44         contents2.file = 'usr/bin/hello'
45         self.assertRaises(IntegrityError, self.session.flush)
46
47     def test_duplicates3(self):
48         '''
49         Test the BinContents class even more.
50         '''
51         self.setup_binaries()
52         contents1 = BinContents(file = 'usr/bin/hello', \
53             binary = self.binary['hello_2.2-1_i386'])
54         self.session.add(contents1)
55         # same file in different binary packages should be okay
56         contents2 = BinContents(file = 'usr/bin/hello', \
57             binary = self.binary['gnome-hello_2.2-1_i386'])
58         self.session.add(contents2)
59         self.session.flush()
60
61     def test_overridetype(self):
62         '''
63         Test the OverrideType class.
64         '''
65         self.setup_overridetypes()
66         self.assertEqual('deb', self.otype['deb'].overridetype)
67         self.assertEqual(0, self.otype['deb'].overrides.count())
68         self.assertEqual(self.otype['deb'], get_override_type('deb', self.session))
69
70     def test_section(self):
71         '''
72         Test Section class.
73         '''
74         self.setup_sections()
75         self.assertEqual('python', self.section['python'].section)
76         self.assertEqual('python', self.section['python'])
77         self.assertTrue(self.section['python'] != 'java')
78         self.assertEqual(self.section['python'], get_section('python', self.session))
79         all_sections = get_sections(self.session)
80         self.assertEqual(self.section['python'].section_id, all_sections['python'])
81         self.assertEqual(0, self.section['python'].overrides.count())
82
83     def test_priority(self):
84         '''
85         Test Priority class.
86         '''
87         self.setup_priorities()
88         self.assertEqual('standard', self.prio['standard'].priority)
89         self.assertEqual(7, self.prio['standard'].level)
90         self.assertEqual('standard', self.prio['standard'])
91         self.assertTrue(self.prio['standard'] != 'extra')
92         self.assertEqual(self.prio['standard'], get_priority('standard', self.session))
93         all_priorities = get_priorities(self.session)
94         self.assertEqual(self.prio['standard'].priority_id, all_priorities['standard'])
95         self.assertEqual(0, self.prio['standard'].overrides.count())
96
97 if __name__ == '__main__':
98     unittest.main()