fix: Konto umbenennen scheitert nicht mehr an Identifikator-UNIQUE
_set_identifiers glich die Liste per clear()+neu-Anlegen ab; SQLAlchemy fügte dabei die (unveränderten) Identifikatoren vor dem Löschen ein und verletzte so UNIQUE(account_id, kind, value_norm) -> Internal Server Error beim Speichern. Jetzt als Diff: unveränderte behalten, nur fehlende hinzufügen / überzählige entfernen. Betrifft alle Identifikator-Arten (IBAN/Nummer/Text). Regressionstest: Umbenennen mit unverändertem Identifikator + Entfernen (76 grün). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -53,6 +53,26 @@ def test_identifiers_stored_and_deduped(admin):
|
||||
assert ("card_no", "1234") in kinds
|
||||
|
||||
|
||||
def test_update_account_keeps_identifier(admin):
|
||||
"""Umbenennen mit unverändertem Identifikator darf nicht an der UNIQUE-
|
||||
Bedingung scheitern (Regression: früheres clear()+neu-Anlegen)."""
|
||||
acc = _mk_account(admin, name="Revolut CHF",
|
||||
identifiers=[{"kind": "text", "value": "Revolut**5064*"}])
|
||||
r = admin.patch(f"/api/accounts/{acc['id']}", json={
|
||||
"name": "Revolut CHF neu",
|
||||
"identifiers": [{"kind": "text", "value": "Revolut**5064*"}],
|
||||
})
|
||||
assert r.status_code == 200, r.text
|
||||
assert r.json()["name"] == "Revolut CHF neu"
|
||||
idents = r.json()["identifiers"]
|
||||
assert len(idents) == 1 and idents[0]["value"] == "Revolut**5064*"
|
||||
|
||||
# Identifikator entfernen klappt ebenfalls.
|
||||
r2 = admin.patch(f"/api/accounts/{acc['id']}", json={"name": "Ohne", "identifiers": []})
|
||||
assert r2.status_code == 200, r2.text
|
||||
assert r2.json()["identifiers"] == []
|
||||
|
||||
|
||||
def test_balance_and_cross_currency_transfer(admin):
|
||||
_seed_recent_rates("0.95")
|
||||
d = date.today()
|
||||
|
||||
Reference in New Issue
Block a user