]> asedeno.scripts.mit.edu Git - bluechips.git/blobdiff - bluechips/tests/splits/test_fixed.py
We have pie charts.
[bluechips.git] / bluechips / tests / splits / test_fixed.py
index c338cbd1785fbb7a1c91267a3202517856e06cf4..46fcd842083b17e1d84c0eb84acc24f85859e7a2 100644 (file)
@@ -14,7 +14,7 @@ class TestSplitFixed(TestCase):
         
         e = model.Expenditure(meta.Session.query(model.User).first(),
                               Currency("100"))
-        meta.Session.save(e)
+        meta.Session.add(e)
         e.even_split()
         meta.Session.commit()
         
@@ -34,7 +34,7 @@ class TestSplitFixed(TestCase):
         users = meta.Session.query(model.User).all()
         
         e = model.Expenditure(users[0], Currency("100"))
-        meta.Session.save(e)
+        meta.Session.add(e)
         
         split_dict = {users[0]: Decimal("20"),
                       users[1]: Decimal("80")}
@@ -61,7 +61,7 @@ class TestSplitFixed(TestCase):
         users = meta.Session.query(model.User).all()
         
         e = model.Expenditure(users[0], Currency("100.00"))
-        meta.Session.save(e)
+        meta.Session.add(e)
         
         split_dict = {users[0]: Decimal(10),
                       users[1]: Decimal(15)}
@@ -77,3 +77,26 @@ class TestSplitFixed(TestCase):
         
         deleteExpenditures()
         deleteUsers()
+
+    def test_negativeExpenditure(self):
+        """
+        Test that negative expenditures get split correctly
+        """
+        createUsers(2)
+
+        users = meta.Session.query(model.User).all()
+
+        e = model.Expenditure(users[0], Currency("100.00"))
+        meta.Session.add(e)
+
+        # Force a split that will result in needing to distribute
+        # pennies
+        split_dict = {users[0]: Decimal(1),
+                      users[1]: Decimal(2)}
+        e.split(split_dict)
+        meta.Session.commit()
+
+        self.assertEqual(e.amount, sum(s.share for s in meta.Session.query(model.Split)))
+
+        deleteExpenditures()
+        deleteUsers()