refactor: comentarii strict functionale, fara referinte PRD/stories
Curatare globala a comentariilor si docstring-urilor (app, tools, teste, scripturi): eliminate referintele la PRD-uri, US-xxx, task-uri istorice si review-uri; pastrata doar informatia functionala, formulata scurt. Regula adaugata in CLAUDE.md (sectiunea Stil). Fara modificari de cod sau comportament. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,23 +1,16 @@
|
||||
"""Teste US-008 (PRD 5.11) — Auto-refresh dupa actiuni proprii.
|
||||
"""Teste pentru auto-refresh dupa actiuni proprii pe lista de trimiteri.
|
||||
|
||||
Comportament dorit:
|
||||
Comportament:
|
||||
1. Dupa actiune proprie (mapare inline, corectie, repune, commit), lista
|
||||
Trimiteri se reincarca automat, fara click pe Reincarca.
|
||||
Mecanism: server emite HX-Trigger: trimiteriChanged; #submissions-wrap
|
||||
asculta 'trimiteriChanged from:body' si re-fetches imediat.
|
||||
2. Filtrul activ si pagina curenta NU se reseteaza la auto-refresh.
|
||||
Mecanism: hx-include="#filtre-trimiteri" pe #submissions-wrap.
|
||||
3. Pollerul de fundal face auto-refresh direct la date noi (versiune diferita)
|
||||
in loc sa afiseze nudge-ul "Date noi. Reincarca".
|
||||
Decizie (documentata): nudge eliminat. Distinctia own vs externe nu e posibila
|
||||
pe client fara sesiune dedicata — auto-refresh e mai consistent si mai simplu.
|
||||
4. Elementul #nudge-trimiteri eliminat din template (dead code dupa schimbarea poller).
|
||||
|
||||
TDD: testele 1-2 sunt GREEN (comportament deja implementat — regresie).
|
||||
testele 3-4 sunt RED→GREEN (implementate in aceeasi sesiune).
|
||||
testele 5-6 (test_actiune_proprie_reincarca_automat, test_nudge_nu_mai_blocheaza)
|
||||
sunt adaugate cu numele exacte din spec PRD (GREEN de la primul run — implementarea
|
||||
existenta le satisface).
|
||||
3. Pollerul de fundal face auto-refresh direct la date noi (versiune diferita),
|
||||
fara nudge intermediar: distinctia intre schimbare proprie si externa nu e
|
||||
posibila pe client fara sesiune dedicata, iar auto-refresh e mai simplu.
|
||||
4. Elementul #nudge-trimiteri e eliminat din template.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -80,10 +73,6 @@ def _add_nomenclator(cod: str = "R-FRANE", nume: str = "Reparatie frane") -> Non
|
||||
conn.close()
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# Test 1 — GREEN (regresie): submissions-wrap reincarca la trimiteriChanged #
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
def test_submissions_wrap_reincarca_la_trimiteriChanged(client):
|
||||
"""#submissions-wrap se reincarca automat la evenimentul trimiteriChanged.
|
||||
|
||||
@@ -108,10 +97,6 @@ def test_submissions_wrap_reincarca_la_trimiteriChanged(client):
|
||||
)
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# Test 2 — GREEN (regresie): filtrul nu se reseteaza la auto-refresh #
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
def test_submissions_wrap_pastreaza_filtrul_la_auto_refresh(client):
|
||||
"""Auto-refresh-ul nu reseteaza filtrul activ sau pagina curenta.
|
||||
|
||||
@@ -131,47 +116,27 @@ def test_submissions_wrap_pastreaza_filtrul_la_auto_refresh(client):
|
||||
)
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# Test 3 — RED: pollerul face auto-refresh, nu arata nudge #
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
def test_poller_auto_refresh_nu_nudge(client):
|
||||
"""Pollerul de fundal face auto-refresh la date noi, NU afiseaza nudge.
|
||||
|
||||
Pattern curent (RED): cand versiunea difera, pollerul face nudge.hidden = false.
|
||||
Pattern dorit (GREEN): cand versiunea difera, pollerul cheama reincarcaTrimiteri()
|
||||
care re-fetches #submissions-wrap pastrand filtrul curent.
|
||||
|
||||
Decizie: nudge eliminat complet (nu ramane 'doar pentru schimbari externe')
|
||||
pentru ca distinctia propriu vs extern e imposibila pe client fara
|
||||
mecanism de sesiune dedicat (too complex, no gain).
|
||||
Cand versiunea difera, pollerul cheama reincarcaTrimiteri() care re-fetches
|
||||
#submissions-wrap pastrand filtrul curent, in loc sa arate un nudge.
|
||||
"""
|
||||
r = client.get("/")
|
||||
assert r.status_code == 200, r.text
|
||||
html = r.text
|
||||
|
||||
# Pollerul NU mai seteaza nudge.hidden = false in handler-ul de versiune diferita.
|
||||
# (Prezenta acestui pattern indica implementarea veche — RED.)
|
||||
assert "nudge.hidden = false" not in html, (
|
||||
"Pollerul inca arata nudge in loc de auto-refresh — "
|
||||
"schimbati 'nudge.hidden = false' cu 'reincarcaTrimiteri()' in base.html"
|
||||
)
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# Test 4 — RED: nudge-ul e eliminat din template #
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
def test_nudge_eliminat_din_lista(client):
|
||||
"""Elementul #nudge-trimiteri este eliminat din template-ul listei.
|
||||
|
||||
Dupa ce pollerul trece la auto-refresh, nudge-ul devine dead code.
|
||||
Eliminarea lui simplifica template-ul si elimina un element de UI confuz
|
||||
(utilizatorul vedea 'Date noi. Reincarca' chiar daca lista era actuala,
|
||||
din cauza refreshului propriu care nu actualiza versiunea fast enough).
|
||||
|
||||
Nota: _coada.html se randeaza doar cand sunt submission-uri. Semanarea
|
||||
asigura ca _coada.html e inclus in raspuns (altfel testul ar pasa vacuos).
|
||||
Semanarea unui submission asigura ca _coada.html e inclus in raspuns
|
||||
(altfel testul ar pasa vacuos).
|
||||
"""
|
||||
_add_submission()
|
||||
|
||||
@@ -184,22 +149,16 @@ def test_nudge_eliminat_din_lista(client):
|
||||
)
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# Test 5 (spec PRD): actiune proprie reincarca automat fara click Reincarca #
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
def test_actiune_proprie_reincarca_automat(client):
|
||||
"""Dupa o actiune proprie (mapare inline), lista se reincarca automat.
|
||||
|
||||
Verifica doua componente ale mecanismului:
|
||||
1. Server-side: POST la mapare inline returneaza HX-Trigger: trimiteriChanged
|
||||
in headerele raspunsului (indiferent de starea noua a submission-ului).
|
||||
2. Client-side: #submissions-wrap asculta 'trimiteriChanged from:body' in
|
||||
hx-trigger — HTMX va declansa re-fetch imediat la primirea headerului,
|
||||
fara click pe Reincarca.
|
||||
1. Server-side: POST la mapare inline returneaza HX-Trigger: trimiteriChanged.
|
||||
2. Client-side: #submissions-wrap asculta 'trimiteriChanged from:body' si
|
||||
declanseaza re-fetch imediat la primirea headerului.
|
||||
|
||||
Testeaza calea mapare-inline; corectie/repune/commit sunt acoperite similar
|
||||
(toate emit HX-Trigger: trimiteriChanged — verificate in test_import_commit.py).
|
||||
(verificate in test_import_commit.py).
|
||||
"""
|
||||
_add_nomenclator("R-FRANE", "Reparatie frane")
|
||||
sub_id = _add_submission(
|
||||
@@ -207,21 +166,18 @@ def test_actiune_proprie_reincarca_automat(client):
|
||||
payload={"prestatii": [{"cod_op_service": "OP-FRANE"}]},
|
||||
)
|
||||
|
||||
# POST mapare inline — emite HX-Trigger: trimiteriChanged
|
||||
r = client.post(
|
||||
f"/trimitere/{sub_id}/mapeaza",
|
||||
data={"csrf_token": "", "cod_op_service": "OP-FRANE", "cod_prestatie": "R-FRANE"},
|
||||
)
|
||||
assert r.status_code == 200, r.text
|
||||
|
||||
# Server emite triggerul — HTMX va declansa auto-refresh pe client
|
||||
hx = r.headers.get("HX-Trigger", "")
|
||||
assert "trimiteriChanged" in hx, (
|
||||
f"Mapare inline nu emite HX-Trigger: trimiteriChanged — "
|
||||
f"lista nu se va reincarca automat. Header primit: {hx!r}"
|
||||
)
|
||||
|
||||
# Client-side: #submissions-wrap asculta triggerul (markup existent in template)
|
||||
r_acasa = client.get("/_fragments/acasa")
|
||||
assert "trimiteriChanged from:body" in r_acasa.text, (
|
||||
"#submissions-wrap nu asculta 'trimiteriChanged from:body' — "
|
||||
@@ -229,42 +185,28 @@ def test_actiune_proprie_reincarca_automat(client):
|
||||
)
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# Test 6 (spec PRD): nudge nu mai blocheaza actualizarea #
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
def test_nudge_nu_mai_blocheaza_actualizarea(client):
|
||||
"""Nudge-ul 'Date noi. Reincarca' nu mai poate bloca actualizarea listei.
|
||||
|
||||
Inainte de US-008, mecanismul era: poller detecteaza versiune diferita →
|
||||
arata nudge → utilizatorul trebuia sa apese 'Reincarca' manual.
|
||||
Dupa US-008, nudge-ul e eliminat (decizie documentata mai jos) si pollerul
|
||||
cheama direct reincarcaTrimiteri() → actualizare automata, fara click.
|
||||
|
||||
Decizie privind nudge: ELIMINAT complet (nu pastrat pentru schimbari externe).
|
||||
Rationale: distinctia 'actiune proprie vs schimbare externa' nu e posibila
|
||||
pe client fara mecanism dedicat de sesiune. Auto-refresh periodic (la versiune
|
||||
diferita) acopera si schimbarile externe (worker, alt browser) fara friction.
|
||||
Pollerul cheama direct reincarcaTrimiteri() la versiune diferita —
|
||||
actualizare automata, fara ca utilizatorul sa trebuiasca sa apese un buton.
|
||||
"""
|
||||
_add_submission() # are_trimiteri=True → _coada.html se randeaza
|
||||
_add_submission()
|
||||
|
||||
r_pagina = client.get("/_fragments/acasa")
|
||||
assert r_pagina.status_code == 200, r_pagina.text
|
||||
html = r_pagina.text
|
||||
|
||||
# Nudge eliminat: nu mai poate bloca utilizatorul cu un banner "Reincarca"
|
||||
assert "nudge-trimiteri" not in html, (
|
||||
"#nudge-trimiteri inca exista — poate bloca actualizarea (US-008 il elimina)"
|
||||
"#nudge-trimiteri inca exista — poate bloca actualizarea listei"
|
||||
)
|
||||
|
||||
# Pollerul JS nu mai seteaza nudge.hidden = false: nu poate "bloca" prin afisare nudge
|
||||
r_home = client.get("/")
|
||||
assert r_home.status_code == 200, r_home.text
|
||||
assert "nudge.hidden = false" not in r_home.text, (
|
||||
"Pollerul JS inca poate afisa nudge-ul — schimbati cu reincarcaTrimiteri()"
|
||||
)
|
||||
|
||||
# Pollerul cheama reincarcaTrimiteri() la versiune diferita (auto-refresh)
|
||||
assert "reincarcaTrimiteri" in r_home.text, (
|
||||
"reincarcaTrimiteri() lipseste din poller — auto-refresh nu va functiona"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user