test(gameplay): keep lobby delegation checks in lobby suite
All checks were successful
CI / test-and-quality (push) Successful in 4m3s
CI / test-and-quality (pull_request) Successful in 4m5s

This commit is contained in:
2026-03-17 21:03:50 +00:00
parent c9e64bc8a8
commit 72bc5997ff

View File

@@ -3,7 +3,6 @@ from unittest.mock import patch
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.test import TestCase from django.test import TestCase
from django.urls import reverse
from django.utils import timezone from django.utils import timezone
from fupogfakta.models import Category, GameSession, Guess, LieAnswer, Player, Question, RoundConfig, RoundQuestion, ScoreEvent from fupogfakta.models import Category, GameSession, Guess, LieAnswer, Player, Question, RoundConfig, RoundQuestion, ScoreEvent
@@ -194,74 +193,6 @@ class FupOgFaktaExtractionSliceTests(TestCase):
self.assertEqual(result.session.status, GameSession.Status.FINISHED) self.assertEqual(result.session.status, GameSession.Status.FINISHED)
self.assertEqual(self.session.status, GameSession.Status.FINISHED) self.assertEqual(self.session.status, GameSession.Status.FINISHED)
@patch("lobby.views.sync_broadcast_phase_event")
@patch("lobby.views._start_next_round")
def test_start_next_round_view_delegates_to_fupogfakta_service(self, mock_start_next_round, mock_broadcast):
self.client.login(username="host", password="secret123")
self.session.status = GameSession.Status.SCOREBOARD
self.session.save(update_fields=["status"])
response_payload = {
"session": {
"code": self.session.code,
"status": GameSession.Status.LIE,
"current_round": 2,
}
}
mock_start_next_round.return_value = type(
"Transition",
(),
{
"session": self.session,
"should_broadcast": True,
"response_payload": response_payload,
"phase_event_name": "phase.lie_started",
"phase_event_payload": {"round_number": 2},
},
)()
response = self.client.post(reverse("lobby:start_next_round", kwargs={"code": self.session.code}))
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json(), response_payload)
mock_start_next_round.assert_called_once_with(self.session)
mock_broadcast.assert_called_once_with(self.session.code, "phase.lie_started", {"round_number": 2})
@patch("lobby.views.sync_broadcast_phase_event")
@patch("lobby.views._finish_game")
def test_finish_game_view_delegates_to_fupogfakta_service(self, mock_finish_game, mock_broadcast):
self.client.login(username="host", password="secret123")
self.session.status = GameSession.Status.SCOREBOARD
self.session.save(update_fields=["status"])
response_payload = {
"session": {
"code": self.session.code,
"status": GameSession.Status.FINISHED,
"current_round": 1,
},
"winner": None,
"leaderboard": [],
}
finished_session = GameSession.objects.get(pk=self.session.pk)
finished_session.status = GameSession.Status.FINISHED
mock_finish_game.return_value = type(
"Transition",
(),
{
"session": finished_session,
"should_broadcast": True,
"response_payload": response_payload,
"phase_event_name": "phase.game_over",
"phase_event_payload": {"leaderboard": []},
},
)()
response = self.client.post(reverse("lobby:finish_game", kwargs={"code": self.session.code}))
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json(), response_payload)
mock_finish_game.assert_called_once_with(self.session)
mock_broadcast.assert_called_once_with(self.session.code, "phase.game_over", {"leaderboard": []})
def test_promote_reveal_to_scoreboard_moves_transition_into_service(self): def test_promote_reveal_to_scoreboard_moves_transition_into_service(self):
round_question = RoundQuestion.objects.create( round_question = RoundQuestion.objects.create(
session=self.session, session=self.session,