X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=bluechips%2Ftests%2Fsplits%2Ftest_fixed.py;h=46fcd842083b17e1d84c0eb84acc24f85859e7a2;hb=afa1282a519cc7bda8e11082914ef4045139f113;hp=2916eb763822da305d14d8e0982a5f53d38a2a3a;hpb=6fd3a2f6b196a03a9dd90133aa0211a321977c59;p=bluechips.git diff --git a/bluechips/tests/splits/test_fixed.py b/bluechips/tests/splits/test_fixed.py index 2916eb7..46fcd84 100644 --- a/bluechips/tests/splits/test_fixed.py +++ b/bluechips/tests/splits/test_fixed.py @@ -12,10 +12,9 @@ class TestSplitFixed(TestCase): """ createUsers(4) - e = model.Expenditure() - e.spender = meta.Session.query(model.User).first() - e.amount = Currency("100.00") - meta.Session.save(e) + e = model.Expenditure(meta.Session.query(model.User).first(), + Currency("100")) + meta.Session.add(e) e.even_split() meta.Session.commit() @@ -34,10 +33,8 @@ class TestSplitFixed(TestCase): users = meta.Session.query(model.User).all() - e = model.Expenditure() - e.spender = users[0] - e.amount = Currency("100.00") - meta.Session.save(e) + e = model.Expenditure(users[0], Currency("100")) + meta.Session.add(e) split_dict = {users[0]: Decimal("20"), users[1]: Decimal("80")} @@ -63,10 +60,8 @@ class TestSplitFixed(TestCase): users = meta.Session.query(model.User).all() - e = model.Expenditure() - e.spender = users[0] - e.amount = Currency("100.00") - meta.Session.save(e) + e = model.Expenditure(users[0], Currency("100.00")) + meta.Session.add(e) split_dict = {users[0]: Decimal(10), users[1]: Decimal(15)} @@ -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.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()