aboutsummaryrefslogtreecommitdiff
path: root/budget/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'budget/tests.py')
-rw-r--r--budget/tests.py67
1 files changed, 63 insertions, 4 deletions
diff --git a/budget/tests.py b/budget/tests.py
index 14e605a..9eea518 100644
--- a/budget/tests.py
+++ b/budget/tests.py
@@ -6,6 +6,7 @@ except ImportError:
import base64
import json
+from collections import defaultdict
from flask import session
@@ -21,9 +22,11 @@ class TestCase(unittest.TestCase):
run.app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///memory"
run.app.config['CSRF_ENABLED'] = False # simplify the tests
self.app = run.app.test_client()
-
- models.db.init_app(run.app)
- run.mail.init_app(run.app)
+ try:
+ models.db.init_app(run.app)
+ run.mail.init_app(run.app)
+ except:
+ pass
models.db.app = run.app
models.db.create_all()
@@ -439,7 +442,11 @@ class BudgetTestCase(TestCase):
})
balance = models.Project.query.get("raclette").balance
- self.assertDictEqual(balance, {3: -8.12, 1: 8.12, 2: 0.0})
+ result = {}
+ result[models.Project.query.get("raclette").members[0].id] = 8.12
+ result[models.Project.query.get("raclette").members[1].id] = 0.0
+ result[models.Project.query.get("raclette").members[2].id] = -8.12
+ self.assertDictEqual(balance, result)
def test_edit_project(self):
# A project should be editable
@@ -470,6 +477,58 @@ class BudgetTestCase(TestCase):
response = self.app.get("/dashboard")
self.assertEqual(response.status_code, 200)
+ def test_settle_page(self):
+ self.post_project("raclette")
+ response = self.app.get("/raclette/settle_bills")
+ self.assertEqual(response.status_code, 200)
+
+ def test_settle(self):
+ self.post_project("raclette")
+
+ # add members
+ self.app.post("/raclette/members/add", data={'name': 'alexis'})
+ self.app.post("/raclette/members/add", data={'name': 'fred'})
+ self.app.post("/raclette/members/add", data={'name': 'tata'})
+ #Add a member with a balance=0 :
+ self.app.post("/raclette/members/add", data={'name': 'toto'})
+
+ # create bills
+ self.app.post("/raclette/add", data={
+ 'date': '2011-08-10',
+ 'what': u'fromage à raclette',
+ 'payer': 1,
+ 'payed_for': [1, 2, 3],
+ 'amount': '10.0',
+ })
+
+ self.app.post("/raclette/add", data={
+ 'date': '2011-08-10',
+ 'what': u'red wine',
+ 'payer': 2,
+ 'payed_for': [1],
+ 'amount': '20',
+ })
+
+ self.app.post("/raclette/add", data={
+ 'date': '2011-08-10',
+ 'what': u'delicatessen',
+ 'payer': 1,
+ 'payed_for': [1, 2],
+ 'amount': '10',
+ })
+ project = models.Project.query.get('raclette')
+ transactions = project.get_transactions_to_settle_bill()
+ members = defaultdict(int)
+ #We should have the same values between transactions and project balances
+ for t in transactions:
+ members[t['ower']]-=t['amount']
+ members[t['receiver']]+=t['amount']
+ balance = models.Project.query.get("raclette").balance
+ for m, a in members.items():
+ self.assertEqual(a, balance[m.id])
+ return
+
+
class APITestCase(TestCase):
"""Tests the API"""