Add user answer viewing and compaction

This commit is contained in:
Ross
2026-07-06 09:07:48 +01:00
parent 5ce4a67b31
commit 5a2baaeab8
16 changed files with 370 additions and 4 deletions
@@ -244,3 +244,50 @@ def test_import_exam_answers_post_success(cid_manager_client, exam_data, logged_
assert answers.count() == 1
assert answers.first().answer == "Imported Test Answer"
@pytest.mark.django_db
def test_answer_history_and_compacting(cid_manager_client, exam_data, logged_in_user):
exam, question = exam_data
from anatomy.models import UserAnswer as AnatomyUserAnswer
import reversion
# 1. Create an answer within a revision context
with reversion.create_revision():
ans = AnatomyUserAnswer.objects.create(
exam=exam,
question=question,
user=logged_in_user,
answer="Version 1",
)
reversion.set_comment("Initial answer")
# 2. Modify the answer within a revision context
with reversion.create_revision():
ans.answer = "Version 2"
ans.save()
reversion.set_comment("Correction")
url = reverse("generic:view_answer_history", kwargs={
"app_name": "anatomy",
"model_name": "UserAnswer",
"pk": ans.pk,
})
# Check GET revision list
response = cid_manager_client.get(url)
assert response.status_code == 200
assert b"Version 1" in response.content
assert b"Version 2" in response.content
assert b"Initial answer" in response.content
# Test Compact Single action
response_compact = cid_manager_client.post(url, {"action": "compact_single"})
assert response_compact.status_code == 302 # redirect
# Verify only 1 version remains
from reversion.models import Version
versions = Version.objects.get_for_object(ans)
assert versions.count() == 1
assert versions.first().field_dict["answer"] == "Version 2"