diff --git a/src/pages/_apropos_shell.py b/src/pages/_apropos_shell.py index fc37ebf..1629f39 100644 --- a/src/pages/_apropos_shell.py +++ b/src/pages/_apropos_shell.py @@ -23,6 +23,11 @@ SECTIONS = [ "label": "Abonnement", "href": "/a-propos/abonnement", }, + { + "key": "roadmap", + "label": "Roadmap", + "href": "/a-propos/roadmap", + }, ] diff --git a/src/pages/a_propos/roadmap.py b/src/pages/a_propos/roadmap.py new file mode 100644 index 0000000..20ce773 --- /dev/null +++ b/src/pages/a_propos/roadmap.py @@ -0,0 +1,17 @@ +from dash import register_page + +from src.pages._apropos_shell import apropos_shell +from src.roadmap import ui as roadmap_ui +from src.utils.seo import META_CONTENT + +register_page( + __name__, + path="/a-propos/roadmap", + title="Roadmap | À propos | decp.info", + description="Les prochaines fonctionnalités de decp.info, soumises au vote des abonnés.", + image_url=META_CONTENT["image_url"], +) + + +def layout(**_): + return apropos_shell("roadmap", roadmap_ui.roadmap_content(editable=False)) diff --git a/tests/roadmap/test_apropos_roadmap.py b/tests/roadmap/test_apropos_roadmap.py new file mode 100644 index 0000000..ac3668e --- /dev/null +++ b/tests/roadmap/test_apropos_roadmap.py @@ -0,0 +1,19 @@ +def test_public_layout_renders_read_only(monkeypatch): + from src.roadmap import ui as roadmap_ui + + monkeypatch.setattr( + roadmap_ui.github, + "fetch_roadmap_issues", + lambda: { + "en_cours": [], + "au_vote": [{"number": 1, "title": "Feature publique", "html_url": "u1"}], + }, + ) + monkeypatch.setattr(roadmap_ui.roadmap_db, "vote_counts", lambda: {1: 4}) + + from src.pages.a_propos import roadmap + + layout = roadmap.layout() + s = str(layout) + assert "Feature publique" in s + assert "Voter" not in s # lecture seule : aucun bouton