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