forked from ScoDoc/DocScoDoc
API: test partitions. Fix #465.
This commit is contained in:
parent
4a3ceb291a
commit
1b3bf87617
@ -205,9 +205,10 @@ def group_remove_etud(group_id: int, etudid: int):
|
||||
query.join(Partition).join(FormSemestre).filter_by(dept_id=g.scodoc_dept_id)
|
||||
)
|
||||
group = query.first_or_404()
|
||||
group.etuds.remove(etud)
|
||||
db.session.commit()
|
||||
sco_cache.invalidate_formsemestre(group.partition.formsemestre_id)
|
||||
if etud in group.etuds:
|
||||
group.etuds.remove(etud)
|
||||
db.session.commit()
|
||||
sco_cache.invalidate_formsemestre(group.partition.formsemestre_id)
|
||||
return jsonify({"group_id": group_id, "etudid": etudid})
|
||||
|
||||
|
||||
|
@ -25,11 +25,13 @@ from app import models
|
||||
|
||||
from app.auth.models import User, Role, UserRole
|
||||
from app.scodoc.sco_logos import make_logo_local
|
||||
from app.models import departements
|
||||
from app.models import Formation, UniteEns, Matiere, Module
|
||||
from app.models import FormSemestre, FormSemestreInscription
|
||||
from app.models import ModuleImpl, ModuleImplInscription
|
||||
from app.models import GroupDescr
|
||||
from app.models import Identite
|
||||
from app.models import departements
|
||||
from app.models import ModuleImpl, ModuleImplInscription
|
||||
from app.models import Partition
|
||||
from app.models.evaluations import Evaluation
|
||||
from app.entreprises.models import entreprises_reset_database
|
||||
from app.scodoc.sco_permissions import Permission
|
||||
@ -62,6 +64,7 @@ def make_shell_context():
|
||||
"Formation": Formation,
|
||||
"FormSemestre": FormSemestre,
|
||||
"FormSemestreInscription": FormSemestreInscription,
|
||||
"GroupDescr": GroupDescr,
|
||||
"Identite": Identite,
|
||||
"login_user": login_user,
|
||||
"logout_user": logout_user,
|
||||
@ -71,6 +74,7 @@ def make_shell_context():
|
||||
"Module": Module,
|
||||
"ModuleImpl": ModuleImpl,
|
||||
"ModuleImplInscription": ModuleImplInscription,
|
||||
"Partition": Partition,
|
||||
"ndb": ndb,
|
||||
"notes": notes,
|
||||
"np": np,
|
||||
|
@ -50,7 +50,7 @@ def GET(path: str, headers={}, errmsg=None, dept=None):
|
||||
url = SCODOC_URL + f"/ScoDoc/{dept}/api" + path
|
||||
else:
|
||||
url = API_URL + path
|
||||
r = requests.get(url, headers=headers, verify=CHECK_CERTIFICATE)
|
||||
r = requests.get(url, headers=headers or CUR_HEADERS, verify=CHECK_CERTIFICATE)
|
||||
if r.status_code != 200:
|
||||
raise APIError(errmsg or f"""erreur status={r.status_code} !\n{r.text}""")
|
||||
return r.json() # decode la reponse JSON
|
||||
|
@ -62,9 +62,11 @@ def test_formsemestre_partition(api_headers):
|
||||
/partition/<int:partition_id>/group/create
|
||||
/partition/<int:partition_id>
|
||||
/partition/<int:partition_id/delete
|
||||
/group/<int:group_id>/set_etudiant/<int:etudid>
|
||||
"""
|
||||
headers = api_headers
|
||||
formsemestre_id = 1
|
||||
partitions = GET(f"/formsemestre/{formsemestre_id}/partitions", headers=api_headers)
|
||||
partitions = GET(f"/formsemestre/{formsemestre_id}/partitions", headers=headers)
|
||||
# au départ, pas de partitions
|
||||
assert partitions == {}
|
||||
# --- Création partition
|
||||
@ -76,7 +78,7 @@ def test_formsemestre_partition(api_headers):
|
||||
partition_r = POST_JSON(
|
||||
f"/formsemestre/{formsemestre_id}/partition/create",
|
||||
partition_d,
|
||||
headers=api_headers,
|
||||
headers=headers,
|
||||
)
|
||||
assert isinstance(partition_r, dict)
|
||||
assert partition_r["partition_name"] == partition_d["partition_name"]
|
||||
@ -86,12 +88,12 @@ def test_formsemestre_partition(api_headers):
|
||||
group_r = POST_JSON(
|
||||
f"/partition/{partition_r['id']}/group/create",
|
||||
group_d,
|
||||
headers=api_headers,
|
||||
headers=headers,
|
||||
)
|
||||
assert isinstance(group_r, dict)
|
||||
assert group_r["group_name"] == group_d["group_name"]
|
||||
# --- Liste groupes de la partition
|
||||
partition = GET(f"/partition/{partition_r['id']}", headers=api_headers)
|
||||
partition = GET(f"/partition/{partition_r['id']}", headers=headers)
|
||||
assert isinstance(partition, dict)
|
||||
assert partition["id"] == partition_r["id"]
|
||||
assert isinstance(partition["groups"], dict)
|
||||
@ -99,8 +101,29 @@ def test_formsemestre_partition(api_headers):
|
||||
group = partition["groups"][str(group_r["id"])] # nb: str car clés json en string
|
||||
assert group["group_name"] == group_d["group_name"]
|
||||
|
||||
# Place un étudiant dans le groupe
|
||||
etud = GET(f"/formsemestre/{formsemestre_id}/etudiants", headers=headers)[0]
|
||||
repl = POST_JSON(f"/group/{group['id']}/set_etudiant/{etud['id']}", headers=headers)
|
||||
assert isinstance(repl, dict)
|
||||
assert repl["group_id"] == group["id"]
|
||||
assert repl["etudid"] == etud["id"]
|
||||
#
|
||||
etuds = GET(f"/group/{group['id']}/etudiants", headers=headers)
|
||||
assert len(etuds) == 1
|
||||
assert etuds[0]["id"] == etud["id"]
|
||||
# Retire l'étudiant du groupe
|
||||
repl = POST_JSON(
|
||||
f"/group/{group['id']}/remove_etudiant/{etud['id']}", headers=headers
|
||||
)
|
||||
assert len(GET(f"/group/{group['id']}/etudiants", headers=headers)) == 0
|
||||
|
||||
# Le retire à nouveau ! (bug #465)
|
||||
repl = POST_JSON(
|
||||
f"/group/{group['id']}/remove_etudiant/{etud['id']}", headers=headers
|
||||
)
|
||||
assert repl["group_id"] == group["id"]
|
||||
# Delete partition
|
||||
repl = POST_JSON(f"/partition/{partition_r['id']}/delete", headers=api_headers)
|
||||
repl = POST_JSON(f"/partition/{partition_r['id']}/delete", headers=headers)
|
||||
assert repl["OK"] is True
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user