refactor(gameplay): extract round question payload builder
This commit is contained in:
@@ -13,6 +13,19 @@ def build_player_ref(player: Player | None) -> dict | None:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def build_round_question_payload(round_question: RoundQuestion | None) -> dict | None:
|
||||||
|
if round_question is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
return {
|
||||||
|
"id": round_question.id,
|
||||||
|
"round_number": round_question.round_number,
|
||||||
|
"prompt": round_question.question.prompt,
|
||||||
|
"shown_at": round_question.shown_at.isoformat(),
|
||||||
|
"answers": [{"text": text} for text in (round_question.mixed_answers or [])],
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def build_reveal_payload(round_question: RoundQuestion | None) -> dict | None:
|
def build_reveal_payload(round_question: RoundQuestion | None) -> dict | None:
|
||||||
if round_question is None:
|
if round_question is None:
|
||||||
return None
|
return None
|
||||||
|
|||||||
@@ -6,7 +6,12 @@ from django.test import TestCase
|
|||||||
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
|
||||||
from fupogfakta.payloads import build_lie_started_payload, build_phase_view_model, build_reveal_payload
|
from fupogfakta.payloads import (
|
||||||
|
build_lie_started_payload,
|
||||||
|
build_phase_view_model,
|
||||||
|
build_reveal_payload,
|
||||||
|
build_round_question_payload,
|
||||||
|
)
|
||||||
from fupogfakta.services import (
|
from fupogfakta.services import (
|
||||||
finish_game,
|
finish_game,
|
||||||
get_current_round_question,
|
get_current_round_question,
|
||||||
@@ -277,6 +282,7 @@ class FupOgFaktaExtractionSliceTests(TestCase):
|
|||||||
fooled_player=self.bob,
|
fooled_player=self.bob,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
round_question_payload = build_round_question_payload(round_question)
|
||||||
lie_payload = build_lie_started_payload(self.session, self.round_config, round_question)
|
lie_payload = build_lie_started_payload(self.session, self.round_config, round_question)
|
||||||
reveal_payload = build_reveal_payload(round_question)
|
reveal_payload = build_reveal_payload(round_question)
|
||||||
phase_view_model = build_phase_view_model(
|
phase_view_model = build_phase_view_model(
|
||||||
@@ -285,6 +291,8 @@ class FupOgFaktaExtractionSliceTests(TestCase):
|
|||||||
has_round_question=True,
|
has_round_question=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.assertEqual(round_question_payload["prompt"], self.question_one.prompt)
|
||||||
|
self.assertEqual(round_question_payload["answers"], [])
|
||||||
self.assertEqual(lie_payload["category"], {"slug": self.category.slug, "name": self.category.name})
|
self.assertEqual(lie_payload["category"], {"slug": self.category.slug, "name": self.category.name})
|
||||||
self.assertEqual(lie_payload["round_question_id"], round_question.id)
|
self.assertEqual(lie_payload["round_question_id"], round_question.id)
|
||||||
self.assertEqual(reveal_payload["correct_answer"], "1989")
|
self.assertEqual(reveal_payload["correct_answer"], "1989")
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ class LobbyGameplayExtractionTests(TestCase):
|
|||||||
self.assertIs(lobby_views._start_next_round, gameplay_services.start_next_round)
|
self.assertIs(lobby_views._start_next_round, gameplay_services.start_next_round)
|
||||||
self.assertIs(lobby_views._finish_game, gameplay_services.finish_game)
|
self.assertIs(lobby_views._finish_game, gameplay_services.finish_game)
|
||||||
self.assertIs(lobby_views._build_phase_view_model, gameplay_payloads.build_phase_view_model)
|
self.assertIs(lobby_views._build_phase_view_model, gameplay_payloads.build_phase_view_model)
|
||||||
|
self.assertIs(lobby_views._build_round_question_payload, gameplay_payloads.build_round_question_payload)
|
||||||
self.assertIs(lobby_views._build_scoreboard_phase_event, gameplay_payloads.build_scoreboard_phase_event)
|
self.assertIs(lobby_views._build_scoreboard_phase_event, gameplay_payloads.build_scoreboard_phase_event)
|
||||||
|
|
||||||
def test_start_next_round_view_source_stays_http_thin(self):
|
def test_start_next_round_view_source_stays_http_thin(self):
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ from fupogfakta.payloads import (
|
|||||||
build_lie_started_payload as _build_lie_started_payload,
|
build_lie_started_payload as _build_lie_started_payload,
|
||||||
build_phase_view_model as _build_phase_view_model,
|
build_phase_view_model as _build_phase_view_model,
|
||||||
build_reveal_payload as _build_reveal_payload,
|
build_reveal_payload as _build_reveal_payload,
|
||||||
|
build_round_question_payload as _build_round_question_payload,
|
||||||
build_scoreboard_phase_event as _build_scoreboard_phase_event,
|
build_scoreboard_phase_event as _build_scoreboard_phase_event,
|
||||||
)
|
)
|
||||||
from fupogfakta.services import (
|
from fupogfakta.services import (
|
||||||
@@ -190,15 +191,7 @@ def session_detail(request: HttpRequest, code: str) -> JsonResponse:
|
|||||||
session = _maybe_promote_reveal_to_scoreboard(session)
|
session = _maybe_promote_reveal_to_scoreboard(session)
|
||||||
current_round_question = _get_current_round_question(session)
|
current_round_question = _get_current_round_question(session)
|
||||||
|
|
||||||
round_question_payload = None
|
round_question_payload = _build_round_question_payload(current_round_question)
|
||||||
if current_round_question:
|
|
||||||
round_question_payload = {
|
|
||||||
"id": current_round_question.id,
|
|
||||||
"round_number": current_round_question.round_number,
|
|
||||||
"prompt": current_round_question.question.prompt,
|
|
||||||
"shown_at": current_round_question.shown_at.isoformat(),
|
|
||||||
"answers": [{"text": text} for text in (current_round_question.mixed_answers or [])],
|
|
||||||
}
|
|
||||||
|
|
||||||
phase_view_model = _build_phase_view_model(
|
phase_view_model = _build_phase_view_model(
|
||||||
session,
|
session,
|
||||||
|
|||||||
Reference in New Issue
Block a user