Ajoute la fonctionnalite quiz autonome/plein ecran a la boite a quiz
Introduit la double categorie de modeles (boite de dialogue / page de quiz plein ecran) avec plein ecran, minuteur, score integre et ecran de resultat pour les modeles page ; ajoute les modeles "Manga" (boite et page) et "Classique" (page), pilotables aussi par l'assistant IA Ruby. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
559331f9cf
commit
7db4803b93
@@ -168,6 +168,34 @@ def test_dispatch_set_object_collision_updates_the_settings(client, tmp_game_slu
|
||||
assert settings["shape"] == "cercle"
|
||||
|
||||
|
||||
def test_dispatch_set_quiz_box_config_updates_the_settings(client, tmp_game_slug_cleanup):
|
||||
"""Demande explicite : "Ruby dois pouvoir aussi piloter ces réglages"
|
||||
(plein écran/minuteur/modèle d'une "❓ Boîte à quiz", voir
|
||||
screens/rendering/quiz_box_config.py) — pas seulement l'éditeur
|
||||
manuel."""
|
||||
slug, screen_id = _create_jeu2d_game(client, tmp_game_slug_cleanup)
|
||||
object_id = screens.add_scene_object(slug, screen_id, kind="quiz_box")
|
||||
dispatch_tool(slug, screen_id, 1, "set_quiz_box_config", {
|
||||
"object_id": object_id, "fullscreen": True, "timer_mode": "question",
|
||||
"timer_seconds": 15, "dialog_template": "defaut", "page_template": "manga",
|
||||
})
|
||||
obj = screens.get_scene_object(slug, object_id)
|
||||
config = screens.resolve_quiz_box_config(obj)
|
||||
assert config == {
|
||||
"fullscreen": True, "timer_mode": "question", "timer_seconds": 15,
|
||||
"dialog_template": "defaut", "page_template": "manga",
|
||||
}
|
||||
|
||||
|
||||
def test_dispatch_set_quiz_box_config_defaults_to_no_fullscreen_no_timer(client, tmp_game_slug_cleanup):
|
||||
slug, screen_id = _create_jeu2d_game(client, tmp_game_slug_cleanup)
|
||||
object_id = screens.add_scene_object(slug, screen_id, kind="quiz_box")
|
||||
dispatch_tool(slug, screen_id, 1, "set_quiz_box_config", {"object_id": object_id})
|
||||
obj = screens.get_scene_object(slug, object_id)
|
||||
config = screens.resolve_quiz_box_config(obj)
|
||||
assert config == screens.DEFAULT_QUIZ_BOX_CONFIG
|
||||
|
||||
|
||||
def test_dispatch_create_global_variable_calls_db_directly(client, tmp_game_slug_cleanup):
|
||||
slug, screen_id = _create_jeu2d_game(client, tmp_game_slug_cleanup)
|
||||
result = dispatch_tool(slug, screen_id, 1, "create_global_variable", {"name": "score_ia", "var_type": "nombre_entier"})
|
||||
@@ -417,3 +445,18 @@ def test_set_object_role_enum_matches_the_source_constant():
|
||||
def test_set_object_collision_shape_enum_matches_the_source_constant():
|
||||
schema = _tool("set_object_collision")["input_schema"]["properties"]["shape"]
|
||||
assert schema["enum"] == list(screens.COLLISION_SHAPES)
|
||||
|
||||
|
||||
def test_set_quiz_box_config_timer_mode_enum_matches_the_source_constant():
|
||||
schema = _tool("set_quiz_box_config")["input_schema"]["properties"]["timer_mode"]
|
||||
assert schema["enum"] == list(screens.TIMER_MODES)
|
||||
|
||||
|
||||
def test_set_quiz_box_config_dialog_template_enum_matches_the_source_constant():
|
||||
schema = _tool("set_quiz_box_config")["input_schema"]["properties"]["dialog_template"]
|
||||
assert schema["enum"] == list(screens.QUIZ_BOX_DIALOG_TEMPLATES)
|
||||
|
||||
|
||||
def test_set_quiz_box_config_page_template_enum_matches_the_source_constant():
|
||||
schema = _tool("set_quiz_box_config")["input_schema"]["properties"]["page_template"]
|
||||
assert schema["enum"] == list(screens.QUIZ_BOX_PAGE_TEMPLATES)
|
||||
|
||||
Reference in New Issue
Block a user