feat(exam): add metadata patch for templates
This commit is contained in:
@@ -359,6 +359,36 @@ def test_put_replace_denied_for_non_owner():
|
||||
assert resp.status_code == 403
|
||||
|
||||
|
||||
def test_patch_template_meta_does_not_replace_children_when_marks_recorded():
|
||||
store = {
|
||||
"exam_templates": [{"id": "t1", "title": "old", "subject": "Physics", "page_count": 12, "status": "draft", "institute_id": INST_A, "teacher_id": TEACHER}],
|
||||
"exam_questions": [{"id": "q1", "template_id": "t1", "label": "01", "order": 0}],
|
||||
"marking_batches": [{"id": "b1", "template_id": "t1", "teacher_id": TEACHER, "institute_id": INST_A}],
|
||||
"mark_entries": [{"id": "m1", "batch_id": "b1", "submission_id": "s1", "question_id": "q1", "awarded_marks": 2}],
|
||||
}
|
||||
client, store = make_client(store=store)
|
||||
resp = client.patch("/api/exam/templates/t1", json={"title": "renamed", "subject": None, "page_count": 13})
|
||||
assert resp.status_code == 200
|
||||
body = resp.json()
|
||||
assert body["title"] == "renamed"
|
||||
assert body["subject"] is None
|
||||
assert body["page_count"] == 13
|
||||
assert {q["id"] for q in store["exam_questions"]} == {"q1"}
|
||||
assert {m["id"] for m in store["mark_entries"]} == {"m1"}
|
||||
|
||||
|
||||
def test_patch_template_meta_denied_for_non_owner():
|
||||
store = {"exam_templates": [{"id": "t1", "title": "p", "status": "draft", "institute_id": INST_A, "teacher_id": OTHER_TEACHER}]}
|
||||
client, _ = make_client(user_id=TEACHER, institute_ids=(INST_A,), store=store)
|
||||
assert client.patch("/api/exam/templates/t1", json={"title": "nope"}).status_code == 403
|
||||
|
||||
|
||||
def test_patch_template_meta_empty_body_is_400():
|
||||
store = {"exam_templates": [{"id": "t1", "title": "p", "status": "draft", "institute_id": INST_A, "teacher_id": TEACHER}]}
|
||||
client, _ = make_client(store=store)
|
||||
assert client.patch("/api/exam/templates/t1", json={}).status_code == 400
|
||||
|
||||
|
||||
def test_archive_soft_deletes():
|
||||
store = {"exam_templates": [{"id": "t1", "title": "p", "status": "draft", "institute_id": INST_A, "teacher_id": TEACHER}]}
|
||||
client, store = make_client(store=store)
|
||||
|
||||
Reference in New Issue
Block a user