feat(abonnement): sélection de formule par cartes cliquables dans mes-infos
Remplace la garde ?plan= (redirection si absent) par une sélection interactive : deux cartes de formule (réutilisées de la page publique via _plan_card) cliquables, un callback recopie le choix dans un champ caché natif soumis avec le POST du formulaire. Le bouton de soumission reste désactivé tant qu'aucune formule n'est choisie (en plus des cases à cocher existantes). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def _plan_env(monkeypatch):
|
||||
monkeypatch.setenv("FRISBII_PLAN_SIMPLE", "plan_simple")
|
||||
monkeypatch.setenv("FRISBII_PLAN_SOUTIEN", "plan_soutien")
|
||||
|
||||
|
||||
def test_selectable_cards_render_both_plans():
|
||||
from src.pages.compte import abonnement_mes_infos as m
|
||||
|
||||
text = str(m._selectable_cards(trial_for=lambda key: 2))
|
||||
assert "plan-card-simple" in text
|
||||
assert "plan-card-soutien" in text
|
||||
assert "plan-selectable" in text
|
||||
assert "Abonnement de soutien" in text
|
||||
|
||||
|
||||
def test_selection_state_simple():
|
||||
from src.pages.compte import abonnement_mes_infos as m
|
||||
|
||||
value, cls_simple, cls_soutien, cls_invite = m._selection_state("simple")
|
||||
assert value == "simple"
|
||||
assert "selected" in cls_simple
|
||||
assert "selected" not in cls_soutien
|
||||
assert cls_invite == "d-none"
|
||||
|
||||
|
||||
def test_selection_state_soutien():
|
||||
from src.pages.compte import abonnement_mes_infos as m
|
||||
|
||||
value, cls_simple, cls_soutien, _ = m._selection_state("soutien")
|
||||
assert value == "soutien"
|
||||
assert "selected" in cls_soutien
|
||||
assert "selected" not in cls_simple
|
||||
|
||||
|
||||
def test_submit_disabled_without_plan():
|
||||
from src.pages.compte import abonnement_mes_infos as m
|
||||
|
||||
assert m._toggle_submit(["ok"], ["ok"], "") is True
|
||||
assert m._toggle_submit(["ok"], ["ok"], "simple") is False
|
||||
assert m._toggle_submit([], ["ok"], "simple") is True
|
||||
Reference in New Issue
Block a user