Dev #3
@@ -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))
|
||||
|
||||
|
||||
@@ -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) == []
|
||||
Reference in New Issue
Block a user