]> git.decadent.org.uk Git - dak.git/blob - tests/dbtest_timestamps.py
Add new TimestampTestCase.
[dak.git] / tests / dbtest_timestamps.py
1 #!/usr/bin/env python
2
3 from db_test import DBDakTestCase
4
5 from daklib.dbconn import DBConn, Uid
6
7 import time
8 import unittest
9
10 class TimestampTestCase(DBDakTestCase):
11     """
12     TimestampTestCase checks that the timestamps created and modified are
13     working correctly.
14
15     TODO: Should we check all tables?
16     """
17
18     def now(self):
19         local_session = DBConn().session()
20         query = local_session.query('now').from_statement('select now() as now')
21         local_session.close()
22         return query.one().now
23
24     def sleep(self):
25         time.sleep(0.001)
26
27     def test_timestamps(self):
28         timestamp01 = self.now()
29         self.sleep()
30         uid = Uid(uid = 'ftp-master@debian.org')
31         self.session.add(uid)
32         self.session.commit()
33         created01 = uid.created
34         modified01 = uid.modified
35         self.sleep()
36         timestamp02 = self.now()
37         self.assertTrue(timestamp01 < created01)
38         self.assertTrue(timestamp01 < modified01)
39         self.assertTrue(created01 < timestamp02)
40         self.assertTrue(modified01 < timestamp02)
41         self.sleep()
42         uid.name = 'ftp team'
43         self.session.commit()
44         created02 = uid.created
45         modified02 = uid.modified
46         self.assertEqual(created01, created02)
47         self.assertTrue(modified01 < modified02)
48         self.sleep()
49         timestamp03 = self.now()
50         self.assertTrue(modified02 < timestamp03)
51
52     def classes_to_clean(self):
53         return (Uid,)
54
55 if __name__ == '__main__':
56     unittest.main()