]> git.decadent.org.uk Git - dak.git/blobdiff - tests/dbtest_debversion.py
Merge remote-tracking branch 'jcristau/formatone-no-tar-sig'
[dak.git] / tests / dbtest_debversion.py
index 3d10b92b14a560888f2efbaf0cc5c0e39a230691..c45200d1f2440d7a3e96f43d5ad57de561d5f45a 100755 (executable)
@@ -16,6 +16,13 @@ class Version(object):
         return "<Version('%s')>" % self.version
 
 class DebVersionTestCase(DBDakTestCase):
+    """
+    The DebVersionTestCase tests both comparison (<=, ==, >, !=), the in_()
+    method and aggregate functions (min, max) for the DebVersion type. To
+    simplify the test it creates a separate table 'version' which is not used
+    by dak itself.
+    """
+
     def setUp(self):
         super(DebVersionTestCase, self).setUp()
         self.version_table = Table('version', self.metadata, \
@@ -26,21 +33,28 @@ class DebVersionTestCase(DBDakTestCase):
         mapper(Version, self.version_table)
 
     def test_debversion(self):
-        v1 = Version('0.5')
-        self.session.add(v1)
-        v2 = Version('1.0')
-        self.session.add(v2)
-        #self.session.commit()
+        v = Version('0.5~')
+        self.session.add(v)
+        v = Version('0.5')
+        self.session.add(v)
+        v = Version('1.0')
+        self.session.add(v)
         q = self.session.query(Version)
-        self.assertEqual(2, q.count())
+        self.assertEqual(3, q.count())
+        self.assertEqual(2, q.filter(Version.version <= '0.5').count())
+        self.assertEqual(1, q.filter(Version.version == '0.5').count())
         self.assertEqual(2, q.filter(Version.version > '0.5~').count())
         self.assertEqual(1, q.filter(Version.version > '0.5').count())
         self.assertEqual(0, q.filter(Version.version > '1.0').count())
-        for v in self.session.query(Version.version):
-            print v
+        self.assertEqual(2, q.filter(Version.version != '1.0').count())
+        self.assertEqual(2, q.filter(Version.version.in_(['0.5~', '1.0'])).count())
+        q = self.session.query(func.min(Version.version))
+        self.assertEqual('0.5~', q.scalar())
+        q = self.session.query(func.max(Version.version))
+        self.assertEqual('1.0', q.scalar())
 
     def tearDown(self):
-        self.session.close()
+        self.session.rollback()
         self.version_table.drop()
         super(DebVersionTestCase, self).tearDown()