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,7 +1,4 @@
|
||||
"""Teste US-002 (PRD 3.4): bara de status persistenta cu etichete umane.
|
||||
|
||||
TDD: testele se scriu INAINTE de implementare; la inceput pica (RED),
|
||||
dupa implementare trec (GREEN).
|
||||
"""Teste pentru bara de status persistenta cu etichete umane.
|
||||
|
||||
Rute testate:
|
||||
- GET /_fragments/status -> bara de status cu etichete umane, scoped pe cont
|
||||
@@ -81,7 +78,7 @@ def client(monkeypatch):
|
||||
from app.config import get_settings
|
||||
get_settings.cache_clear()
|
||||
from app.web import ratelimit
|
||||
ratelimit._hits.clear() # izolare: limiterul login e global in-proces
|
||||
ratelimit._hits.clear() # limiterul login e global in-proces
|
||||
from app.main import app
|
||||
with TestClient(app, follow_redirects=False) as c:
|
||||
yield c
|
||||
@@ -89,16 +86,8 @@ def client(monkeypatch):
|
||||
get_settings.cache_clear()
|
||||
|
||||
|
||||
# ============================================================
|
||||
# test_status_fragment_text_uman
|
||||
# ============================================================
|
||||
|
||||
def test_status_fragment_text_uman(client):
|
||||
"""GET /_fragments/status (autentificat) -> contine text uman de sanatate, NU stari tehnice brute.
|
||||
|
||||
Actualizat US-003 (PRD 5.15): strip sanatate unificat in loc de bife individuale worker/RAR.
|
||||
Textul 'Trimitere automata' a fost inlocuit cu 'declaratiile curg normal' / 'Blocat: ...'.
|
||||
"""
|
||||
"""GET /_fragments/status (autentificat) -> contine text uman de sanatate, NU stari tehnice brute."""
|
||||
_create_account_user("status@test.com", "parolasecreta10")
|
||||
_login(client, "status@test.com", "parolasecreta10")
|
||||
|
||||
@@ -106,11 +95,9 @@ def test_status_fragment_text_uman(client):
|
||||
assert resp.status_code == 200
|
||||
|
||||
html = resp.text
|
||||
# US-003 D6: strip sanatate cu text uman compus (nu bife individuale)
|
||||
assert "declaratiile" in html.lower(), (
|
||||
f"Fragmentul nu contine textul de sanatate ('declaratiile'). HTML (primele 500 ch): {html[:500]}"
|
||||
)
|
||||
# NU trebuie sa contina text tehnic brut
|
||||
assert "worker viu" not in html.lower(), (
|
||||
f"Fragmentul contine 'worker viu' (text tehnic brut). HTML (primele 500 ch): {html[:500]}"
|
||||
)
|
||||
@@ -119,10 +106,6 @@ def test_status_fragment_text_uman(client):
|
||||
)
|
||||
|
||||
|
||||
# ============================================================
|
||||
# test_status_blocate_defalcare
|
||||
# ============================================================
|
||||
|
||||
def test_status_blocate_defalcare(client):
|
||||
"""Cu submissions blocate in DB, fragmentul arata defalcarea pe motiv (texte umane)."""
|
||||
acct_id, _ = _create_account_user("blocate@test.com", "parolasecreta10")
|
||||
@@ -134,23 +117,16 @@ def test_status_blocate_defalcare(client):
|
||||
_insert_submission("needs_data", acct_id)
|
||||
_insert_submission("error", acct_id)
|
||||
|
||||
# Pill-urile s-au mutat in bara de filtre din sectiunea Trimiteri (nu in bara de status).
|
||||
resp = client.get("/?tab=acasa")
|
||||
assert resp.status_code == 200
|
||||
html = resp.text
|
||||
# Pill-urile au etichetele scurte per categorie (nu etichetele lungi din eticheta_stare)
|
||||
assert "Lipsa cod" in html, "Acasa nu arata pill-ul pentru needs_mapping"
|
||||
assert "Date incomplete" in html, "Acasa nu arata pill-ul pentru needs_data"
|
||||
assert "Eroare" in html, "Acasa nu arata pill-ul pentru error"
|
||||
# Pill-urile arata numarul total per categorie (2 needs_mapping, 1 needs_data, 1 error)
|
||||
assert 'class="pill-cat"' in html, "Pill-urile trebuie sa fie elemente cu clasa pill-cat"
|
||||
assert "<button" in html, "Pill-urile trebuie sa fie elemente <button>"
|
||||
|
||||
|
||||
# ============================================================
|
||||
# test_status_se_reincarca_htmx
|
||||
# ============================================================
|
||||
|
||||
def test_status_se_reincarca_htmx(client):
|
||||
"""Fragmentul contine atribut hx-trigger cu poll periodic (every 15s)."""
|
||||
_create_account_user("htmx@test.com", "parolasecreta10")
|
||||
@@ -160,27 +136,20 @@ def test_status_se_reincarca_htmx(client):
|
||||
assert resp.status_code == 200
|
||||
|
||||
html = resp.text
|
||||
# Trebuie sa contina hx-trigger periodic
|
||||
assert "hx-trigger" in html, (
|
||||
f"Fragmentul nu contine atribut hx-trigger. HTML: {html[:500]}"
|
||||
)
|
||||
assert "every 15s" in html, (
|
||||
f"Fragmentul nu contine poll 'every 15s'. HTML: {html[:500]}"
|
||||
)
|
||||
# Trebuie sa aiba endpoint corect pentru auto-refresh
|
||||
assert "/_fragments/status" in html, (
|
||||
"Fragmentul nu contine referinta la /_fragments/status pentru hx-get"
|
||||
)
|
||||
# Trebuie sa aiba un id stabil pe containerul radacina
|
||||
assert 'id="status-bar"' in html, (
|
||||
"Fragmentul nu are id='status-bar' pe containerul radacina"
|
||||
)
|
||||
|
||||
|
||||
# ============================================================
|
||||
# US-014: banner "Necesita atentia ta" actionabil
|
||||
# ============================================================
|
||||
|
||||
def _insert_submission_vehicul(status, account_id, vin, nr):
|
||||
from app.db import get_connection
|
||||
import json
|
||||
@@ -204,21 +173,21 @@ def test_categorie_blocata_linkeaza_la_trimiteri_filtrate(client):
|
||||
_insert_submission("error", acct_id)
|
||||
|
||||
html = client.get("/?tab=acasa").text
|
||||
# Pill-ul scrie campul de filtru si re-trimite form-ul (nu mai navigheaza prin deep-link)
|
||||
assert "filtreazaStare(this, 'error')" in html
|
||||
assert 'data-status="error"' in html
|
||||
assert "tab=acasa&status=error" not in html
|
||||
|
||||
|
||||
def test_status_nu_arata_identificator_rand_blocat(client):
|
||||
"""US-003 (PRD 5.10): VIN/nr inmatriculare nu mai apar in bara de status.
|
||||
Lista de ID-uri a fost inlocuita cu pill-uri cu numar total (fara PII nominal)."""
|
||||
"""VIN/nr inmatriculare nu mai apar in bara de status.
|
||||
|
||||
Lista de ID-uri a fost inlocuita cu pill-uri cu numar total (fara PII nominal).
|
||||
"""
|
||||
acct_id, _ = _create_account_user("ident@test.com", "parolasecreta10")
|
||||
_login(client, "ident@test.com", "parolasecreta10")
|
||||
_insert_submission_vehicul("error", acct_id, "WVWZZZ1KZAW000123", "B123ABC")
|
||||
|
||||
html = client.get("/_fragments/status").text
|
||||
# Bara de status arata doar contoare, nu lista cu VIN/nr per rand (fara PII nominal)
|
||||
assert "B123ABC" not in html, "Nr inmatriculare nu trebuie sa mai apara in bara de status"
|
||||
assert "WVWZZZ1KZAW000123" not in html, "VIN integral nu trebuie expus"
|
||||
assert "0123" not in html, "VIN partial nu trebuie sa mai apara in bara de status"
|
||||
@@ -237,6 +206,5 @@ def test_scoped_pe_cont(client):
|
||||
_insert_submission_vehicul("error", other, "OTHERVIN000009999", "X999ZZZ")
|
||||
|
||||
html = client.get("/_fragments/status").text
|
||||
# randul altui cont NU apare in banner-ul meu
|
||||
assert "X999ZZZ" not in html
|
||||
assert "9999" not in html
|
||||
|
||||
Reference in New Issue
Block a user