F3: persist mixed answer order for stable UI reconnect
This commit is contained in:
@@ -308,7 +308,9 @@ class MixAnswersTests(TestCase):
|
||||
self.assertEqual(payload["session"]["status"], GameSession.Status.GUESS)
|
||||
|
||||
self.session.refresh_from_db()
|
||||
self.round_question.refresh_from_db()
|
||||
self.assertEqual(self.session.status, GameSession.Status.GUESS)
|
||||
self.assertEqual(self.round_question.mixed_answers, answer_texts)
|
||||
|
||||
def test_mix_answers_requires_host(self):
|
||||
self.client.login(username="other", password="secret123")
|
||||
@@ -339,6 +341,30 @@ class MixAnswersTests(TestCase):
|
||||
answer_texts = [entry["text"] for entry in response.json()["answers"]]
|
||||
self.assertEqual(set(answer_texts), {"København", "Aarhus"})
|
||||
|
||||
def test_mix_answers_is_idempotent_after_transition_to_guess(self):
|
||||
LieAnswer.objects.create(round_question=self.round_question, player=self.player_one, text="Aarhus")
|
||||
LieAnswer.objects.create(round_question=self.round_question, player=self.player_two, text="Odense")
|
||||
|
||||
self.client.login(username="host", password="secret123")
|
||||
first = self.client.post(reverse("lobby:mix_answers", kwargs={"code": self.session.code, "round_question_id": self.round_question.id}))
|
||||
second = self.client.post(reverse("lobby:mix_answers", kwargs={"code": self.session.code, "round_question_id": self.round_question.id}))
|
||||
|
||||
self.assertEqual(first.status_code, 200)
|
||||
self.assertEqual(second.status_code, 200)
|
||||
self.assertEqual([entry["text"] for entry in first.json()["answers"]], [entry["text"] for entry in second.json()["answers"]])
|
||||
|
||||
def test_session_detail_returns_persisted_mixed_answers_for_reconnect(self):
|
||||
LieAnswer.objects.create(round_question=self.round_question, player=self.player_one, text="Aarhus")
|
||||
LieAnswer.objects.create(round_question=self.round_question, player=self.player_two, text="Odense")
|
||||
|
||||
self.client.login(username="host", password="secret123")
|
||||
mix_response = self.client.post(reverse("lobby:mix_answers", kwargs={"code": self.session.code, "round_question_id": self.round_question.id}))
|
||||
detail_response = self.client.get(reverse("lobby:session_detail", kwargs={"code": self.session.code}))
|
||||
|
||||
self.assertEqual(mix_response.status_code, 200)
|
||||
self.assertEqual(detail_response.status_code, 200)
|
||||
self.assertEqual([entry["text"] for entry in mix_response.json()["answers"]], [entry["text"] for entry in detail_response.json()["round_question"]["answers"]])
|
||||
|
||||
|
||||
class GuessSubmissionTests(TestCase):
|
||||
def setUp(self):
|
||||
|
||||
Reference in New Issue
Block a user