fix: Eine Gegenseite, die Tage spaeter gebucht wurde, wird jetzt zum Verbinden vorgeschlagen
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
f52113e05d
commit
b1f5eb9a51
@@ -309,3 +309,48 @@ def test_vorschlaege_veraendern_nichts(admin):
|
||||
# Und es ist wirklich keine Verknuepfung entstanden.
|
||||
links = admin.get("/api/transactions/links").json()
|
||||
assert str(raus["id"]) not in links and str(rein["id"]) not in links
|
||||
|
||||
|
||||
def _konto_chf(admin, name):
|
||||
import secrets
|
||||
return admin.post("/api/accounts", json={
|
||||
"name": f"{name} {secrets.token_hex(3)}", "type": "girokonto",
|
||||
"currency": "CHF", "opening_balance_cents": 0}).json()
|
||||
|
||||
|
||||
def test_vorschlag_auch_wenn_die_gegenseite_tage_spaeter_steht(admin):
|
||||
"""Die Bank bucht die Gegenseite ein bis drei Tage spaeter. Die
|
||||
Uebertrags-Pruefung sucht sie deshalb ueber ein Fenster und schickt den
|
||||
Nutzer zum Verbinden – die Vorschlagsliste kannte aber nur den gleichen
|
||||
Tag und bot das Paar nie an. Dann steht er vor einer Meldung, der er nicht
|
||||
folgen kann."""
|
||||
import secrets
|
||||
|
||||
quelle = _konto_chf(admin, "Revolut")
|
||||
pocket = _konto_chf(admin, "Sparen Pocket")
|
||||
betrag = 62 + secrets.randbelow(900)
|
||||
text = f"Sparen {secrets.token_hex(4)}"
|
||||
|
||||
raus = admin.post("/api/transactions", json={
|
||||
"type": "expense", "date": "2026-05-27", "account_id": quelle["id"],
|
||||
"amount_cents": betrag, "payee": text}).json()
|
||||
rein = admin.post("/api/transactions", json={
|
||||
"type": "income", "date": "2026-05-29", "account_id": pocket["id"],
|
||||
"amount_cents": betrag, "payee": text}).json()
|
||||
|
||||
paare = admin.get("/api/uebertraege/vorschlaege").json()["vorschlaege"]
|
||||
meins = [p for p in paare
|
||||
if {p["a"]["id"], p["b"]["id"]} == {raus["id"], rein["id"]}]
|
||||
assert meins, "zwei Tage Abstand muessen als Vorschlag erscheinen"
|
||||
|
||||
# Von SELBST verknuepft wird weiter nur am gleichen Tag: Ein Vorschlag
|
||||
# fragt, das automatische Verknuepfen entscheidet – und das bleibt eng.
|
||||
admin.post("/api/uebertraege/suchen")
|
||||
links = admin.get("/api/uebertraege").json()
|
||||
assert not [l for l in links
|
||||
if {l["from_txn_id"], l["to_txn_id"]} == {raus["id"], rein["id"]}], \
|
||||
"ueber Tage hinweg darf nur vorgeschlagen, nicht selbst verknuepft werden"
|
||||
|
||||
# Bestaetigen kann der Nutzer es trotzdem.
|
||||
assert admin.post("/api/uebertraege/verbinden",
|
||||
json={"a_id": raus["id"], "b_id": rein["id"]}).status_code == 200
|
||||
|
||||
Reference in New Issue
Block a user