Merge pull request #8 from FlowingCloudRTL/bchen-new-bill-type-tests

Added tests for new bill types
This commit is contained in:
MelodyZhangYiqun 2022-12-12 20:58:20 -05:00 committed by GitHub
commit d9c75dbe6f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -705,7 +705,19 @@ class BudgetTestCase(IhatemoneyTestCase):
"amount": "17", "amount": "17",
}, },
) )
#transfer bill should not affect balances at all
self.client.post(
"/raclette/add",
data={
"date": "2011-08-10",
"what": "Transfer",
"payer": members_ids[1],
"payed_for": members_ids[0],
"bill_type": "Transfer",
"amount": "500",
},
)
balance = self.get_project("raclette").balance balance = self.get_project("raclette").balance
self.assertEqual(set(balance.values()), set([19.0, -19.0])) self.assertEqual(set(balance.values()), set([19.0, -19.0]))
@ -770,6 +782,89 @@ class BudgetTestCase(IhatemoneyTestCase):
) )
self.assertIn("Invalid URL", resp.data.decode("utf-8")) self.assertIn("Invalid URL", resp.data.decode("utf-8"))
def test_reimbursement_bill(self):
self.post_project("rent")
# add two participants
self.client.post("/rent/members/add", data={"name": "bob"})
self.client.post("/rent/members/add", data={"name": "alice"})
members_ids = [m.id for m in self.get_project("rent").members]
# create a bill to test reimbursement
self.client.post(
"/rent/add",
data={
"date": "2022-12-12",
"what": "december rent",
"payer": members_ids[0], #bob
"payed_for": members_ids, #bob and alice
"bill_type": "Expense",
"amount": "1000",
},
)
#check balance
balance = self.get_project("rent").balance
self.assertEqual(set(balance.values()), set([500, -500]))
#check paid
bob_paid = self.get_project("rent").full_balance[2][members_ids[0]]
alice_paid = self.get_project("rent").full_balance[2][members_ids[1]]
self.assertEqual(bob_paid, 1000)
self.assertEqual(alice_paid, 0)
# test reimbursement bill
self.client.post(
"/rent/add",
data={
"date": "2022-12-13",
"what": "reimbursement for rent",
"payer": members_ids[1], #alice
"payed_for": members_ids[0], #bob
"bill_type": "Reimbursement",
"amount": "500",
},
)
balance = self.get_project("rent").balance
self.assertEqual(set(balance.values()), set([0, 0]))
#check paid
bob_paid = self.get_project("rent").full_balance[2][members_ids[0]]
alice_paid = self.get_project("rent").full_balance[2][members_ids[1]]
self.assertEqual(bob_paid, 500)
self.assertEqual(alice_paid, 500)
def test_transfer_bill(self):
self.post_project("random")
# add two participants
self.client.post("/random/members/add", data={"name": "zorglub"})
self.client.post("/random/members/add", data={"name": "fred"})
members_ids = [m.id for m in self.get_project("random").members]
self.client.post(
"/random/add",
data={
"date": "2022-10-10",
"what": "Rent",
"payer": members_ids[0], #zorglub
"payed_for": members_ids, #zorglub + fred
"bill_type": "Expense",
"amount": "1000",
},
)
# test transfer bill (should not affect anything whatsoever)
self.client.post(
"/random/add",
data={
"date": "2022-10-10",
"what": "Transfer of 500 to fred",
"payer": members_ids[0], #zorglub
"payed_for": members_ids[1], #fred
"bill_type": "Transfer",
"amount": "500",
},
)
balance = self.get_project("random").balance
self.assertEqual(set(balance.values()), set([500, -500]))
def test_weighted_balance(self): def test_weighted_balance(self):
self.post_project("raclette") self.post_project("raclette")