]> git.donarmstrong.com Git - dak.git/blobdiff - tests/dbtest_timestamps.py
Add new TimestampTestCase.
[dak.git] / tests / dbtest_timestamps.py
diff --git a/tests/dbtest_timestamps.py b/tests/dbtest_timestamps.py
new file mode 100755 (executable)
index 0000000..ff19d7d
--- /dev/null
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+
+from db_test import DBDakTestCase
+
+from daklib.dbconn import DBConn, Uid
+
+import time
+import unittest
+
+class TimestampTestCase(DBDakTestCase):
+    """
+    TimestampTestCase checks that the timestamps created and modified are
+    working correctly.
+
+    TODO: Should we check all tables?
+    """
+
+    def now(self):
+        local_session = DBConn().session()
+        query = local_session.query('now').from_statement('select now() as now')
+        local_session.close()
+        return query.one().now
+
+    def sleep(self):
+        time.sleep(0.001)
+
+    def test_timestamps(self):
+        timestamp01 = self.now()
+        self.sleep()
+        uid = Uid(uid = 'ftp-master@debian.org')
+        self.session.add(uid)
+        self.session.commit()
+        created01 = uid.created
+        modified01 = uid.modified
+        self.sleep()
+        timestamp02 = self.now()
+        self.assertTrue(timestamp01 < created01)
+        self.assertTrue(timestamp01 < modified01)
+        self.assertTrue(created01 < timestamp02)
+        self.assertTrue(modified01 < timestamp02)
+        self.sleep()
+        uid.name = 'ftp team'
+        self.session.commit()
+        created02 = uid.created
+        modified02 = uid.modified
+        self.assertEqual(created01, created02)
+        self.assertTrue(modified01 < modified02)
+        self.sleep()
+        timestamp03 = self.now()
+        self.assertTrue(modified02 < timestamp03)
+
+    def classes_to_clean(self):
+        return (Uid,)
+
+if __name__ == '__main__':
+    unittest.main()