feat(f3): add final result endpoint to finish game
All checks were successful
CI / test-and-quality (push) Successful in 1m21s
CI / test-and-quality (pull_request) Successful in 1m21s

This commit is contained in:
2026-02-27 18:02:13 +01:00
parent e19535b24c
commit adce99b82b
4 changed files with 91 additions and 1 deletions

View File

@@ -584,6 +584,53 @@ class RevealRoundFlowTests(TestCase):
self.assertEqual(response.status_code, 403)
self.assertEqual(response.json()["error"], "Only host can view scoreboard")
def test_host_can_finish_game_from_reveal(self):
self.client.login(username="host_reveal", password="secret123")
response = self.client.post(
reverse(
"lobby:finish_game",
kwargs={"code": self.session.code},
)
)
self.assertEqual(response.status_code, 200)
payload = response.json()
self.assertEqual(payload["session"]["status"], GameSession.Status.FINISHED)
self.assertEqual(payload["winner"]["nickname"], "Luna")
self.assertEqual([item["nickname"] for item in payload["leaderboard"]], ["Luna", "Mads"])
self.session.refresh_from_db()
self.assertEqual(self.session.status, GameSession.Status.FINISHED)
def test_finish_game_requires_host(self):
self.client.login(username="other_reveal", password="secret123")
response = self.client.post(
reverse(
"lobby:finish_game",
kwargs={"code": self.session.code},
)
)
self.assertEqual(response.status_code, 403)
self.assertEqual(response.json()["error"], "Only host can finish game")
def test_finish_game_rejects_wrong_phase(self):
self.client.login(username="host_reveal", password="secret123")
self.session.status = GameSession.Status.GUESS
self.session.save(update_fields=["status"])
response = self.client.post(
reverse(
"lobby:finish_game",
kwargs={"code": self.session.code},
)
)
self.assertEqual(response.status_code, 400)
self.assertEqual(response.json()["error"], "Game can only be finished from reveal phase")
def test_host_can_start_next_round_from_reveal(self):
self.client.login(username="host_reveal", password="secret123")