diff --git a/lobby/tests.py b/lobby/tests.py index b68e85e..140a831 100644 --- a/lobby/tests.py +++ b/lobby/tests.py @@ -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): diff --git a/lobby/views.py b/lobby/views.py index b0747f2..2648a3e 100644 --- a/lobby/views.py +++ b/lobby/views.py @@ -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, }