diff --git a/lobby/tests.py b/lobby/tests.py index 2b6a703..f455eba 100644 --- a/lobby/tests.py +++ b/lobby/tests.py @@ -1831,6 +1831,53 @@ class RevealRoundFlowTests(TestCase): self.assertIsNone(detail_payload["reveal"]) self.assertIsNone(detail_payload["scoreboard"]) + def test_start_next_round_repairs_reused_bootstrap_question_with_drifted_category(self): + self.client.login(username="host_reveal", password="secret123") + self.client.get(reverse("lobby:reveal_scoreboard", kwargs={"code": self.session.code})) + + stale_category = Category.objects.create(name="Drift reveal", slug="drift-reveal", is_active=True) + stale_question = Question.objects.create( + category=stale_category, + prompt="Hvem vandt EM i 1992?", + correct_answer="Danmark", + is_active=True, + ) + stale_round_question = RoundQuestion.objects.create( + session=self.session, + round_number=2, + question=stale_question, + correct_answer=stale_question.correct_answer, + shown_at=timezone.now() - timedelta(minutes=10), + mixed_answers=["Stale truth", "Stale lie"], + ) + LieAnswer.objects.create(round_question=stale_round_question, player=self.player_one, text="Tyskland") + Guess.objects.create( + round_question=stale_round_question, + player=self.player_two, + selected_text="Stale truth", + is_correct=True, + ) + + response = self.client.post(reverse("lobby:start_next_round", kwargs={"code": self.session.code})) + + self.assertEqual(response.status_code, 200) + self.session.refresh_from_db() + stale_round_question.refresh_from_db() + self.assertEqual(self.session.status, GameSession.Status.LIE) + self.assertEqual(self.session.current_round, 2) + self.assertEqual(stale_round_question.question.category_id, self.round_config.category_id) + self.assertEqual(stale_round_question.question_id, self.next_question.id) + self.assertEqual(stale_round_question.correct_answer, self.next_question.correct_answer) + self.assertEqual(stale_round_question.mixed_answers, []) + self.assertEqual(stale_round_question.lies.count(), 0) + self.assertEqual(stale_round_question.guesses.count(), 0) + payload = response.json() + self.assertEqual(payload["round_question"]["id"], stale_round_question.id) + self.assertEqual(payload["round_question"]["prompt"], self.next_question.prompt) + detail_payload = self.client.get(reverse("lobby:session_detail", kwargs={"code": self.session.code})).json() + self.assertEqual(detail_payload["round_question"]["id"], stale_round_question.id) + self.assertEqual(detail_payload["round_question"]["prompt"], self.next_question.prompt) + def test_start_next_round_requires_host(self): self.session.status = GameSession.Status.SCOREBOARD self.session.save(update_fields=["status"])