fix: expose canonical reveal payload in scoreboard detail

This commit is contained in:
2026-03-15 11:46:30 +00:00
parent 173cc8f2d9
commit 3f20f25902
2 changed files with 42 additions and 1 deletions

View File

@@ -1245,6 +1245,47 @@ class SessionDetailRoundQuestionTests(TestCase):
self.assertTrue(payload["reveal"]["guesses"][1]["is_correct"])
self.assertIsNone(payload["reveal"]["guesses"][1]["fooled_player_id"])
def test_session_detail_includes_canonical_reveal_payload_in_scoreboard_phase(self):
self.session.status = GameSession.Status.SCOREBOARD
self.session.save(update_fields=["status"])
round_question = RoundQuestion.objects.create(
session=self.session,
round_number=1,
question=self.question,
correct_answer=self.question.correct_answer,
)
liar = Player.objects.create(session=self.session, nickname="Løgnhals")
guesser = Player.objects.create(session=self.session, nickname="Detektiv")
correct_player = Player.objects.create(session=self.session, nickname="Sandhed")
LieAnswer.objects.create(round_question=round_question, player=liar, text="Tesla")
Guess.objects.create(
round_question=round_question,
player=guesser,
selected_text="Tesla",
is_correct=False,
fooled_player=liar,
)
Guess.objects.create(
round_question=round_question,
player=correct_player,
selected_text="Edison",
is_correct=True,
)
response = self.client.get(reverse("lobby:session_detail", kwargs={"code": self.session.code}))
self.assertEqual(response.status_code, 200)
payload = response.json()
self.assertEqual(payload["session"]["status"], GameSession.Status.SCOREBOARD)
self.assertEqual(payload["reveal"]["round_question_id"], round_question.id)
self.assertEqual(payload["reveal"]["correct_answer"], "Edison")
self.assertEqual(payload["reveal"]["lies"][0]["player_id"], liar.id)
self.assertEqual(payload["reveal"]["guesses"][0]["player_id"], guesser.id)
self.assertEqual(payload["reveal"]["guesses"][0]["fooled_player_id"], liar.id)
self.assertEqual(payload["reveal"]["guesses"][0]["fooled_player_nickname"], "Løgnhals")
self.assertTrue(payload["reveal"]["guesses"][1]["is_correct"])
self.assertIsNone(payload["reveal"]["guesses"][1]["fooled_player_id"])
class SessionDetailPhaseViewModelTests(TestCase):
def setUp(self):

View File

@@ -272,7 +272,7 @@ def session_detail(request: HttpRequest, code: str) -> JsonResponse:
"players": players,
"round_question": round_question_payload,
"reveal": _build_reveal_payload(current_round_question)
if session.status == GameSession.Status.REVEAL and current_round_question
if session.status in {GameSession.Status.REVEAL, GameSession.Status.SCOREBOARD} and current_round_question
else None,
"phase_view_model": phase_view_model,
}