Files
Forge-Engine/tests/test_scene_object_add_asset.py
T
williamandClaude Sonnet 5 b07b231a61
Build and deploy / test-python (push) Successful in 12m24s
Build and deploy / test-js (push) Successful in 1m9s
Build and deploy / build-and-push (push) Skipped
Build and deploy / deploy (push) Skipped
Ajoute l'assistant IA "Ruby" (Claude + Scenario) et corrige plusieurs bugs de la scène
Intègre un chat IA capable de manipuler la scène via les mêmes fonctions
que l'éditeur manuel (objets, variables, déclencheurs, images générées),
avec conversations multiples par écran façon Claude. Corrige au passage
le rafraîchissement pjax hors-ordre, l'onglet IA/déclencheurs vide après
sélection d'un objet, la comparaison de booléens dans les conditions, et
le blocage du glisser-déposer hors du cadre caméra après un redimensionnement
de fond par l'IA.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 19:40:31 +02:00

46 lines
1.9 KiB
Python

"""Poser un objet de scène depuis "Mes assets" (voir plan Phase 1, §2) —
routes/scenes/scene_object_add.py::asset_id, isolation stricte par
propriétaire comme le reste de "Mes assets" (tests/test_user_assets.py)."""
import re
import auth
import screens
def _create_jeu2d_game(client, tmp_game_slug_cleanup, name="pytest_scene_object_asset"):
resp = client.post("/games/new", data={"name": name}, follow_redirects=False)
slug = tmp_game_slug_cleanup(resp.headers["Location"].rstrip("/").split("/")[-1])
screen_id = screens.create_screen(slug, "Scène 1", kind="jeu_2d")
return slug, screen_id
def test_scene_object_add_with_asset_id_poses_the_owners_image(client, tmp_game_slug_cleanup):
slug, screen_id = _create_jeu2d_game(client, tmp_game_slug_cleanup)
with client.session_transaction() as sess:
user_id = sess["user_id"]
asset_id = auth.create_user_asset(user_id, "abc123.png", original_name="photo.png")
resp = client.post(
f"/game/{slug}/screens/{screen_id}/scene-objects/add",
data={"kind": "decor", "asset_id": str(asset_id)},
headers={"X-Requested-With": "fetch"},
)
assert resp.status_code == 200
body = resp.get_json()
obj = screens.get_scene_object(slug, body["id"])
assert obj["attributes"]["src"] == f"/assets/{user_id}/abc123.png"
def test_scene_object_add_with_asset_id_403s_for_another_accounts_asset(client, user_client, tmp_game_slug_cleanup):
slug, screen_id = _create_jeu2d_game(client, tmp_game_slug_cleanup)
with user_client.session_transaction() as sess:
other_user_id = sess["user_id"]
asset_id = auth.create_user_asset(other_user_id, "not_mine.png")
resp = client.post(
f"/game/{slug}/screens/{screen_id}/scene-objects/add",
data={"kind": "decor", "asset_id": str(asset_id)},
headers={"X-Requested-With": "fetch"},
)
assert resp.status_code == 403