📝 Bài 21: Quiz / Test với timer
Bài thi trắc nghiệm 10 câu hỏi với timer 60 giây (demo, spec gốc 5 phút). Test time-based + scoring + decision table.
📌 Cấu hình
- Số câu hỏi: 10 câu trắc nghiệm 4 đáp án (A/B/C/D)
- Mỗi câu: 1 điểm (max 10)
- Timer: 60 giây (spec: 5 phút)
- Pass: ≥ 7 điểm
🎯 Quy tắc
- User chọn 1 đáp án cho mỗi câu (radio).
- Có nút "Submit" để nộp sớm.
- Khi timer = 0 → tự động submit (force submit).
- Sau khi submit → hiển thị điểm + đáp án đúng + Pass/Fail.
- Sau submit, KHÔNG cho thay đổi đáp án (form lock).
- Nút "Mark for review" trên mỗi câu (visual flag — không ảnh hưởng điểm).
- Câu chưa trả lời tính 0 điểm (không trừ).
📋 Display
- Header: timer (đếm ngược MM:SS) + counter (X/10 đã trả lời) + nút Submit.
- Body: list 10 câu hỏi.
- Result: hiển thị sau submit — score (X/10), Pass/Fail, đáp án đúng từng câu.
🎯 Yêu cầu
- Test happy path: trả lời đầy đủ → Submit → score đúng.
- Test timer = 0 → tự submit + lock form.
- Test sau submit → click radio không thay đổi.
- Test scoring: câu chưa trả lời (skip) → tính 0 điểm.
- Test boundary score: 6/10 = Fail, 7/10 = Pass, 10/10 = Pass.
- Test nút "Mark for review" — visual only.
⚠️ Bug được cài cắm: timer không stop sau submit, scoring (câu skip), lock form không hoạt động, pass threshold sai, đáp án đúng hiển thị sai.