fix: expose canonical reveal payload in scoreboard detail
This commit is contained in:
@@ -1245,6 +1245,47 @@ class SessionDetailRoundQuestionTests(TestCase):
|
|||||||
self.assertTrue(payload["reveal"]["guesses"][1]["is_correct"])
|
self.assertTrue(payload["reveal"]["guesses"][1]["is_correct"])
|
||||||
self.assertIsNone(payload["reveal"]["guesses"][1]["fooled_player_id"])
|
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):
|
class SessionDetailPhaseViewModelTests(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|||||||
@@ -272,7 +272,7 @@ def session_detail(request: HttpRequest, code: str) -> JsonResponse:
|
|||||||
"players": players,
|
"players": players,
|
||||||
"round_question": round_question_payload,
|
"round_question": round_question_payload,
|
||||||
"reveal": _build_reveal_payload(current_round_question)
|
"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,
|
else None,
|
||||||
"phase_view_model": phase_view_model,
|
"phase_view_model": phase_view_model,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user