]> git.decadent.org.uk Git - dak.git/commitdiff
Add more Fingerprint tests.
authorTorsten Werner <twerner@debian.org>
Sat, 15 Jan 2011 10:37:40 +0000 (11:37 +0100)
committerTorsten Werner <twerner@debian.org>
Sat, 15 Jan 2011 10:37:40 +0000 (11:37 +0100)
Signed-off-by: Torsten Werner <twerner@debian.org>
tests/dbtest_fingerprint.py

index a42a6ce3203f3e0309028ad89763c8cc5ac9f437..122ea62161374982f7d3e74a83eecee42b74e32f 100755 (executable)
@@ -4,6 +4,7 @@ from db_test import DBDakTestCase
 
 from daklib.dbconn import Fingerprint, Uid
 
 
 from daklib.dbconn import Fingerprint, Uid
 
+from sqlalchemy.exc import IntegrityError
 import unittest
 
 class FingerprintTestCase(DBDakTestCase):
 import unittest
 
 class FingerprintTestCase(DBDakTestCase):
@@ -15,9 +16,14 @@ class FingerprintTestCase(DBDakTestCase):
     3. It fetches the Uid object from the database.
     4. It checks that the original fingerprint is assigned to the freshly
        fetched Uid object.
     3. It fetches the Uid object from the database.
     4. It checks that the original fingerprint is assigned to the freshly
        fetched Uid object.
+
+    Furthermore it checks various constraints like not null and unique.
+
+    TODO: the not null constraints should be enforced by the constructor in
+    dbconn.py. Should we check the exact format of the fingerprint?
     """
 
     """
 
-    def test_mini(self):
+    def test_relation(self):
         fingerprint = Fingerprint(fingerprint = 'deadbeefdeadbeef')
         self.session.add(fingerprint)
         query = self.session.query(Fingerprint)
         fingerprint = Fingerprint(fingerprint = 'deadbeefdeadbeef')
         self.session.add(fingerprint)
         query = self.session.query(Fingerprint)
@@ -30,5 +36,33 @@ class FingerprintTestCase(DBDakTestCase):
         self.assertEqual(1, len(uid.fingerprint))
         self.assertEqual('deadbeefdeadbeef', uid.fingerprint[0].fingerprint)
 
         self.assertEqual(1, len(uid.fingerprint))
         self.assertEqual('deadbeefdeadbeef', uid.fingerprint[0].fingerprint)
 
+    def fingerprint_no_fingerprint(self):
+        self.session.add(Fingerprint())
+        self.session.flush()
+
+    def fingerprint_duplicate_fingerprint(self):
+        self.session.add(Fingerprint(fingerprint = 'affe0815'))
+        self.session.add(Fingerprint(fingerprint = 'affe0815'))
+        self.session.flush()
+
+    def uid_no_uid(self):
+        self.session.add(Uid(name = 'foobar'))
+        self.session.flush()
+
+    def uid_duplicate_uid(self):
+        self.session.add(Uid(uid = 'duplicate'))
+        self.session.add(Uid(uid = 'duplicate'))
+        self.session.flush()
+
+    def test_exceptions(self):
+        self.assertRaises(IntegrityError, self.fingerprint_no_fingerprint)
+        self.session.rollback()
+        self.assertRaises(IntegrityError, self.fingerprint_duplicate_fingerprint)
+        self.session.rollback()
+        self.assertRaises(IntegrityError, self.uid_no_uid)
+        self.session.rollback()
+        self.assertRaises(IntegrityError, self.uid_duplicate_uid)
+        self.session.rollback()
+
 if __name__ == '__main__':
     unittest.main()
 if __name__ == '__main__':
     unittest.main()