Files
rar-autopass/tests/test_web_mapeaza.py
Claude Agent 44f261e269 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>
2026-07-06 13:48:38 +00:00

130 lines
4.2 KiB
Python

"""Teste POST /trimitere/{id}/mapeaza — auto_send ignorat la mapare inline.
auto_send nu mai tine randul in needs_mapping; un cod valid mapat -> queued
direct, indiferent de valoarea auto_send din form sau din mapping_meta.
"""
from __future__ import annotations
import json
import os
import tempfile
import pytest
from starlette.testclient import TestClient
@pytest.fixture()
def client(monkeypatch):
tmp = tempfile.mkdtemp()
monkeypatch.setenv("AUTOPASS_DB_PATH", os.path.join(tmp, "mapeaza.db"))
monkeypatch.setenv("AUTOPASS_WEB_AUTH_REQUIRED", "false")
from app.config import get_settings
get_settings.cache_clear()
from app.main import app
with TestClient(app, follow_redirects=False) as c:
yield c
get_settings.cache_clear()
@pytest.fixture()
def conn(client):
"""Conexiune directa la DB-ul deja initializat de client."""
from app.db import get_connection
c = get_connection()
yield c
c.close()
def _add_nomenclator(conn, cod="OE-1"):
conn.execute(
"INSERT OR IGNORE INTO nomenclator_rar (cod_prestatie, nume_prestatie) VALUES (?, ?)",
(cod, f"Operatie {cod}"),
)
conn.commit()
def _insert_needs_mapping(conn, cod_op="ITP-CHECK"):
payload = {
"vin": "WVWZZZ1KZAW000123", "nr_inmatriculare": "B1",
"data_prestatie": "2026-06-15", "odometru_final": "123456",
"prestatii": [{"cod_op_service": cod_op, "denumire": "Inspectie tehnica"}],
}
cur = conn.execute(
"INSERT INTO submissions (idempotency_key, account_id, status, payload_json) "
"VALUES (?, ?, ?, ?)",
(f"k-{os.urandom(4).hex()}", 1, "needs_mapping", json.dumps(payload)),
)
conn.commit()
return int(cur.lastrowid)
def test_mapeaza_inline_auto_send_zero_in_form_tot_queued(client, conn):
"""POST /trimitere/{id}/mapeaza cu auto_send=0 explicit in form -> queued.
Vechi comportament: reresolve_account vedea auto_send=0 -> review_manual -> needs_mapping.
Nou comportament: has_no_auto_send returneaza False -> queued direct.
"""
_add_nomenclator(conn)
sid = _insert_needs_mapping(conn)
r = client.post(
f"/trimitere/{sid}/mapeaza",
data={
"cod_op_service": "ITP-CHECK",
"cod_prestatie": "OE-1",
"auto_send": "0",
},
)
assert r.status_code == 200
row = conn.execute("SELECT status FROM submissions WHERE id=?", (sid,)).fetchone()
assert row["status"] == "queued", (
f"auto_send=0 in form nu trebuie sa tina randul, got {row['status']}"
)
def test_mapeaza_inline_fara_auto_send_form_tot_queued(client, conn):
"""POST /trimitere/{id}/mapeaza fara auto_send in form -> queued."""
_add_nomenclator(conn)
sid = _insert_needs_mapping(conn)
r = client.post(
f"/trimitere/{sid}/mapeaza",
data={"cod_op_service": "ITP-CHECK", "cod_prestatie": "OE-1"},
)
assert r.status_code == 200
row = conn.execute("SELECT status FROM submissions WHERE id=?", (sid,)).fetchone()
assert row["status"] == "queued", (
f"fara auto_send -> asteptat queued, got {row['status']}"
)
def test_mapeaza_inline_raspuns_fara_mesaj_auto_send(client, conn):
"""Raspunsul la mapare nu contine text despre auto-send oprit."""
_add_nomenclator(conn)
sid = _insert_needs_mapping(conn)
r = client.post(
f"/trimitere/{sid}/mapeaza",
data={"cod_op_service": "ITP-CHECK", "cod_prestatie": "OE-1", "auto_send": "0"},
)
assert r.status_code == 200
body = r.text.lower()
assert "auto-send oprit" not in body, "raspunsul nu trebuie sa contina card 'auto-send oprit'"
assert "review manual inainte de trimitere" not in body, (
"raspunsul nu trebuie sa contina mesajul vechi de auto_send"
)
def test_mapeaza_inline_trigger_trimiteri_changed(client, conn):
"""Raspunsul are header HX-Trigger=trimiteriChanged indiferent de auto_send."""
_add_nomenclator(conn)
sid = _insert_needs_mapping(conn)
r = client.post(
f"/trimitere/{sid}/mapeaza",
data={"cod_op_service": "ITP-CHECK", "cod_prestatie": "OE-1", "auto_send": "0"},
)
assert r.status_code == 200
assert r.headers.get("HX-Trigger") == "trimiteriChanged"