test(0.17.0): jalon, santé, étoiles, page projet — 7 tests, 178 au total
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
"""Palier 13 (0.17.0): vague 2 — jalon sur la carte (#17), pastille
|
||||
de santé (#18), épinglés via étoiles Gitea (#20), page Projet (#25)."""
|
||||
|
||||
from tests.conftest import csrf_from
|
||||
|
||||
|
||||
def test_dashboard_shows_next_milestone(client, fake_gitea):
|
||||
page = client.get("/")
|
||||
assert page.status_code == 200
|
||||
# Faux : Sprint 1, échéance 2026-10-20, 1 fermée / 2 au total.
|
||||
assert "🎯 Sprint 1" in page.text
|
||||
assert "1/2 terminées" in page.text
|
||||
assert "échéance" in page.text
|
||||
|
||||
|
||||
def test_dashboard_health_dot(client, fake_gitea):
|
||||
page = client.get("/")
|
||||
assert 'class="health-dot ' in page.text
|
||||
assert 'href="/health/Projets/demo"' in page.text
|
||||
|
||||
|
||||
def test_no_starred_section_by_default(client, fake_gitea):
|
||||
page = client.get("/")
|
||||
assert 'id="pinned-section" hidden' in page.text
|
||||
assert 'data-starred="0"' in page.text
|
||||
|
||||
|
||||
def test_starred_repo_is_pinned(client, fake_gitea):
|
||||
fake_gitea.starred.add("Projets/demo")
|
||||
page = client.get("/")
|
||||
assert 'id="pinned-section" hidden' not in page.text
|
||||
assert 'data-starred="1"' in page.text
|
||||
# La carte épinglée sort de la grille de son onglet d'origine :
|
||||
# une seule carte (div) pour demo — le bouton étoile porte aussi
|
||||
# un data-full, on compte donc le motif de la carte elle-même.
|
||||
assert page.text.count('data-full="Projets/demo" data-home') == 1
|
||||
|
||||
|
||||
def test_star_toggle_endpoint(client, fake_gitea):
|
||||
csrf = csrf_from(client)
|
||||
denied = client.post(
|
||||
"/api/projects/Projets/demo/star", data={"starred": "1"}
|
||||
)
|
||||
assert denied.status_code == 403
|
||||
|
||||
resp = client.post(
|
||||
"/api/projects/Projets/demo/star",
|
||||
data={"starred": "1", "csrf_token": csrf},
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
assert resp.json() == {"ok": True, "starred": True}
|
||||
assert "Projets/demo" in fake_gitea.starred
|
||||
|
||||
resp = client.post(
|
||||
"/api/projects/Projets/demo/star",
|
||||
data={"starred": "0", "csrf_token": csrf},
|
||||
)
|
||||
assert resp.json() == {"ok": True, "starred": False}
|
||||
assert "Projets/demo" not in fake_gitea.starred
|
||||
|
||||
|
||||
def test_card_title_links_to_project_page(client, fake_gitea):
|
||||
page = client.get("/")
|
||||
assert 'href="/project/Projets/demo"' in page.text
|
||||
assert 'href="/board/Projets/demo"' in page.text # accès board conservé
|
||||
|
||||
|
||||
def test_project_page(client, fake_gitea):
|
||||
from app import models
|
||||
|
||||
models.log_event("Projets/demo", 1, "created", to_column="backlog")
|
||||
models.log_event(
|
||||
"Projets/demo", 1, "moved",
|
||||
from_column="backlog", to_column="in_progress",
|
||||
)
|
||||
page = client.get("/project/Projets/demo")
|
||||
assert page.status_code == 200
|
||||
assert "🎯 Jalons ouverts" in page.text
|
||||
assert "Sprint 1" in page.text
|
||||
assert "🩺 Santé du flux" in page.text
|
||||
assert "🔮 Prévisions" in page.text
|
||||
assert "🕘 Activité récente" in page.text
|
||||
assert "📝 Notes du projet" in page.text
|
||||
assert 'href="/board/Projets/demo"' in page.text
|
||||
assert "/wall?repo=Projets/demo" in page.text
|
||||
# Titre du projet et lien Gitea du faux.
|
||||
assert "demo" in page.text
|
||||
Reference in New Issue
Block a user