Partner-Self-Service: Einzel-Code-Status — welcher Sticker ist verbraucht?
Rene: 'wo sieht der Partner welche QR-Codes er hat und wieviele verbraucht
sind?' Neu in 'Meine QR-Codes':
- Kontingent-Zeile zeigt 'X/Y verbraucht' (Codes mit ≥1 bestätigter Registrierung)
- Listen-Button klappt Einzel-Codes auf: #Nr, Kurz-URL, Scans und Status
● verbraucht (mit Registrierungs-Datum) / ◐ gescannt / ○ frei
- Endpoint /partner/my-qr/{id}/codes (owner-gated, keine personenbezogenen
Daten — nur Zähler + Zeitstempel)
This commit is contained in:
parent
970480c1d6
commit
df2f42f8ac
8 changed files with 134 additions and 41 deletions
|
|
@ -143,5 +143,29 @@ def test_partner_self_service_qr(client, admin, user):
|
|||
assert r.status_code == 200
|
||||
r = client.get("/api/partner/my-qr", headers=user["headers"])
|
||||
assert [b["id"] for b in r.json()] == [batch["id"]]
|
||||
assert r.json()[0]["codes_used"] == 0
|
||||
r = client.get(f"/api/partner/my-qr/{batch['id']}/pdf", headers=user["headers"])
|
||||
assert r.status_code == 200 and r.content[:4] == b"%PDF"
|
||||
|
||||
# Einzel-Code-Status: alle frei, dann einer verbraucht
|
||||
r = client.get(f"/api/partner/my-qr/{batch['id']}/codes", headers=user["headers"])
|
||||
codes_list = r.json()
|
||||
assert len(codes_list) == 3
|
||||
assert all(c["registrations"] == 0 and c["scans"] == 0 for c in codes_list)
|
||||
|
||||
token = codes_list[0]["token"]
|
||||
client.get(f"/q/{token}", follow_redirects=False)
|
||||
email = f"qrc-{secrets.token_hex(4)}@example.com"
|
||||
client.post("/api/auth/register", json={
|
||||
"email": email, "password": "QrTest1234!", "name": f"qrc{secrets.token_hex(3)}",
|
||||
"ref_code": code["code"], "qr_token": token,
|
||||
})
|
||||
with db() as conn:
|
||||
conn.execute("UPDATE users SET email_verified=1 WHERE email=?", (email,))
|
||||
|
||||
r = client.get(f"/api/partner/my-qr/{batch['id']}/codes", headers=user["headers"])
|
||||
first = [c for c in r.json() if c["seq"] == 1][0]
|
||||
assert first["scans"] == 1 and first["registrations"] == 1
|
||||
assert first["first_registration_at"]
|
||||
r = client.get("/api/partner/my-qr", headers=user["headers"])
|
||||
assert r.json()[0]["codes_used"] == 1
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue