API FormSemestreDescription + test

This commit is contained in:
ilona 2024-08-14 10:28:26 +02:00
parent 513fb3d46d
commit e6f86d655b
3 changed files with 74 additions and 1 deletions

View File

@ -33,6 +33,7 @@ from app.models import (
Departement, Departement,
Evaluation, Evaluation,
FormSemestre, FormSemestre,
FormSemestreDescription,
FormSemestreEtape, FormSemestreEtape,
FormSemestreInscription, FormSemestreInscription,
Identite, Identite,
@ -812,6 +813,30 @@ def formsemestre_get_description(formsemestre_id: int):
return formsemestre.description.to_dict() if formsemestre.description else {} return formsemestre.description.to_dict() if formsemestre.description else {}
@bp.post("/formsemestre/<int:formsemestre_id>/description/edit")
@api_web_bp.post("/formsemestre/<int:formsemestre_id>/description/edit")
@login_required
@scodoc
@permission_required(Permission.ScoView)
@as_json
def formsemestre_edit_description(formsemestre_id: int):
"""Modifie description externe du formsemestre
formsemestre_id : l'id du formsemestre
SAMPLES
-------
/formsemestre/<int:formsemestre_id>/description/edit;{""description"":""descriptif du semestre"", ""dispositif"":1}
"""
formsemestre = FormSemestre.get_formsemestre(formsemestre_id)
args = request.get_json(force=True) # may raise 400 Bad Request
if not formsemestre.description:
formsemestre.description = FormSemestreDescription()
formsemestre.description.from_dict(args)
db.session.commit()
return formsemestre.description.to_dict()
@bp.route("/formsemestre/<int:formsemestre_id>/description/image") @bp.route("/formsemestre/<int:formsemestre_id>/description/image")
@api_web_bp.route("/formsemestre/<int:formsemestre_id>/description/image") @api_web_bp.route("/formsemestre/<int:formsemestre_id>/description/image")
@login_required @login_required

View File

@ -28,8 +28,10 @@ from tests.api.setup_test_api import (
API_URL, API_URL,
CHECK_CERTIFICATE, CHECK_CERTIFICATE,
GET, GET,
POST,
api_headers, api_headers,
api_admin_headers, api_admin_headers,
set_headers,
) )
from tests.api.tools_test_api import ( from tests.api.tools_test_api import (
@ -780,3 +782,49 @@ def _compare_formsemestre_resultat(res: list[dict], ref: list[dict]):
if "nbabs" in k: if "nbabs" in k:
continue continue
assert res_d[k] == ref_d[k], f"values for key {k} differ." assert res_d[k] == ref_d[k], f"values for key {k} differ."
def test_formsemestre_description(api_admin_headers):
"""
Test accès et modification de la description
"""
set_headers(api_admin_headers)
formsemestre_id = 1
r = GET(f"/formsemestre/{formsemestre_id}")
assert "description" not in r
r = POST(
f"/formsemestre/{formsemestre_id}/description/edit",
data={
"description": "une description",
"horaire": "un horaire",
"salle": "une salle",
"dispositif": 1,
"wip": True,
},
)
assert r["description"] == "une description"
assert r["horaire"] == "un horaire"
assert r["salle"] == "une salle"
assert r["dispositif"] == 1
assert r["wip"] is True
r = GET(f"/formsemestre/{formsemestre_id}/description")
assert r["description"] == "une description"
assert r["horaire"] == "un horaire"
assert r["salle"] == "une salle"
assert r["dispositif"] == 1
assert r["wip"] is True
r = POST(
f"/formsemestre/{formsemestre_id}/description/edit",
data={
"description": "",
"horaire": "",
"salle": "",
"dispositif": 0,
"wip": False,
},
)
assert r["description"] == ""
assert r["horaire"] == ""
assert r["salle"] == ""
assert r["dispositif"] == 0
assert r["wip"] is False

View File

@ -100,7 +100,7 @@ def test_permissions(api_headers):
verify=CHECK_CERTIFICATE, verify=CHECK_CERTIFICATE,
timeout=scu.SCO_TEST_API_TIMEOUT, timeout=scu.SCO_TEST_API_TIMEOUT,
) )
assert r.status_code == 200 assert r.status_code // 100 == 2 # 2xx success
# Même chose sans le jeton: # Même chose sans le jeton:
for rule in api_rules: for rule in api_rules: