feat: Vorschlaege mit Rhythmus, Start und Hinweis
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -246,6 +246,33 @@ def test_planning_page_shows_empty_suggestions_hint(client):
|
||||
assert r.status_code == 200
|
||||
assert "Vorschläge aus Buchungen" in r.text
|
||||
assert "Keine Vorschläge" in r.text
|
||||
assert ("Erkannt werden monatliche, vierteljährliche und jährliche "
|
||||
"Serien; Betrag = jeweils letzte Buchung.") in r.text
|
||||
|
||||
|
||||
def test_vorschlaege_zeigen_rhythmus_und_start(client, db):
|
||||
# Synthetische vierteljaehrliche Serie relativ zu date.today(), da die
|
||||
# Route suggest_recurring() ohne today-Injektion aufruft (echter
|
||||
# Aktiv-Check gegen date.today()). Schrittweite ~91 Tage rueckwaerts,
|
||||
# letzte Buchung 30 Tage vor heute (innerhalb des Aktiv-Fensters).
|
||||
from app.models.tables import Transaction
|
||||
|
||||
client.post("/login", data={"username": "admin", "password": "geheim"})
|
||||
acc = Account(bank="dkb", iban="DE-SUG-1", name="S", type="giro")
|
||||
db.add(acc)
|
||||
db.flush()
|
||||
today = date.today()
|
||||
booking_dates = [today - timedelta(days=d) for d in (303, 212, 121, 30)]
|
||||
for d in booking_dates:
|
||||
db.add(Transaction(account_id=acc.id, booking_date=d, amount=Decimal("-55.08"),
|
||||
purpose="p", counterparty="Rundfunk Synth", status="confirmed",
|
||||
dedup_hash=f"sug-{d.isoformat()}"))
|
||||
db.commit()
|
||||
r = client.get("/planung").text
|
||||
letzte_buchung = booking_dates[-1]
|
||||
assert "vierteljährlich" in r
|
||||
assert letzte_buchung.strftime("%d.%m.%Y") in r
|
||||
assert 'name="start_date"' in r
|
||||
|
||||
|
||||
def test_salden_page_stichtag_and_month_overview(client, db):
|
||||
|
||||
Reference in New Issue
Block a user