Dev #3

Merged
w-vandal merged 7 commits from dev into main 2026-08-27 17:46:02 +00:00
2 changed files with 35 additions and 1 deletions
Showing only changes of commit 6cf4fdbe72 - Show all commits
+8 -1
View File
@@ -15,8 +15,15 @@ def object_new(slug):
externe obsolète) redirige simplement vers le tableau de bord."""
if request.method == "POST":
name = request.form.get("object_name", "").strip()
# Aucun champ requis à la création : create_definition(fields=[])
# crée simplement une table sans colonne "métier" (juste id/
# created_at), et le panneau "Modifier un objet" (onglet Champs,
# bouton "+ Ajouter") permet d'en poser ensuite — exiger au moins
# un champ ici faisait échouer silencieusement la création (aucun
# message d'erreur, juste un retour au tableau de bord) dès qu'on
# tapait le nom sans avoir encore cliqué "+ Ajouter un champ".
fields = _parse_field_rows(request.form)
if name and fields:
if name:
definition_id = db.create_definition(slug, name, fields)
return redirect(url_for("object_view", slug=slug, definition_id=definition_id))
+27
View File
@@ -0,0 +1,27 @@
"""Régression : le panneau "+ Nouvel objet" du tableau de bord (game_dashboard.html)
soumet le formulaire dès qu'on tape un nom et clique "Créer l'objet",
SANS avoir forcément cliqué "+ Ajouter un champ" au moins une fois avant
(les champs se posent typiquement APRÈS, depuis le panneau "Modifier un
objet"). routes/objects/object_new.py exigeait pourtant au moins un champ
pour créer quoi que ce soit ("if name and fields"), sans le moindre
message d'erreur en cas d'échec — juste un aller-retour silencieux vers le
tableau de bord, vécu comme "le panneau recharge la page sans créer
d'objet"."""
import db
def test_object_created_with_a_name_but_no_field(client, game):
resp = client.post(f"/game/{game}/objects/new", data={"object_name": "Compteur"}, follow_redirects=False)
assert resp.status_code == 302
assert "/objects/" in resp.headers["Location"]
definitions = db.list_definitions(game)
assert len(definitions) == 1
assert definitions[0]["name"] == "Compteur"
assert db.get_definition(game, definitions[0]["id"])["fields"] == []
def test_object_not_created_without_a_name(client, game):
resp = client.post(f"/game/{game}/objects/new", data={"object_name": " "}, follow_redirects=False)
assert resp.status_code == 302
assert db.list_definitions(game) == []