Merge fx-2-born-digital-marks
This commit is contained in:
@@ -642,6 +642,21 @@ def test_auto_map_fast_path_merges_ai_rows_and_returns_detail(monkeypatch):
|
||||
assert store["exam_boundaries"] and store["exam_boundaries"][0]["derivation"] == "docling-main-band"
|
||||
|
||||
|
||||
def test_auto_map_surfaces_born_digital_part_marks(monkeypatch):
|
||||
# Regression: the born-digital grammar parses per-part marks, but the row mapper hardcoded
|
||||
# max_marks=0. A part band carrying `marks` must flow through to the question row's max_marks.
|
||||
store = _template_with_source()
|
||||
store.update({"exam_questions": [], "exam_response_areas": [], "exam_boundaries": [], "exam_template_layout": []})
|
||||
client, store = make_client(store=store)
|
||||
fp = _first_pass_template()
|
||||
fp["pages"]["1"]["part_bands"][0]["marks"] = 4
|
||||
_patch_auto_map(monkeypatch, store, fast=True)
|
||||
monkeypatch.setattr(templates_mod, "auto_map", lambda *_a, **_k: fp) # override with the marked part band
|
||||
assert client.post("/api/exam/templates/t1/auto-map").status_code == 200
|
||||
part = next(q for q in store["exam_questions"] if q.get("label") == "01.1")
|
||||
assert part["max_marks"] == 4
|
||||
|
||||
|
||||
def test_auto_map_deduplicates_repeated_response_area_ids(monkeypatch):
|
||||
store = _template_with_source()
|
||||
client, store = make_client(store=store)
|
||||
|
||||
Reference in New Issue
Block a user