1 from unittest import TestCase
2 from bluechips.tests import *
3 from bluechips import model
4 from bluechips.model import meta
5 from bluechips.model.types import Currency
6 from decimal import Decimal
8 class TestSplitFixed(TestCase):
9 def test_simpleSplit(self):
11 Test simply splitting a $100 expenditure amongst 4 people
15 e = model.Expenditure()
16 e.spender = meta.Session.query(model.User).first()
17 e.amount = Currency("100.00")
22 for s in meta.Session.query(model.Split).\
23 filter(model.Split.expenditure==e):
24 self.assertEqual(s.share, Currency("25.00"))
29 def test_uneven(self):
31 Test that expenditures can be split non-evenly
35 users = meta.Session.query(model.User).all()
37 e = model.Expenditure()
39 e.amount = Currency("100.00")
42 split_dict = {users[0]: Decimal("20"),
43 users[1]: Decimal("80")}
45 amount_dict = {users[0]: Currency("20"),
46 users[1]: Currency("80")}
51 for s in meta.Session.query(model.Split):
52 self.assertEqual(s.share, amount_dict[s.user])
57 def test_unevenBadTotal(self):
59 Test that transactions get split up properly when the uneven
60 split shares don't add to 100%
64 users = meta.Session.query(model.User).all()
66 e = model.Expenditure()
68 e.amount = Currency("100.00")
71 split_dict = {users[0]: Decimal(10),
72 users[1]: Decimal(15)}
74 amount_dict = {users[0]: Currency("40"),
75 users[1]: Currency("60")}
80 for s in meta.Session.query(model.Split):
81 self.assertEqual(s.share, amount_dict[s.user])