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,12 +1,9 @@
|
||||
"""Teste US-003 (PRD 5.15): strip sanatate mereu-vizibil + carduri-contor pe dashboard.
|
||||
"""Teste strip sanatate mereu-vizibil + carduri-contor pe dashboard.
|
||||
|
||||
D6 (strip sanatate): linie colorata DEASUPRA contoarelor — verde "declaratiile curg" /
|
||||
Strip sanatate: linie colorata DEASUPRA contoarelor — verde "declaratiile curg" /
|
||||
rosu "Blocat: worker oprit / RAR inaccesibil", cu glifa accesibila (✓/✗).
|
||||
D4 (contoare): In coada / Trimise (all-time + luna/azi) / De corectat.
|
||||
E7 (timezone): azi/luna bucketate in timp local RO (UTC+3), nu UTC.
|
||||
|
||||
Actualizat in US-003 (PRD 5.15): bara veche cu bife individuale worker/RAR
|
||||
inlocuita de strip unificat de sanatate + carduri-contor.
|
||||
Contoare: In coada / Trimise (all-time + luna/azi) / De corectat.
|
||||
Timezone: azi/luna bucketate in timp local RO, nu UTC.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -77,11 +74,11 @@ def client(monkeypatch):
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Teste existente — actualizate pentru US-003 D6 (strip unificat in loc de bife individuale)
|
||||
# Strip unificat de sanatate (in loc de bife individuale)
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def test_status_are_bife_verzi_cand_totul_ok(client):
|
||||
"""US-003 PRD 5.16: worker viu + RAR login recent -> strip-sanatate in DOM dar ASCUNS (hidden).
|
||||
"""Worker viu + RAR login recent -> strip-sanatate in DOM dar ASCUNS (hidden).
|
||||
Banda rosie apare DOAR cand BLOCAT. Starea OK e indicata de dot-ul verde din antet (base.html).
|
||||
Elementul id=strip-sanatate ramane in DOM pentru compatibilitate (nu dispare complet).
|
||||
"""
|
||||
@@ -94,7 +91,7 @@ def test_status_are_bife_verzi_cand_totul_ok(client):
|
||||
resp = client.get("/_fragments/status")
|
||||
assert resp.status_code == 200
|
||||
html = resp.text
|
||||
# US-003: elementul strip-sanatate e prezent in DOM dar ascuns cand totul e ok
|
||||
# Elementul strip-sanatate e prezent in DOM dar ascuns cand totul e ok
|
||||
assert 'id="strip-sanatate"' in html, f"id=strip-sanatate lipseste complet din fragment. HTML: {html[:600]}"
|
||||
# Cand OK, banda nu trebuie sa afiseze ✗ (eroare) — ✓ nu mai apare (banda e ascunsa)
|
||||
assert "✗" not in html, \
|
||||
@@ -112,7 +109,7 @@ def test_status_are_bife_rosii_cand_worker_oprit(client):
|
||||
assert resp.status_code == 200
|
||||
html = resp.text
|
||||
assert "✗" in html, f"Lipseste glifa ✗ cand worker oprit. HTML: {html[:600]}"
|
||||
# US-003 D6: mesaj explicit (nu text vag "oprita")
|
||||
# Mesaj explicit (nu text vag "oprita")
|
||||
assert "blocat" in html.lower(), f"Cuvantul 'blocat' lipseste la worker oprit. HTML: {html[:600]}"
|
||||
assert "nu pleaca" in html.lower(), f"Avertismentul 'nu pleaca' lipseste. HTML: {html[:600]}"
|
||||
|
||||
@@ -133,7 +130,7 @@ def test_status_data_formatata_romaneste(client):
|
||||
|
||||
|
||||
def test_status_fara_fonturi_minuscule(client):
|
||||
"""Niciun text din bara nu mai foloseste font-size literal sub 13px (US-001 AC)."""
|
||||
"""Niciun text din bara nu mai foloseste font-size literal sub 13px."""
|
||||
_create_account_user("bifefont@test.com")
|
||||
_login(client, "bifefont@test.com", "parolasecreta10")
|
||||
|
||||
@@ -146,11 +143,11 @@ def test_status_fara_fonturi_minuscule(client):
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Teste NOI pentru US-003 (RED inainte de implementare)
|
||||
# Strip de sanatate mereu vizibil
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def test_strip_sanatate_mereu_vizibil(client):
|
||||
"""D6: strip de sanatate e prezent in fragment, indiferent de starea worker/RAR."""
|
||||
"""Strip de sanatate e prezent in fragment, indiferent de starea worker/RAR."""
|
||||
_create_account_user("stripviz@test.com")
|
||||
_login(client, "stripviz@test.com", "parolasecreta10")
|
||||
|
||||
@@ -167,7 +164,7 @@ def test_strip_sanatate_mereu_vizibil(client):
|
||||
|
||||
|
||||
def test_strip_rosu_worker_oprit(client):
|
||||
"""D6: worker oprit → strip rosu cu glifа ✗ + text 'Blocat: worker oprit — declaratiile NU pleaca'."""
|
||||
"""Worker oprit → strip rosu cu glifа ✗ + text 'Blocat: worker oprit — declaratiile NU pleaca'."""
|
||||
_create_account_user("stroprosu@test.com")
|
||||
_login(client, "stroprosu@test.com", "parolasecreta10")
|
||||
|
||||
@@ -185,7 +182,7 @@ def test_strip_rosu_worker_oprit(client):
|
||||
|
||||
|
||||
def test_trei_contoare_card(client):
|
||||
"""US-002 PRD 5.16: fragment status contine 5 carduri .contor-card separate:
|
||||
"""Fragment status contine 5 carduri .contor-card separate:
|
||||
Total / Luna asta / Azi / In coada / De corectat."""
|
||||
_create_account_user("treicont@test.com")
|
||||
_login(client, "treicont@test.com", "parolasecreta10")
|
||||
@@ -196,19 +193,19 @@ def test_trei_contoare_card(client):
|
||||
|
||||
count = html.count("contor-card")
|
||||
assert count >= 5, (
|
||||
f"Trebuie minim 5 elemente contor-card (US-002 PRD 5.16: Total/Luna/Azi/Coada/Corectat), "
|
||||
f"Trebuie minim 5 elemente contor-card (Total/Luna/Azi/Coada/Corectat), "
|
||||
f"gasit: {count}. HTML: {html[:800]}"
|
||||
)
|
||||
# Etichete asteptate (US-002 PRD 5.16: 5 carduri separate)
|
||||
assert "Total" in html, "Eticheta 'Total' lipseste din contoare (US-002 PRD 5.16)."
|
||||
assert "Luna asta" in html, "Eticheta 'Luna asta' lipseste din contoare (US-002 PRD 5.16)."
|
||||
assert "Azi" in html, "Eticheta 'Azi' lipseste din contoare (US-002 PRD 5.16)."
|
||||
# Etichete asteptate (5 carduri separate)
|
||||
assert "Total" in html, "Eticheta 'Total' lipseste din contoare."
|
||||
assert "Luna asta" in html, "Eticheta 'Luna asta' lipseste din contoare."
|
||||
assert "Azi" in html, "Eticheta 'Azi' lipseste din contoare."
|
||||
assert "In coada" in html, "Eticheta 'In coada' lipseste din contoare."
|
||||
assert "De corectat" in html, "Eticheta 'De corectat' lipseste din contoare."
|
||||
|
||||
|
||||
def test_trimise_all_time_luna_azi(client):
|
||||
"""D4: cardul Trimise afiseaza all-time ca cifra principala + sub-linie 'luna N · azi N'."""
|
||||
"""Cardul Trimise afiseaza all-time ca cifra principala + sub-linie 'luna N · azi N'."""
|
||||
acct_id, _ = _create_account_user("trimisetime@test.com")
|
||||
_login(client, "trimisetime@test.com", "parolasecreta10")
|
||||
|
||||
@@ -239,7 +236,7 @@ def test_trimise_all_time_luna_azi(client):
|
||||
|
||||
|
||||
def test_fara_bara_veche(client):
|
||||
"""US-003: contoarele vechi inline ('In asteptare:' / 'Declarate la RAR:') nu mai apar."""
|
||||
"""Contoarele vechi inline ('In asteptare:' / 'Declarate la RAR:') nu mai apar."""
|
||||
_create_account_user("faraveche@test.com")
|
||||
_login(client, "faraveche@test.com", "parolasecreta10")
|
||||
|
||||
@@ -247,7 +244,7 @@ def test_fara_bara_veche(client):
|
||||
assert resp.status_code == 200
|
||||
html = resp.text
|
||||
|
||||
# Stilul vechi: etichete inline cu colon (bara de la PRD 3.5)
|
||||
# Stilul vechi: etichete inline cu colon
|
||||
assert "In asteptare:" not in html, (
|
||||
f"Contorul vechi 'In asteptare:' inca prezent. HTML: {html[:600]}"
|
||||
)
|
||||
@@ -257,7 +254,7 @@ def test_fara_bara_veche(client):
|
||||
|
||||
|
||||
def test_banda_apare_doar_cand_blocat(client):
|
||||
"""US-003 (PRD 5.16): banda rosie completa apare NUMAI cand BLOCAT.
|
||||
"""Banda rosie completa apare NUMAI cand BLOCAT.
|
||||
Cand totul e ok, strip-sanatate are atributul 'hidden' (ascuns, nu disparut).
|
||||
Cand worker e oprit, strip-sanatate NU are 'hidden' (e vizibil, rosu).
|
||||
"""
|
||||
@@ -284,7 +281,7 @@ def test_banda_apare_doar_cand_blocat(client):
|
||||
|
||||
|
||||
def test_rar_dot_in_antet_ok(client):
|
||||
"""US-003 (PRD 5.16): cand logat si sanatate_ok, antetul contine chip-ul RAR cu clasa rar-ok.
|
||||
"""Cand logat si sanatate_ok, antetul contine chip-ul RAR cu clasa rar-ok.
|
||||
Starea ok se vede din header (dot verde pulsant), nu din banda de stare (care e ascunsa).
|
||||
"""
|
||||
_create_account_user("rardot@test.com")
|
||||
@@ -297,13 +294,13 @@ def test_rar_dot_in_antet_ok(client):
|
||||
assert resp.status_code == 200
|
||||
html = resp.text
|
||||
# Chip RAR in antet (nu in banda de stare)
|
||||
assert "rar-chip" in html, "Clasa rar-chip lipseste din HTML (dot RAR in antet, US-003)"
|
||||
assert "rar-ok" in html, "Clasa rar-ok lipseste — dot verde cand sanatate ok (US-003)"
|
||||
assert "rar-dot" in html, "Clasa rar-dot lipseste din chip (US-003)"
|
||||
assert "rar-chip" in html, "Clasa rar-chip lipseste din HTML (dot RAR in antet)"
|
||||
assert "rar-ok" in html, "Clasa rar-ok lipseste — dot verde cand sanatate ok"
|
||||
assert "rar-dot" in html, "Clasa rar-dot lipseste din chip"
|
||||
|
||||
|
||||
def test_rar_in_meniu_burger(client):
|
||||
"""US-003/010 (PRD 5.16): meniul burger contine starea RAR ca prima intrare (RAR online / RAR indisponibil)."""
|
||||
"""Meniul burger contine starea RAR ca prima intrare (RAR online / RAR indisponibil)."""
|
||||
_create_account_user("rarmeniu@test.com")
|
||||
_login(client, "rarmeniu@test.com", "parolasecreta10")
|
||||
|
||||
@@ -316,13 +313,13 @@ def test_rar_in_meniu_burger(client):
|
||||
# Meniul burger (cont-menu) contine indicatorul RAR
|
||||
assert "cont-menu" in html, "Meniu burger (cont-menu) lipseste din HTML"
|
||||
assert "RAR online" in html or "RAR indisponibil" in html, \
|
||||
"Starea RAR nu apare in meniu burger (US-003/010)"
|
||||
"Starea RAR nu apare in meniu burger"
|
||||
# Prima intrare e starea RAR — prezenta class menu-rar-line
|
||||
assert "menu-rar-line" in html, "Clasa menu-rar-line lipseste din burger (US-003)"
|
||||
assert "menu-rar-line" in html, "Clasa menu-rar-line lipseste din burger"
|
||||
|
||||
|
||||
def test_anuleaza_are_data_modal_close(client):
|
||||
"""US-007 (PRD 5.16): overlay-ul modal si butonul de inchidere au atributul data-modal-close."""
|
||||
"""Overlay-ul modal si butonul de inchidere au atributul data-modal-close."""
|
||||
# Butonul si overlay-ul trebuie sa aiba data-modal-close pentru ca handler-ul cu .closest() sa functioneze
|
||||
# Verificam in baza template-ului base.html (modal e definit acolo, randat pe toate paginile)
|
||||
# Testam pe dashboard dupa login (unde baza e incarcata)
|
||||
@@ -332,12 +329,12 @@ def test_anuleaza_are_data_modal_close(client):
|
||||
assert resp.status_code == 200
|
||||
html = resp.text
|
||||
assert "data-modal-close" in html, \
|
||||
"data-modal-close lipseste din template — modalul nu se poate inchide (US-007)"
|
||||
"data-modal-close lipseste din template — modalul nu se poate inchide"
|
||||
|
||||
|
||||
def test_modal_close_pe_element_interior(client):
|
||||
"""US-007 (PRD 5.16): handler-ul modal foloseste .closest('[data-modal-close]') nu
|
||||
.hasAttribute directe — astfel click pe un element interior al backdrop-ului functioneaza."""
|
||||
"""Handler-ul modal foloseste .closest('[data-modal-close]') nu .hasAttribute
|
||||
direct — astfel click pe un element interior al backdrop-ului functioneaza."""
|
||||
_create_account_user("modalclosest@test.com")
|
||||
_login(client, "modalclosest@test.com", "parolasecreta10")
|
||||
resp = client.get("/", follow_redirects=True)
|
||||
@@ -345,7 +342,7 @@ def test_modal_close_pe_element_interior(client):
|
||||
html = resp.text
|
||||
# Verificam ca JS-ul foloseste closest, nu hasAttribute
|
||||
assert "closest('[data-modal-close]')" in html, \
|
||||
"Handler-ul modal foloseste hasAttribute in loc de closest (US-007) — click pe copil nu va inchide modalul"
|
||||
"Handler-ul modal foloseste hasAttribute in loc de closest — click pe copil nu va inchide modalul"
|
||||
|
||||
|
||||
def _set_tz_bucuresti(monkeypatch, request):
|
||||
@@ -360,7 +357,7 @@ def _set_tz_bucuresti(monkeypatch, request):
|
||||
|
||||
|
||||
def test_granita_miez_noapte_local_ro(monkeypatch, request):
|
||||
"""E7: trimitere cu updated_at = ieri UTC 22:00 = azi Romania (UTC+2/+3) se numara 'azi'.
|
||||
"""Trimitere cu updated_at = ieri UTC 22:00 = azi Romania (UTC+2/+3) se numara 'azi'.
|
||||
|
||||
Cu date(updated_at) simplu (UTC) ar aparea pe ziua precedenta — GRESIT.
|
||||
Cu date(updated_at, 'localtime') + TZ=Europe/Bucharest apare pe ziua de azi RO — CORECT
|
||||
@@ -418,8 +415,8 @@ def test_granita_miez_noapte_local_ro(monkeypatch, request):
|
||||
|
||||
|
||||
def test_iarna_nu_bleed_in_ziua_urmatoare(monkeypatch, request):
|
||||
"""Bug fix (code-review 5.15): iarna (UTC+2), o trimitere la 21:30 UTC = 23:30 RO AZI
|
||||
NU trebuie sa cada pe ziua de MAINE.
|
||||
"""Iarna (UTC+2), o trimitere la 21:30 UTC = 23:30 RO AZI NU trebuie sa cada
|
||||
pe ziua de MAINE.
|
||||
|
||||
Vechiul offset fix '+3 hours' o impingea la 00:30 maine -> sent_today gresit.
|
||||
'localtime' (DST-aware) o pastreaza corect pe azi. Testul fixeaza o data de iarna
|
||||
@@ -467,7 +464,7 @@ def test_iarna_nu_bleed_in_ziua_urmatoare(monkeypatch, request):
|
||||
|
||||
|
||||
# ===========================================================================
|
||||
# US-006 (PRD 5.17) — Afisaj plan curent: trial / consum / warn / banner
|
||||
# Afisaj plan curent: trial / consum / warn / banner
|
||||
# ===========================================================================
|
||||
|
||||
def _set_trial_until(account_id: int, trial_until_str: str | None) -> None:
|
||||
@@ -502,9 +499,9 @@ def _insert_submissions_sent(account_id: int, n: int) -> None:
|
||||
|
||||
|
||||
def test_afisaj_plan_si_zile_trial(client):
|
||||
"""US-006 + T-6 (5.16): cont in trial Pro -> linia de plan din meniul burger (pagina
|
||||
completa) arata 'Plan: Pro · trial N zile ramase'. In starea normala (non-warn) plan_linie
|
||||
NU mai e rand in corpul fragmentului status — traieste in badge antet + burger.
|
||||
"""Cont in trial Pro -> linia de plan din meniul burger (pagina completa) arata
|
||||
'Plan: Pro · trial N zile ramase'. In starea normala (non-warn) plan_linie NU mai
|
||||
e rand in corpul fragmentului status — traieste in badge antet + burger.
|
||||
Contul nou primeste trial_until=now+30z automat la creare.
|
||||
"""
|
||||
acct_id, _ = _create_account_user("trialzile@test.com")
|
||||
@@ -525,8 +522,8 @@ def test_afisaj_plan_si_zile_trial(client):
|
||||
|
||||
|
||||
def test_afisaj_consum_lunar(client):
|
||||
"""US-006 + T-6 (5.16): cont free (fara trial) -> linia de plan din burger (pagina
|
||||
completa) arata 'Gratuit · N/60 luna asta'. Consumul normal nu mai e rand in corp."""
|
||||
"""Cont free (fara trial) -> linia de plan din burger (pagina completa) arata
|
||||
'Gratuit · N/60 luna asta'. Consumul normal nu mai e rand in corp."""
|
||||
acct_id, _ = _create_account_user("consumlun@test.com")
|
||||
_login(client, "consumlun@test.com", "parolasecreta10")
|
||||
|
||||
@@ -546,7 +543,7 @@ def test_afisaj_consum_lunar(client):
|
||||
|
||||
|
||||
def test_avertizare_aproape_de_limita(client):
|
||||
"""US-006: >=80% din 60 -> avertizare cu text 'aproape de limita' + culoare warn."""
|
||||
""">=80% din 60 -> avertizare cu text 'aproape de limita' + culoare warn."""
|
||||
acct_id, _ = _create_account_user("aproapelim@test.com")
|
||||
_login(client, "aproapelim@test.com", "parolasecreta10")
|
||||
|
||||
@@ -569,7 +566,7 @@ def test_avertizare_aproape_de_limita(client):
|
||||
|
||||
|
||||
def test_limita_atinsa(client):
|
||||
"""US-006: 60/60 -> text 'limita atinsa'."""
|
||||
"""60/60 -> text 'limita atinsa'."""
|
||||
acct_id, _ = _create_account_user("limitaatinsa@test.com")
|
||||
_login(client, "limitaatinsa@test.com", "parolasecreta10")
|
||||
|
||||
@@ -586,7 +583,7 @@ def test_limita_atinsa(client):
|
||||
|
||||
|
||||
def test_copy_pluralizare_zi_zile(client):
|
||||
"""US-006: pluralizare RO corecta — 1 zi (nu '1 zile'), 18 zile (nu '18 zi')."""
|
||||
"""Pluralizare RO corecta — 1 zi (nu '1 zile'), 18 zile (nu '18 zi')."""
|
||||
acct_id, _ = _create_account_user("pluralzile@test.com")
|
||||
_login(client, "pluralzile@test.com", "parolasecreta10")
|
||||
|
||||
@@ -594,7 +591,7 @@ def test_copy_pluralizare_zi_zile(client):
|
||||
future_18 = (datetime.now(timezone.utc) + timedelta(days=18, hours=12)).strftime("%Y-%m-%d %H:%M:%S")
|
||||
_set_trial_until(acct_id, future_18)
|
||||
|
||||
# T-6 (5.16): linia de plan (cu pluralizarea zilelor) traieste in burger pe pagina completa.
|
||||
# Linia de plan (cu pluralizarea zilelor) traieste in burger pe pagina completa.
|
||||
resp = client.get("/", follow_redirects=True)
|
||||
assert resp.status_code == 200
|
||||
html = resp.text
|
||||
@@ -617,7 +614,7 @@ def test_copy_pluralizare_zi_zile(client):
|
||||
|
||||
|
||||
def test_banner_one_time_trial_expirat(client):
|
||||
"""US-006 T-DES-1: dupa expirarea trial-ului, banner 'Trial Pro expirat' apare in _status.html."""
|
||||
"""Dupa expirarea trial-ului, banner 'Trial Pro expirat' apare in _status.html."""
|
||||
acct_id, _ = _create_account_user("trialexp@test.com")
|
||||
_login(client, "trialexp@test.com", "parolasecreta10")
|
||||
|
||||
@@ -642,7 +639,7 @@ def test_banner_one_time_trial_expirat(client):
|
||||
|
||||
|
||||
def test_cont_arata_plan(client):
|
||||
"""US-006: tab-ul Cont (/tab=cont) afiseaza planul curent si explicatia de upgrade."""
|
||||
"""Tab-ul Cont (/tab=cont) afiseaza planul curent si explicatia de upgrade."""
|
||||
acct_id, _ = _create_account_user("contplan@test.com")
|
||||
_login(client, "contplan@test.com", "parolasecreta10")
|
||||
|
||||
@@ -662,7 +659,7 @@ def test_cont_arata_plan(client):
|
||||
|
||||
|
||||
def test_plan_linie_in_burger(client):
|
||||
"""US-006: meniul burger contine linia de plan (Plan: Gratuit / Pro · trial N zile)."""
|
||||
"""Meniul burger contine linia de plan (Plan: Gratuit / Pro · trial N zile)."""
|
||||
acct_id, _ = _create_account_user("burgerplan@test.com")
|
||||
_login(client, "burgerplan@test.com", "parolasecreta10")
|
||||
|
||||
@@ -679,7 +676,7 @@ def test_plan_linie_in_burger(client):
|
||||
|
||||
|
||||
def test_trial_pro_arata_zile_in_burger(client):
|
||||
"""US-006: cont in trial -> burger arata 'Plan: Pro · trial N zile ramase'."""
|
||||
"""Cont in trial -> burger arata 'Plan: Pro · trial N zile ramase'."""
|
||||
acct_id, _ = _create_account_user("burgertrial@test.com")
|
||||
_login(client, "burgertrial@test.com", "parolasecreta10")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user