test: neutrale Kategorie gilt auch fuer Einnahmen
Seit der Import keine Konten mehr verbindet, wird aus jedem Uebertrag ein Paar: Ausgabe beim einen Konto, Einnahme beim anderen. Zaehlte nur die Ausgabe nicht, stuende das Geld als Einnahme in der Auswertung und die Monatsbilanz waere um den vollen Betrag zu gut. Der Test belegt: eine neutrale Kategorie aus einer AUSGABEN-Gruppe laesst sich einer Einnahme zuweisen, der Kontostand steigt, die Einnahmen der Auswertung bleiben unveraendert – und ohne die Markierung zaehlt dieselbe Buchung wieder mit. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -99,3 +99,44 @@ def test_neutral_keyword_matches_both_directions(admin):
|
|||||||
|
|
||||||
assert rows[0]["category_id"] == uebertrag["id"], "Ausgabe-Richtung"
|
assert rows[0]["category_id"] == uebertrag["id"], "Ausgabe-Richtung"
|
||||||
assert rows[1]["category_id"] == uebertrag["id"], "Einnahme-Richtung ebenso"
|
assert rows[1]["category_id"] == uebertrag["id"], "Einnahme-Richtung ebenso"
|
||||||
|
|
||||||
|
|
||||||
|
def _einnahmen(admin):
|
||||||
|
return admin.get("/api/dashboard/income-expense").json()["income"]
|
||||||
|
|
||||||
|
|
||||||
|
def test_neutrale_kategorie_gilt_auch_fuer_einnahmen(admin):
|
||||||
|
"""Die Gegenseite eines Kontoübertrags ist eine Einnahme – und darf ebenso
|
||||||
|
wenig in die Statistik einfliessen wie die Ausgabe.
|
||||||
|
|
||||||
|
Seit der Import keine Konten mehr verbindet, wird aus jedem Übertrag ein
|
||||||
|
Paar: Ausgabe beim einen Konto, Einnahme beim anderen. Zählte nur die
|
||||||
|
Ausgabe nicht, stünde das Geld als Einnahme in der Auswertung und die
|
||||||
|
Bilanz des Monats wäre um den vollen Betrag zu gut.
|
||||||
|
"""
|
||||||
|
acc = admin.post("/api/accounts", json={
|
||||||
|
"name": "Giro Neutral Einnahme", "type": "girokonto", "currency": "EUR",
|
||||||
|
"opening_balance_cents": 0,
|
||||||
|
}).json()
|
||||||
|
# Neutrale Kategorie liegt in einer AUSGABEN-Gruppe – sie muss trotzdem
|
||||||
|
# für eine Einnahme verwendbar sein.
|
||||||
|
uebertrag, = _expense_cats(admin, 1)
|
||||||
|
admin.patch(f"/api/categories/{uebertrag['id']}", json={"excluded_from_stats": True})
|
||||||
|
|
||||||
|
vorher = _einnahmen(admin)
|
||||||
|
heute = str(datetime.date.today())
|
||||||
|
r = admin.post("/api/transactions", json={
|
||||||
|
"type": "income", "date": heute, "account_id": acc["id"],
|
||||||
|
"amount_cents": 25000, "category_id": uebertrag["id"],
|
||||||
|
})
|
||||||
|
assert r.status_code == 201, r.text
|
||||||
|
|
||||||
|
# Der Kontostand steigt ...
|
||||||
|
assert admin.get(f"/api/accounts/{acc['id']}").json()["balance_cents"] == 25000
|
||||||
|
# ... die Einnahmen der Auswertung nicht.
|
||||||
|
assert _einnahmen(admin) == vorher
|
||||||
|
|
||||||
|
# Ohne die Markierung zählt dieselbe Buchung wieder mit.
|
||||||
|
admin.patch(f"/api/categories/{uebertrag['id']}", json={"excluded_from_stats": False})
|
||||||
|
assert _einnahmen(admin) == vorher + 25000
|
||||||
|
admin.patch(f"/api/categories/{uebertrag['id']}", json={"excluded_from_stats": True})
|
||||||
|
|||||||
Reference in New Issue
Block a user