fix: rename bug card anchor to div with _card_link include and add admin role tests
The bug list template wraps each bug in a `<div class="bug-card card-link-host">` instead of a bare `<a>`, pulling in `_card_link.html` for proper link semantics. Two new integration tests (`test_bug_detail_renders_for_member` and `test_bug_detail_renders_for_admin`) verify that the `/bugs/{number}` endpoint returns 200 for both roles, that the "Close ticket" button is absent for members and present for admins, and that the JSON response exposes `viewer_is_admin` as a boolean. Supporting helpers `_role_user` and `_open_ticket` create users with a specific role and open a Gitea-backed ticket.
This commit is contained in:
@@ -161,6 +161,57 @@ def test_create_job_files_issue(gitea_env):
|
||||
assert username in issue["body"]
|
||||
|
||||
|
||||
def _role_user(role: str):
|
||||
uid, username = _make_user()
|
||||
get_table("users").update({"uid": uid, "role": role}, ["uid"])
|
||||
return uid, username
|
||||
|
||||
|
||||
def _open_ticket(fake, role: str):
|
||||
import devplacepy.main as m
|
||||
from starlette.testclient import TestClient
|
||||
from devplacepy.utils import create_session
|
||||
|
||||
uid, _ = _role_user(role)
|
||||
issue = run_async(fake.create_issue("Submit does nothing", "details"))
|
||||
number = int(issue["number"])
|
||||
store.record_ticket(
|
||||
number=number,
|
||||
author_uid=uid,
|
||||
original_title="Submit does nothing",
|
||||
original_description="details",
|
||||
enhanced_title="Submit does nothing",
|
||||
html_url=issue.get("html_url", ""),
|
||||
status="open",
|
||||
)
|
||||
client = TestClient(m.app)
|
||||
client.cookies.set("session", create_session(uid))
|
||||
return number, client
|
||||
|
||||
|
||||
def test_bug_detail_renders_for_member(gitea_env):
|
||||
number, client = _open_ticket(gitea_env, "Member")
|
||||
html = client.get(f"/bugs/{number}")
|
||||
assert html.status_code == 200, html.text[:300]
|
||||
assert "Submit does nothing" in html.text
|
||||
assert "Close ticket" not in html.text
|
||||
data = client.get(
|
||||
f"/bugs/{number}", headers={"Accept": "application/json"}
|
||||
).json()
|
||||
assert data["viewer_is_admin"] is False
|
||||
|
||||
|
||||
def test_bug_detail_renders_for_admin(gitea_env):
|
||||
number, client = _open_ticket(gitea_env, "Admin")
|
||||
html = client.get(f"/bugs/{number}")
|
||||
assert html.status_code == 200, html.text[:300]
|
||||
assert "Close ticket" in html.text
|
||||
data = client.get(
|
||||
f"/bugs/{number}", headers={"Accept": "application/json"}
|
||||
).json()
|
||||
assert data["viewer_is_admin"] is True
|
||||
|
||||
|
||||
def test_create_job_fails_without_config(gitea_env):
|
||||
set_setting("gitea_token", "")
|
||||
uid, _ = _make_user()
|
||||
|
||||
Reference in New Issue
Block a user