Renamed the constants to be upper-cased in test_account.py.

This commit is contained in:
依瑪貓 2023-03-22 00:23:49 +08:00
parent d0d2d77a2e
commit 623313b58a

View File

@ -54,15 +54,15 @@ class AccountData:
"""The code.""" """The code."""
cash: AccountData = AccountData("1111", 1, "Cash") CASH: AccountData = AccountData("1111", 1, "Cash")
"""The cash account.""" """The cash account."""
petty: AccountData = AccountData("1112", 1, "Bank") PETTY: AccountData = AccountData("1112", 1, "Bank")
"""The petty cash account.""" """The petty cash account."""
bank: AccountData = AccountData("1113", 1, "Bank") BANK: AccountData = AccountData("1113", 1, "Bank")
"""The bank account.""" """The bank account."""
stock: AccountData = AccountData("1121", 1, "Stock") STOCK: AccountData = AccountData("1121", 1, "Stock")
"""The stock account.""" """The stock account."""
loan: AccountData = AccountData("2112", 1, "Loan") LOAN: AccountData = AccountData("2112", 1, "Loan")
"""The loan account.""" """The loan account."""
PREFIX: str = "/accounting/accounts" PREFIX: str = "/accounting/accounts"
"""The URL prefix for the account management.""" """The URL prefix for the account management."""
@ -150,19 +150,19 @@ class AccountTestCase(unittest.TestCase):
response = self.client.post(f"{PREFIX}/store", response = self.client.post(f"{PREFIX}/store",
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": cash.base_code, "base_code": CASH.base_code,
"title": cash.title}) "title": CASH.title})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], self.assertEqual(response.headers["Location"],
f"{PREFIX}/{cash.code}") f"{PREFIX}/{CASH.code}")
response = self.client.post(f"{PREFIX}/store", response = self.client.post(f"{PREFIX}/store",
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": bank.base_code, "base_code": BANK.base_code,
"title": bank.title}) "title": BANK.title})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], self.assertEqual(response.headers["Location"],
f"{PREFIX}/{bank.code}") f"{PREFIX}/{BANK.code}")
def test_nobody(self) -> None: def test_nobody(self) -> None:
"""Test the permission as nobody. """Test the permission as nobody.
@ -176,7 +176,7 @@ class AccountTestCase(unittest.TestCase):
response = client.get(PREFIX) response = client.get(PREFIX)
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
response = client.get(f"{PREFIX}/{cash.code}") response = client.get(f"{PREFIX}/{CASH.code}")
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
response = client.get(f"{PREFIX}/create") response = client.get(f"{PREFIX}/create")
@ -184,30 +184,30 @@ class AccountTestCase(unittest.TestCase):
response = client.post(f"{PREFIX}/store", response = client.post(f"{PREFIX}/store",
data={"csrf_token": csrf_token, data={"csrf_token": csrf_token,
"base_code": stock.base_code, "base_code": STOCK.base_code,
"title": stock.title}) "title": STOCK.title})
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
response = client.get(f"{PREFIX}/{cash.code}/edit") response = client.get(f"{PREFIX}/{CASH.code}/edit")
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
response = client.post(f"{PREFIX}/{cash.code}/update", response = client.post(f"{PREFIX}/{CASH.code}/update",
data={"csrf_token": csrf_token, data={"csrf_token": csrf_token,
"base_code": cash.base_code, "base_code": CASH.base_code,
"title": f"{cash.title}-2"}) "title": f"{CASH.title}-2"})
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
response = client.post(f"{PREFIX}/{bank.code}/delete", response = client.post(f"{PREFIX}/{BANK.code}/delete",
data={"csrf_token": csrf_token}) data={"csrf_token": csrf_token})
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
response = client.get(f"{PREFIX}/bases/{cash.base_code}") response = client.get(f"{PREFIX}/bases/{CASH.base_code}")
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
with self.app.app_context(): with self.app.app_context():
cash_id: int = Account.find_by_code(cash.code).id cash_id: int = Account.find_by_code(CASH.code).id
response = client.post(f"{PREFIX}/bases/{cash.base_code}", response = client.post(f"{PREFIX}/bases/{CASH.base_code}",
data={"csrf_token": csrf_token, data={"csrf_token": csrf_token,
"next": NEXT_URI, "next": NEXT_URI,
f"{cash_id}-no": "5"}) f"{cash_id}-no": "5"})
@ -225,7 +225,7 @@ class AccountTestCase(unittest.TestCase):
response = client.get(PREFIX) response = client.get(PREFIX)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
response = client.get(f"{PREFIX}/{cash.code}") response = client.get(f"{PREFIX}/{CASH.code}")
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
response = client.get(f"{PREFIX}/create") response = client.get(f"{PREFIX}/create")
@ -233,30 +233,30 @@ class AccountTestCase(unittest.TestCase):
response = client.post(f"{PREFIX}/store", response = client.post(f"{PREFIX}/store",
data={"csrf_token": csrf_token, data={"csrf_token": csrf_token,
"base_code": stock.base_code, "base_code": STOCK.base_code,
"title": stock.title}) "title": STOCK.title})
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
response = client.get(f"{PREFIX}/{cash.code}/edit") response = client.get(f"{PREFIX}/{CASH.code}/edit")
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
response = client.post(f"{PREFIX}/{cash.code}/update", response = client.post(f"{PREFIX}/{CASH.code}/update",
data={"csrf_token": csrf_token, data={"csrf_token": csrf_token,
"base_code": cash.base_code, "base_code": CASH.base_code,
"title": f"{cash.title}-2"}) "title": f"{CASH.title}-2"})
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
response = client.post(f"{PREFIX}/{bank.code}/delete", response = client.post(f"{PREFIX}/{BANK.code}/delete",
data={"csrf_token": csrf_token}) data={"csrf_token": csrf_token})
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
response = client.get(f"{PREFIX}/bases/{cash.base_code}") response = client.get(f"{PREFIX}/bases/{CASH.base_code}")
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
with self.app.app_context(): with self.app.app_context():
cash_id: int = Account.find_by_code(cash.code).id cash_id: int = Account.find_by_code(CASH.code).id
response = client.post(f"{PREFIX}/bases/{cash.base_code}", response = client.post(f"{PREFIX}/bases/{CASH.base_code}",
data={"csrf_token": csrf_token, data={"csrf_token": csrf_token,
"next": NEXT_URI, "next": NEXT_URI,
f"{cash_id}-no": "5"}) f"{cash_id}-no": "5"})
@ -273,7 +273,7 @@ class AccountTestCase(unittest.TestCase):
response = self.client.get(PREFIX) response = self.client.get(PREFIX)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
response = self.client.get(f"{PREFIX}/{cash.code}") response = self.client.get(f"{PREFIX}/{CASH.code}")
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
response = self.client.get(f"{PREFIX}/create") response = self.client.get(f"{PREFIX}/create")
@ -281,34 +281,34 @@ class AccountTestCase(unittest.TestCase):
response = self.client.post(f"{PREFIX}/store", response = self.client.post(f"{PREFIX}/store",
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": stock.base_code, "base_code": STOCK.base_code,
"title": stock.title}) "title": STOCK.title})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], self.assertEqual(response.headers["Location"],
f"{PREFIX}/{stock.code}") f"{PREFIX}/{STOCK.code}")
response = self.client.get(f"{PREFIX}/{cash.code}/edit") response = self.client.get(f"{PREFIX}/{CASH.code}/edit")
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
response = self.client.post(f"{PREFIX}/{cash.code}/update", response = self.client.post(f"{PREFIX}/{CASH.code}/update",
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": cash.base_code, "base_code": CASH.base_code,
"title": f"{cash.title}-2"}) "title": f"{CASH.title}-2"})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], f"{PREFIX}/{cash.code}") self.assertEqual(response.headers["Location"], f"{PREFIX}/{CASH.code}")
response = self.client.post(f"{PREFIX}/{bank.code}/delete", response = self.client.post(f"{PREFIX}/{BANK.code}/delete",
data={"csrf_token": self.csrf_token}) data={"csrf_token": self.csrf_token})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], PREFIX) self.assertEqual(response.headers["Location"], PREFIX)
response = self.client.get(f"{PREFIX}/bases/{cash.base_code}") response = self.client.get(f"{PREFIX}/bases/{CASH.base_code}")
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
with self.app.app_context(): with self.app.app_context():
cash_id: int = Account.find_by_code(cash.code).id cash_id: int = Account.find_by_code(CASH.code).id
response = self.client.post(f"{PREFIX}/bases/{cash.base_code}", response = self.client.post(f"{PREFIX}/bases/{CASH.base_code}",
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"next": NEXT_URI, "next": NEXT_URI,
f"{cash_id}-no": "5"}) f"{cash_id}-no": "5"})
@ -323,31 +323,31 @@ class AccountTestCase(unittest.TestCase):
from accounting.models import Account from accounting.models import Account
create_uri: str = f"{PREFIX}/create" create_uri: str = f"{PREFIX}/create"
store_uri: str = f"{PREFIX}/store" store_uri: str = f"{PREFIX}/store"
detail_uri: str = f"{PREFIX}/{stock.code}" detail_uri: str = f"{PREFIX}/{STOCK.code}"
response: httpx.Response response: httpx.Response
with self.app.app_context(): with self.app.app_context():
self.assertEqual({x.code for x in Account.query.all()}, self.assertEqual({x.code for x in Account.query.all()},
{cash.code, bank.code}) {CASH.code, BANK.code})
# Missing CSRF token # Missing CSRF token
response = self.client.post(store_uri, response = self.client.post(store_uri,
data={"base_code": stock.base_code, data={"base_code": STOCK.base_code,
"title": stock.title}) "title": STOCK.title})
self.assertEqual(response.status_code, 400) self.assertEqual(response.status_code, 400)
# CSRF token mismatch # CSRF token mismatch
response = self.client.post(store_uri, response = self.client.post(store_uri,
data={"csrf_token": f"{self.csrf_token}-2", data={"csrf_token": f"{self.csrf_token}-2",
"base_code": stock.base_code, "base_code": STOCK.base_code,
"title": stock.title}) "title": STOCK.title})
self.assertEqual(response.status_code, 400) self.assertEqual(response.status_code, 400)
# Empty base account code # Empty base account code
response = self.client.post(store_uri, response = self.client.post(store_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": " ", "base_code": " ",
"title": stock.title}) "title": STOCK.title})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], create_uri) self.assertEqual(response.headers["Location"], create_uri)
@ -355,7 +355,7 @@ class AccountTestCase(unittest.TestCase):
response = self.client.post(store_uri, response = self.client.post(store_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": "9999", "base_code": "9999",
"title": stock.title}) "title": STOCK.title})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], create_uri) self.assertEqual(response.headers["Location"], create_uri)
@ -363,14 +363,14 @@ class AccountTestCase(unittest.TestCase):
response = self.client.post(store_uri, response = self.client.post(store_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": "1", "base_code": "1",
"title": stock.title}) "title": STOCK.title})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], create_uri) self.assertEqual(response.headers["Location"], create_uri)
# Empty name # Empty name
response = self.client.post(store_uri, response = self.client.post(store_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": stock.base_code, "base_code": STOCK.base_code,
"title": " "}) "title": " "})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], create_uri) self.assertEqual(response.headers["Location"], create_uri)
@ -379,7 +379,7 @@ class AccountTestCase(unittest.TestCase):
response = self.client.post(store_uri, response = self.client.post(store_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": "6172", "base_code": "6172",
"title": stock.title, "title": STOCK.title,
"is_need_offset": "yes"}) "is_need_offset": "yes"})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], create_uri) self.assertEqual(response.headers["Location"], create_uri)
@ -387,43 +387,43 @@ class AccountTestCase(unittest.TestCase):
# Success, with spaces to be stripped # Success, with spaces to be stripped
response = self.client.post(store_uri, response = self.client.post(store_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": f" {stock.base_code} ", "base_code": f" {STOCK.base_code} ",
"title": f" {stock.title} "}) "title": f" {STOCK.title} "})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], detail_uri) self.assertEqual(response.headers["Location"], detail_uri)
# Success under the same base # Success under the same base
response = self.client.post(store_uri, response = self.client.post(store_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": stock.base_code, "base_code": STOCK.base_code,
"title": stock.title}) "title": STOCK.title})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], self.assertEqual(response.headers["Location"],
f"{PREFIX}/{stock.base_code}-002") f"{PREFIX}/{STOCK.base_code}-002")
# Success under the same base, with order in a mess. # Success under the same base, with order in a mess.
with self.app.app_context(): with self.app.app_context():
stock_2: Account = Account.find_by_code(f"{stock.base_code}-002") stock_2: Account = Account.find_by_code(f"{STOCK.base_code}-002")
stock_2.no = 66 stock_2.no = 66
db.session.commit() db.session.commit()
response = self.client.post(store_uri, response = self.client.post(store_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": stock.base_code, "base_code": STOCK.base_code,
"title": stock.title}) "title": STOCK.title})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], self.assertEqual(response.headers["Location"],
f"{PREFIX}/{stock.base_code}-003") f"{PREFIX}/{STOCK.base_code}-003")
with self.app.app_context(): with self.app.app_context():
self.assertEqual({x.code for x in Account.query.all()}, self.assertEqual({x.code for x in Account.query.all()},
{cash.code, bank.code, stock.code, {CASH.code, BANK.code, STOCK.code,
f"{stock.base_code}-002", f"{STOCK.base_code}-002",
f"{stock.base_code}-003"}) f"{STOCK.base_code}-003"})
account: Account = Account.find_by_code(stock.code) account: Account = Account.find_by_code(STOCK.code)
self.assertEqual(account.base_code, stock.base_code) self.assertEqual(account.base_code, STOCK.base_code)
self.assertEqual(account.title_l10n, stock.title) self.assertEqual(account.title_l10n, STOCK.title)
def test_basic_update(self) -> None: def test_basic_update(self) -> None:
"""Tests the basic rules to update a user. """Tests the basic rules to update a user.
@ -431,30 +431,30 @@ class AccountTestCase(unittest.TestCase):
:return: None. :return: None.
""" """
from accounting.models import Account from accounting.models import Account
detail_uri: str = f"{PREFIX}/{cash.code}" detail_uri: str = f"{PREFIX}/{CASH.code}"
edit_uri: str = f"{PREFIX}/{cash.code}/edit" edit_uri: str = f"{PREFIX}/{CASH.code}/edit"
update_uri: str = f"{PREFIX}/{cash.code}/update" update_uri: str = f"{PREFIX}/{CASH.code}/update"
detail_c_uri: str = f"{PREFIX}/{stock.code}" detail_c_uri: str = f"{PREFIX}/{STOCK.code}"
response: httpx.Response response: httpx.Response
# Success, with spaces to be stripped # Success, with spaces to be stripped
response = self.client.post(update_uri, response = self.client.post(update_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": f" {cash.base_code} ", "base_code": f" {CASH.base_code} ",
"title": f" {cash.title}-1 "}) "title": f" {CASH.title}-1 "})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], detail_uri) self.assertEqual(response.headers["Location"], detail_uri)
with self.app.app_context(): with self.app.app_context():
account: Account = Account.find_by_code(cash.code) account: Account = Account.find_by_code(CASH.code)
self.assertEqual(account.base_code, cash.base_code) self.assertEqual(account.base_code, CASH.base_code)
self.assertEqual(account.title_l10n, f"{cash.title}-1") self.assertEqual(account.title_l10n, f"{CASH.title}-1")
# Empty base account code # Empty base account code
response = self.client.post(update_uri, response = self.client.post(update_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": " ", "base_code": " ",
"title": stock.title}) "title": STOCK.title})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], edit_uri) self.assertEqual(response.headers["Location"], edit_uri)
@ -462,7 +462,7 @@ class AccountTestCase(unittest.TestCase):
response = self.client.post(update_uri, response = self.client.post(update_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": "9999", "base_code": "9999",
"title": stock.title}) "title": STOCK.title})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], edit_uri) self.assertEqual(response.headers["Location"], edit_uri)
@ -470,14 +470,14 @@ class AccountTestCase(unittest.TestCase):
response = self.client.post(update_uri, response = self.client.post(update_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": "1", "base_code": "1",
"title": stock.title}) "title": STOCK.title})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], edit_uri) self.assertEqual(response.headers["Location"], edit_uri)
# Empty name # Empty name
response = self.client.post(update_uri, response = self.client.post(update_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": stock.base_code, "base_code": STOCK.base_code,
"title": " "}) "title": " "})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], edit_uri) self.assertEqual(response.headers["Location"], edit_uri)
@ -486,7 +486,7 @@ class AccountTestCase(unittest.TestCase):
response = self.client.post(update_uri, response = self.client.post(update_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": "6172", "base_code": "6172",
"title": stock.title, "title": STOCK.title,
"is_need_offset": "yes"}) "is_need_offset": "yes"})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], edit_uri) self.assertEqual(response.headers["Location"], edit_uri)
@ -494,8 +494,8 @@ class AccountTestCase(unittest.TestCase):
# Change the base account # Change the base account
response = self.client.post(update_uri, response = self.client.post(update_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": stock.base_code, "base_code": STOCK.base_code,
"title": stock.title}) "title": STOCK.title})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], detail_c_uri) self.assertEqual(response.headers["Location"], detail_c_uri)
@ -511,20 +511,20 @@ class AccountTestCase(unittest.TestCase):
:return: None. :return: None.
""" """
from accounting.models import Account from accounting.models import Account
detail_uri: str = f"{PREFIX}/{cash.code}" detail_uri: str = f"{PREFIX}/{CASH.code}"
update_uri: str = f"{PREFIX}/{cash.code}/update" update_uri: str = f"{PREFIX}/{CASH.code}/update"
account: Account account: Account
response: httpx.Response response: httpx.Response
response = self.client.post(update_uri, response = self.client.post(update_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": f" {cash.base_code} ", "base_code": f" {CASH.base_code} ",
"title": f" {cash.title} "}) "title": f" {CASH.title} "})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], detail_uri) self.assertEqual(response.headers["Location"], detail_uri)
with self.app.app_context(): with self.app.app_context():
account = Account.find_by_code(cash.code) account = Account.find_by_code(CASH.code)
self.assertIsNotNone(account) self.assertIsNotNone(account)
account.created_at \ account.created_at \
= account.created_at - timedelta(seconds=5) = account.created_at - timedelta(seconds=5)
@ -533,13 +533,13 @@ class AccountTestCase(unittest.TestCase):
response = self.client.post(update_uri, response = self.client.post(update_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": cash.base_code, "base_code": CASH.base_code,
"title": stock.title}) "title": STOCK.title})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], detail_uri) self.assertEqual(response.headers["Location"], detail_uri)
with self.app.app_context(): with self.app.app_context():
account = Account.find_by_code(cash.code) account = Account.find_by_code(CASH.code)
self.assertIsNotNone(account) self.assertIsNotNone(account)
self.assertLess(account.created_at, self.assertLess(account.created_at,
account.updated_at) account.updated_at)
@ -552,25 +552,25 @@ class AccountTestCase(unittest.TestCase):
from accounting.models import Account from accounting.models import Account
editor_username, editor2_username = "editor", "editor2" editor_username, editor2_username = "editor", "editor2"
client, csrf_token = get_client(self.app, editor2_username) client, csrf_token = get_client(self.app, editor2_username)
detail_uri: str = f"{PREFIX}/{cash.code}" detail_uri: str = f"{PREFIX}/{CASH.code}"
update_uri: str = f"{PREFIX}/{cash.code}/update" update_uri: str = f"{PREFIX}/{CASH.code}/update"
account: Account account: Account
response: httpx.Response response: httpx.Response
with self.app.app_context(): with self.app.app_context():
account = Account.find_by_code(cash.code) account = Account.find_by_code(CASH.code)
self.assertEqual(account.created_by.username, editor_username) self.assertEqual(account.created_by.username, editor_username)
self.assertEqual(account.updated_by.username, editor_username) self.assertEqual(account.updated_by.username, editor_username)
response = client.post(update_uri, response = client.post(update_uri,
data={"csrf_token": csrf_token, data={"csrf_token": csrf_token,
"base_code": cash.base_code, "base_code": CASH.base_code,
"title": f"{cash.title}-2"}) "title": f"{CASH.title}-2"})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], detail_uri) self.assertEqual(response.headers["Location"], detail_uri)
with self.app.app_context(): with self.app.app_context():
account = Account.find_by_code(cash.code) account = Account.find_by_code(CASH.code)
self.assertEqual(account.created_by.username, self.assertEqual(account.created_by.username,
editor_username) editor_username)
self.assertEqual(account.updated_by.username, self.assertEqual(account.updated_by.username,
@ -582,60 +582,60 @@ class AccountTestCase(unittest.TestCase):
:return: None :return: None
""" """
from accounting.models import Account from accounting.models import Account
detail_uri: str = f"{PREFIX}/{cash.code}" detail_uri: str = f"{PREFIX}/{CASH.code}"
update_uri: str = f"{PREFIX}/{cash.code}/update" update_uri: str = f"{PREFIX}/{CASH.code}/update"
account: Account account: Account
response: httpx.Response response: httpx.Response
with self.app.app_context(): with self.app.app_context():
account = Account.find_by_code(cash.code) account = Account.find_by_code(CASH.code)
self.assertEqual(account.title_l10n, cash.title) self.assertEqual(account.title_l10n, CASH.title)
self.assertEqual(account.l10n, []) self.assertEqual(account.l10n, [])
set_locale(self.client, self.csrf_token, "zh_Hant") set_locale(self.client, self.csrf_token, "zh_Hant")
response = self.client.post(update_uri, response = self.client.post(update_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": cash.base_code, "base_code": CASH.base_code,
"title": f"{cash.title}-zh_Hant"}) "title": f"{CASH.title}-zh_Hant"})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], detail_uri) self.assertEqual(response.headers["Location"], detail_uri)
with self.app.app_context(): with self.app.app_context():
account = Account.find_by_code(cash.code) account = Account.find_by_code(CASH.code)
self.assertEqual(account.title_l10n, cash.title) self.assertEqual(account.title_l10n, CASH.title)
self.assertEqual({(x.locale, x.title) for x in account.l10n}, self.assertEqual({(x.locale, x.title) for x in account.l10n},
{("zh_Hant", f"{cash.title}-zh_Hant")}) {("zh_Hant", f"{CASH.title}-zh_Hant")})
set_locale(self.client, self.csrf_token, "en") set_locale(self.client, self.csrf_token, "en")
response = self.client.post(update_uri, response = self.client.post(update_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": cash.base_code, "base_code": CASH.base_code,
"title": f"{cash.title}-2"}) "title": f"{CASH.title}-2"})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], detail_uri) self.assertEqual(response.headers["Location"], detail_uri)
with self.app.app_context(): with self.app.app_context():
account = Account.find_by_code(cash.code) account = Account.find_by_code(CASH.code)
self.assertEqual(account.title_l10n, f"{cash.title}-2") self.assertEqual(account.title_l10n, f"{CASH.title}-2")
self.assertEqual({(x.locale, x.title) for x in account.l10n}, self.assertEqual({(x.locale, x.title) for x in account.l10n},
{("zh_Hant", f"{cash.title}-zh_Hant")}) {("zh_Hant", f"{CASH.title}-zh_Hant")})
set_locale(self.client, self.csrf_token, "zh_Hant") set_locale(self.client, self.csrf_token, "zh_Hant")
response = self.client.post(update_uri, response = self.client.post(update_uri,
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": cash.base_code, "base_code": CASH.base_code,
"title": f"{cash.title}-zh_Hant-2"}) "title": f"{CASH.title}-zh_Hant-2"})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], detail_uri) self.assertEqual(response.headers["Location"], detail_uri)
with self.app.app_context(): with self.app.app_context():
account = Account.find_by_code(cash.code) account = Account.find_by_code(CASH.code)
self.assertEqual(account.title_l10n, f"{cash.title}-2") self.assertEqual(account.title_l10n, f"{CASH.title}-2")
self.assertEqual({(x.locale, x.title) for x in account.l10n}, self.assertEqual({(x.locale, x.title) for x in account.l10n},
{("zh_Hant", f"{cash.title}-zh_Hant-2")}) {("zh_Hant", f"{CASH.title}-zh_Hant-2")})
def test_delete(self) -> None: def test_delete(self) -> None:
"""Tests to delete a currency. """Tests to delete a currency.
@ -643,18 +643,18 @@ class AccountTestCase(unittest.TestCase):
:return: None. :return: None.
""" """
from accounting.models import Account from accounting.models import Account
detail_uri: str = f"{PREFIX}/{bank.code}" detail_uri: str = f"{PREFIX}/{BANK.code}"
delete_uri: str = f"{PREFIX}/{bank.code}/delete" delete_uri: str = f"{PREFIX}/{BANK.code}/delete"
list_uri: str = PREFIX list_uri: str = PREFIX
response: httpx.Response response: httpx.Response
response = self.client.post(f"{PREFIX}/store", response = self.client.post(f"{PREFIX}/store",
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
"base_code": petty.base_code, "base_code": PETTY.base_code,
"title": petty.title}) "title": PETTY.title})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], self.assertEqual(response.headers["Location"],
f"{PREFIX}/{petty.code}") f"{PREFIX}/{PETTY.code}")
response = self.client.post("/accounting/currencies/store", response = self.client.post("/accounting/currencies/store",
data={"csrf_token": self.csrf_token, data={"csrf_token": self.csrf_token,
@ -669,26 +669,26 @@ class AccountTestCase(unittest.TestCase):
"next": NEXT_URI, "next": NEXT_URI,
"date": date.today().isoformat(), "date": date.today().isoformat(),
"currency-1-code": "USD", "currency-1-code": "USD",
"currency-1-credit-1-account_code": petty.code, "currency-1-credit-1-account_code": PETTY.code,
"currency-1-credit-1-amount": "20"}) "currency-1-credit-1-amount": "20"})
with self.app.app_context(): with self.app.app_context():
self.assertEqual({x.code for x in Account.query.all()}, self.assertEqual({x.code for x in Account.query.all()},
{cash.code, petty.code, bank.code}) {CASH.code, PETTY.code, BANK.code})
# Cannot delete the cash account # Cannot delete the cash account
response = self.client.post(f"{PREFIX}/{cash.code}/delete", response = self.client.post(f"{PREFIX}/{CASH.code}/delete",
data={"csrf_token": self.csrf_token}) data={"csrf_token": self.csrf_token})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], self.assertEqual(response.headers["Location"],
f"{PREFIX}/{cash.code}") f"{PREFIX}/{CASH.code}")
# Cannot delete the account that is in use # Cannot delete the account that is in use
response = self.client.post(f"{PREFIX}/{petty.code}/delete", response = self.client.post(f"{PREFIX}/{PETTY.code}/delete",
data={"csrf_token": self.csrf_token}) data={"csrf_token": self.csrf_token})
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertEqual(response.headers["Location"], self.assertEqual(response.headers["Location"],
f"{PREFIX}/{petty.code}") f"{PREFIX}/{PETTY.code}")
# Success # Success
response = self.client.get(detail_uri) response = self.client.get(detail_uri)
@ -700,7 +700,7 @@ class AccountTestCase(unittest.TestCase):
with self.app.app_context(): with self.app.app_context():
self.assertEqual({x.code for x in Account.query.all()}, self.assertEqual({x.code for x in Account.query.all()},
{cash.code, petty.code}) {CASH.code, PETTY.code})
response = self.client.get(detail_uri) response = self.client.get(detail_uri)
self.assertEqual(response.status_code, 404) self.assertEqual(response.status_code, 404)