from conftest import admin_login, join_student def test_csv_export_contains_one_row_per_submission(client, sid): admin_login(client) join_student(client, sid, "s1", "Student One") rooms = client.app.state.rooms client.portal.call(rooms.open_question, sid, 0, 2) ack = client.portal.call(rooms.submit_answer, sid, "s1", 0, "B") assert ack["type"] == "submit_ack" client.portal.call(rooms.close_question, sid) response = client.get("/admin/api/csv") lines = response.text.strip().splitlines() assert lines[0] == "sid,student_id,name,question_idx,answer,elapsed_ms,score,status,blur_count,hidden_count,duplicate_join_attempts" assert len(lines) == 2 # The CSV stores the canonical 1-indexed position of the chosen # option (A=1, B=2, C=3, D=4) rather than the letter — the student # UI is letterless and a number is unambiguous for downstream # analysis. assert ",s1,Student One,0,2," in lines[1] # Default audit-event counts are 0 for a clean run (no blur events, # no duplicate-join attempts). assert lines[1].endswith(",0,0,0")