76207bbb62
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
59 lines
2.5 KiB
Python
59 lines
2.5 KiB
Python
"""§22.4c — owner/admin mark-reviewed clears the flag; catalog unreviewed filter."""
|
|
from __future__ import annotations
|
|
|
|
from fastapi.testclient import TestClient
|
|
|
|
from test_propose_vertical import ( # noqa: F401
|
|
app_with_fake_gitea, tmp_env, provision_user_row, sign_in_as,
|
|
)
|
|
|
|
|
|
def _seed_unreviewed_active(fake, slug="feat"):
|
|
"""Put an active+unreviewed entry on the meta repo main + cache."""
|
|
from app import cache, entry as entry_mod
|
|
body = entry_mod.serialize(entry_mod.Entry(
|
|
slug=slug, title="Feat", state="active", unreviewed=True,
|
|
owners=["ben"], proposed_by="ben",
|
|
))
|
|
fake.files[("wiggleverse", "meta", "main", f"rfcs/{slug}.md")] = {"content": body, "sha": "s1"}
|
|
cache._upsert_cached_rfc(entry_mod.parse(body), body_sha="s1")
|
|
|
|
|
|
def test_catalog_unreviewed_filter(app_with_fake_gitea):
|
|
app, fake = app_with_fake_gitea
|
|
with TestClient(app) as client:
|
|
_seed_unreviewed_active(fake, "feat")
|
|
from app import cache, entry as entry_mod
|
|
ok = entry_mod.serialize(entry_mod.Entry(slug="ok", title="OK", state="active", owners=["ben"]))
|
|
fake.files[("wiggleverse", "meta", "main", "rfcs/ok.md")] = {"content": ok, "sha": "s2"}
|
|
cache._upsert_cached_rfc(entry_mod.parse(ok), body_sha="s2")
|
|
r = client.get("/api/rfcs", params={"unreviewed": "true"})
|
|
slugs = {i["slug"] for i in r.json()["items"]}
|
|
assert slugs == {"feat"}
|
|
|
|
|
|
def test_mark_reviewed_clears_flag(app_with_fake_gitea):
|
|
from app import db
|
|
app, fake = app_with_fake_gitea
|
|
with TestClient(app) as client:
|
|
_seed_unreviewed_active(fake, "feat")
|
|
provision_user_row(user_id=1, login="ben", role="owner")
|
|
sign_in_as(client, user_id=1, gitea_login="ben", display_name="Ben", role="owner")
|
|
r = client.post("/api/projects/default/rfcs/feat/mark-reviewed")
|
|
assert r.status_code == 200
|
|
row = db.conn().execute(
|
|
"SELECT unreviewed, reviewed_by FROM cached_rfcs WHERE slug='feat'"
|
|
).fetchone()
|
|
assert row["unreviewed"] == 0
|
|
assert row["reviewed_by"] == "ben"
|
|
|
|
|
|
def test_mark_reviewed_forbidden_for_non_superuser(app_with_fake_gitea):
|
|
app, fake = app_with_fake_gitea
|
|
with TestClient(app) as client:
|
|
_seed_unreviewed_active(fake, "feat")
|
|
provision_user_row(user_id=2, login="carol", role="contributor")
|
|
sign_in_as(client, user_id=2, gitea_login="carol", display_name="Carol", role="contributor")
|
|
r = client.post("/api/projects/default/rfcs/feat/mark-reviewed")
|
|
assert r.status_code == 403
|