]> git.decadent.org.uk Git - dak.git/blob - tests/dbtest_debversion.py
Improve debversion test.
[dak.git] / tests / dbtest_debversion.py
1 #!/usr/bin/env python
2
3 from db_test import DBDakTestCase
4
5 from daklib.dbconn import DBConn, DebVersion
6
7 from sqlalchemy import Table, Column, Integer, func
8 from sqlalchemy.orm import mapper
9 import unittest
10
11 class Version(object):
12     def __init__(self, version):
13         self.version = version
14
15     def __repr__(self):
16         return "<Version('%s')>" % self.version
17
18 class DebVersionTestCase(DBDakTestCase):
19     def setUp(self):
20         super(DebVersionTestCase, self).setUp()
21         self.version_table = Table('version', self.metadata, \
22             Column('id', Integer, primary_key = True), \
23             Column('version', DebVersion), \
24             )
25         self.version_table.create(checkfirst = True)
26         mapper(Version, self.version_table)
27
28     def test_debversion(self):
29         v = Version('0.5~')
30         self.session.add(v)
31         v = Version('0.5')
32         self.session.add(v)
33         v = Version('1.0')
34         self.session.add(v)
35         #self.session.commit()
36         q = self.session.query(Version)
37         self.assertEqual(3, q.count())
38         self.assertEqual(2, q.filter(Version.version > '0.5~').count())
39         self.assertEqual(1, q.filter(Version.version > '0.5').count())
40         self.assertEqual(0, q.filter(Version.version > '1.0').count())
41         q = self.session.query(func.min(Version.version))
42         self.assertEqual('0.5~', q.one()[0])
43         q = self.session.query(func.max(Version.version))
44         self.assertEqual('1.0', q.one()[0])
45
46     def tearDown(self):
47         self.session.close()
48         self.version_table.drop()
49         super(DebVersionTestCase, self).tearDown()
50
51 if __name__ == '__main__':
52     unittest.main()