]> asedeno.scripts.mit.edu Git - bluechips.git/blobdiff - bluechips/tests/splits/test_fixed.py
Merge branch 'master' into fix-authz
[bluechips.git] / bluechips / tests / splits / test_fixed.py
index 2916eb763822da305d14d8e0982a5f53d38a2a3a..0de37867e549ecd518863ffc4cfe9170c6c6a87b 100644 (file)
@@ -12,9 +12,8 @@ class TestSplitFixed(TestCase):
         """
         createUsers(4)
         
-        e = model.Expenditure()
-        e.spender = meta.Session.query(model.User).first()
-        e.amount = Currency("100.00")
+        e = model.Expenditure(meta.Session.query(model.User).first(),
+                              Currency("100"))
         meta.Session.save(e)
         e.even_split()
         meta.Session.commit()
@@ -34,9 +33,7 @@ class TestSplitFixed(TestCase):
         
         users = meta.Session.query(model.User).all()
         
-        e = model.Expenditure()
-        e.spender = users[0]
-        e.amount = Currency("100.00")
+        e = model.Expenditure(users[0], Currency("100"))
         meta.Session.save(e)
         
         split_dict = {users[0]: Decimal("20"),
@@ -63,9 +60,7 @@ class TestSplitFixed(TestCase):
         
         users = meta.Session.query(model.User).all()
         
-        e = model.Expenditure()
-        e.spender = users[0]
-        e.amount = Currency("100.00")
+        e = model.Expenditure(users[0], Currency("100.00"))
         meta.Session.save(e)
         
         split_dict = {users[0]: Decimal(10),
@@ -82,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.save(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()