From 126834c7d432fa3aa15c9cca0ceece5620ecf6fc Mon Sep 17 00:00:00 2001 From: Colin Maudry Date: Wed, 1 Jul 2026 16:56:34 +0200 Subject: [PATCH] =?UTF-8?q?fix(subscriptions):=20un=20abonnement=20en=20?= =?UTF-8?q?=C3=A9chec=20(failed)=20ne=20bloque=20plus=20le=20r=C3=A9abonne?= =?UTF-8?q?ment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/compte_abonnement.py | 8 ++++++-- tests/subscriptions/test_compte_abonnement.py | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/pages/compte_abonnement.py b/src/pages/compte_abonnement.py index b653af8..3d9c2e5 100644 --- a/src/pages/compte_abonnement.py +++ b/src/pages/compte_abonnement.py @@ -294,12 +294,16 @@ def _tous_abonnes_banner(): ) +def _show_active_view(row) -> bool: + return row is not None and row["status"] != "failed" + + def layout(**query): guard = account_guard("/compte/abonnement", require_subscription=False) if guard is not None: return guard - row = db.get_by_user(current_user.id) if current_user.is_authenticated else None + row = db.get_current(current_user.id) if current_user.is_authenticated else None trial_used = ( db.has_used_trial(current_user.id) if current_user.is_authenticated else False ) @@ -310,7 +314,7 @@ def layout(**query): body.append(banner) body.extend(_feedback(query)) - if row is not None: + if _show_active_view(row): body.append(_active_view(row)) body.append(_resiliation_modal(row["current_period_end"])) else: diff --git a/tests/subscriptions/test_compte_abonnement.py b/tests/subscriptions/test_compte_abonnement.py index e623781..a3005e4 100644 --- a/tests/subscriptions/test_compte_abonnement.py +++ b/tests/subscriptions/test_compte_abonnement.py @@ -77,3 +77,17 @@ def test_banner_absent_when_flag_off(monkeypatch): from src.pages import compte_abonnement assert compte_abonnement._tous_abonnes_banner() is None + + +def test_show_active_view_true_for_live_statuses(monkeypatch): + from src.pages import compte_abonnement + + for status in ("pending", "trial", "active", "cancelled", "expired"): + assert compte_abonnement._show_active_view({"status": status}) is True + + +def test_show_active_view_false_for_failed_or_none(monkeypatch): + from src.pages import compte_abonnement + + assert compte_abonnement._show_active_view({"status": "failed"}) is False + assert compte_abonnement._show_active_view(None) is False