test problem solved

This commit is contained in:
MelodyZhangYiqun 2022-12-11 13:28:50 -05:00
parent 1d62f74f0b
commit 224bcc3a8e

View file

@ -4,16 +4,7 @@ import socket
import unittest
from unittest.mock import MagicMock, patch
from flask import (
Blueprint,
abort,
flash,
g,
redirect,
render_template,
request,
url_for,
)
from flask import g, request, url_for
from sqlalchemy import orm
from werkzeug.security import check_password_hash
@ -174,6 +165,91 @@ class ModelsTestCase(IhatemoneyTestCase):
pay_each_expected = 10 / 3
self.assertEqual(bill.amount / weight, pay_each_expected)
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
def test_bill_pay_each(self):
self.post_project("raclette")
@ -420,92 +496,5 @@ class TestCurrencyConverter(unittest.TestCase):
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__":
unittest.main()