feat: Buchungs-Pagination, Inbox-Scan-Button, Grafana-Direktansteuerung, UI-Feinschliff

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-19 16:18:54 +02:00
parent 0bad69bf42
commit d71c22adce
10 changed files with 149 additions and 13 deletions

View File

@@ -1,3 +1,7 @@
from datetime import date, timedelta
from decimal import Decimal
def test_pages_require_login(client):
for path in ("/", "/buchungen", "/import", "/planung", "/hilfe"):
r = client.get(path, follow_redirects=False)
@@ -41,6 +45,37 @@ def test_version_visible(client):
assert "v0.2.0" in client.get("/").text
def test_buchungen_pagination(client, db):
from app.models.tables import Account, Transaction
acc = Account(bank="dkb", iban="DE01", name="G", type="giro")
db.add(acc)
db.flush()
base = date(2026, 1, 1)
for i in range(1, 61):
purpose = "MARKER51" if i == 51 else f"TX{i}"
db.add(Transaction(
account_id=acc.id, booking_date=base + timedelta(days=i),
amount=Decimal("10.00"), purpose=purpose, counterparty="X",
status="confirmed", dedup_hash=f"hash-{i}",
))
db.commit()
client.post("/login", data={"username": "admin", "password": "geheim"})
r1 = client.get("/buchungen")
assert r1.status_code == 200
assert "Seite 1 von 2" in r1.text
assert "Weiter" in r1.text
assert "MARKER51" not in r1.text
r2 = client.get("/buchungen?page=2")
assert r2.status_code == 200
assert "Seite 2 von 2" in r2.text
assert "Zurück" in r2.text
assert "MARKER51" in r2.text
def test_planning_page_has_all_sections(client):
client.post("/login", data={"username": "admin", "password": "geheim"})
r = client.get("/planung")