"""
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()
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")}
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)}
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()