diff options
Diffstat (limited to 'budget/tests.py')
| -rw-r--r-- | budget/tests.py | 67 |
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""" |
