mirror of
https://github.com/spiral-project/ihatemoney.git
synced 2025-05-15 17:01:49 +02:00
test added
This commit is contained in:
parent
3b74e2cea1
commit
1d62f74f0b
1 changed files with 97 additions and 0 deletions
|
@ -4,6 +4,16 @@ import socket
|
||||||
import unittest
|
import unittest
|
||||||
from unittest.mock import MagicMock, patch
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
|
from flask import (
|
||||||
|
Blueprint,
|
||||||
|
abort,
|
||||||
|
flash,
|
||||||
|
g,
|
||||||
|
redirect,
|
||||||
|
render_template,
|
||||||
|
request,
|
||||||
|
url_for,
|
||||||
|
)
|
||||||
from sqlalchemy import orm
|
from sqlalchemy import orm
|
||||||
from werkzeug.security import check_password_hash
|
from werkzeug.security import check_password_hash
|
||||||
|
|
||||||
|
@ -410,5 +420,92 @@ class TestCurrencyConverter(unittest.TestCase):
|
||||||
self.assertDictEqual(rates, {CurrencyConverter.no_currency: 1})
|
self.assertDictEqual(rates, {CurrencyConverter.no_currency: 1})
|
||||||
|
|
||||||
|
|
||||||
|
class ModelsTestCase(IhatemoneyTestCase):
|
||||||
|
def test_remove_member(self):
|
||||||
|
# make project
|
||||||
|
self.post_project("raclette")
|
||||||
|
|
||||||
|
# add members
|
||||||
|
self.client.post("/raclette/members/add", data={"name": "zorglub", "weight": 2})
|
||||||
|
self.client.post("/raclette/members/add", data={"name": "fred"})
|
||||||
|
self.client.post("/raclette/members/add", data={"name": "tata"})
|
||||||
|
|
||||||
|
# make bills
|
||||||
|
self.client.post(
|
||||||
|
"/raclette/add",
|
||||||
|
data={
|
||||||
|
"date": "2011-08-10",
|
||||||
|
"what": "red wine",
|
||||||
|
"payer": 1,
|
||||||
|
"payed_for": [2],
|
||||||
|
"amount": "20",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
project = models.Project.query.get_by_name(name="raclette")
|
||||||
|
|
||||||
|
zorglub = models.Person.query.get_by_name(name="zorglub", project=project)
|
||||||
|
tata = models.Person.query.get_by_name(name="tata", project=project)
|
||||||
|
fred = models.Person.query.get_by_name(name="fred", project=project)
|
||||||
|
|
||||||
|
g.project.remove_member(tata.id)
|
||||||
|
# tata should be fully removed because they are not connected to a bill
|
||||||
|
self.assertEqual(project.members, [zorglub, fred])
|
||||||
|
|
||||||
|
g.project.remove_member(zorglub.id)
|
||||||
|
|
||||||
|
# zorglub is connected to a bill so they should be deactivated
|
||||||
|
self.assertEqual(project.members, [zorglub, fred])
|
||||||
|
self.assertEqual(zorglub.activated, False)
|
||||||
|
|
||||||
|
def test_deactivated_user_bill(self):
|
||||||
|
|
||||||
|
self.post_project("raclette")
|
||||||
|
|
||||||
|
# add members
|
||||||
|
self.client.post("/raclette/members/add", data={"name": "zorglub", "weight": 2})
|
||||||
|
self.client.post("/raclette/members/add", data={"name": "fred"})
|
||||||
|
self.client.post("/raclette/members/add", data={"name": "tata"})
|
||||||
|
|
||||||
|
project = models.Project.query.get_by_name(name="raclette")
|
||||||
|
zorglub = models.Person.query.get_by_name(name="zorglub", project=project)
|
||||||
|
|
||||||
|
self.client.post(
|
||||||
|
"/raclette/add",
|
||||||
|
data={
|
||||||
|
"date": "2011-08-10",
|
||||||
|
"what": "red wine",
|
||||||
|
"payer": 1,
|
||||||
|
"payed_for": [2],
|
||||||
|
"amount": "20",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
g.project.remove_member(zorglub.id)
|
||||||
|
|
||||||
|
self.client.post(
|
||||||
|
"/raclette/edit",
|
||||||
|
data={
|
||||||
|
"date": "2011-08-10",
|
||||||
|
"what": "red wine",
|
||||||
|
"payer": 1,
|
||||||
|
"payed_for": [2],
|
||||||
|
"amount": "30",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
zorglub_bill = models.Bill.query.options(
|
||||||
|
orm.subqueryload(models.Bill.owers)
|
||||||
|
).filter(models.Bill.owers.contains(zorglub))
|
||||||
|
for bill in zorglub_bill:
|
||||||
|
id = bill.id
|
||||||
|
resp = self.client.post("/<raclette/edit/" + str(id), follow_redirects=True)
|
||||||
|
self.assertEqual(resp.status_code, 200)
|
||||||
|
assert request.path == url_for(".list_bills")
|
||||||
|
|
||||||
|
# user edits a form, redirect + error should occur
|
||||||
|
# Check that we were redirected to the list of bills page
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Loading…
Reference in a new issue