from flask import Flask import importlib.util from pathlib import Path MODULE_PATH = ( Path(__file__).resolve().parents[2] / "visual_workflow_builder" / "backend" / "api" / "lea_competences.py" ) SPEC = importlib.util.spec_from_file_location("lea_competences_test_module", MODULE_PATH) lea_competences_module = importlib.util.module_from_spec(SPEC) assert SPEC and SPEC.loader SPEC.loader.exec_module(lea_competences_module) lea_competences_bp = lea_competences_module.lea_competences_bp def _app(): app = Flask(__name__) app.register_blueprint(lea_competences_bp) return app def test_submit_competence_verdict_endpoint(monkeypatch): def fake_store(competence_id, payload): assert competence_id == "key_win_r_wait_explorer_exe" assert payload["verdict_kind"] == "valid" return { "verdict_id": payload["verdict_id"], "competence_id": competence_id, "verdict_kind": "valid", "duplicate": False, "write_back_enabled": False, "yaml_write": False, } monkeypatch.setattr( lea_competences_module, "store_competence_verdict", fake_store, ) with _app().test_client() as client: response = client.post( "/api/v1/lea/competences/key_win_r_wait_explorer_exe/verdict", json={ "verdict_id": "123e4567-e89b-42d3-a456-426614174000", "verdict_kind": "valid", }, ) assert response.status_code == 201 data = response.get_json() assert data["success"] is True assert data["write_back_enabled"] is False assert data["yaml_write"] is False assert data["verdict"]["duplicate"] is False def test_submit_competence_verdict_endpoint_returns_duplicate_200(monkeypatch): def fake_store(_competence_id, payload): return { "verdict_id": payload["verdict_id"], "competence_id": "key_win_r_wait_explorer_exe", "verdict_kind": "valid", "duplicate": True, "write_back_enabled": False, "yaml_write": False, } monkeypatch.setattr( lea_competences_module, "store_competence_verdict", fake_store, ) with _app().test_client() as client: response = client.post( "/api/v1/lea/competences/key_win_r_wait_explorer_exe/verdict", json={ "verdict_id": "123e4567-e89b-42d3-a456-426614174000", "verdict_kind": "valid", }, ) assert response.status_code == 200 assert response.get_json()["duplicate"] is True def test_list_competence_verdicts_endpoint(monkeypatch): monkeypatch.setattr( lea_competences_module, "iter_competence_verdicts", lambda competence_id: [{"competence_id": competence_id, "verdict_kind": "valid"}], ) with _app().test_client() as client: response = client.get( "/api/v1/lea/competences/key_win_r_wait_explorer_exe/verdicts" ) data = response.get_json() assert response.status_code == 200 assert data["success"] is True assert data["verdicts"] == [ {"competence_id": "key_win_r_wait_explorer_exe", "verdict_kind": "valid"} ] def test_promote_competence_endpoint_dry_run(monkeypatch): def fake_promote(competence_id, payload): assert competence_id == "key_win_r_wait_explorer_exe" assert payload["dry_run"] is True return { "promotion_id": payload["promotion_id"], "competence_id": competence_id, "target_state": "candidate", "dry_run": True, "eligible": True, "dry_run_token": "token", "write_applied": False, } monkeypatch.setattr( lea_competences_module, "promote_competence_from_verdicts", fake_promote, ) with _app().test_client() as client: response = client.post( "/api/v1/lea/competences/key_win_r_wait_explorer_exe/promote", json={ "promotion_id": "123e4567-e89b-42d3-a456-426614174000", "target_state": "candidate", "verdict_ids": ["123e4567-e89b-42d3-a456-426614174001"], "confirmed_by": "human:dom", "dry_run": True, }, ) data = response.get_json() assert response.status_code == 200 assert data["success"] is True assert data["dry_run"] is True assert data["yaml_write"] is False