From 25b38e633df7c382817dc974b20ef9b20e141379 Mon Sep 17 00:00:00 2001 From: mwiegand Date: Mon, 11 May 2026 23:10:27 +0200 Subject: [PATCH] overlay_detail: add 'Refresh from Steam' button for workshop overlays Co-Authored-By: Claude Sonnet 4.6 --- l4d2web/templates/overlay_detail.html | 4 ++++ l4d2web/tests/test_pages.py | 29 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/l4d2web/templates/overlay_detail.html b/l4d2web/templates/overlay_detail.html index 39b0f55..09f0d3f 100644 --- a/l4d2web/templates/overlay_detail.html +++ b/l4d2web/templates/overlay_detail.html @@ -51,6 +51,10 @@ +
+ + +
{% endif %}
diff --git a/l4d2web/tests/test_pages.py b/l4d2web/tests/test_pages.py index 15a6803..eebc6c4 100644 --- a/l4d2web/tests/test_pages.py +++ b/l4d2web/tests/test_pages.py @@ -742,3 +742,32 @@ def test_overlay_detail_no_global_source_block(auth_client_with_server) -> None: assert "Global source" not in text assert "source_url" not in text + + +def test_workshop_overlay_detail_renders_refresh_button(auth_client_with_server) -> None: + """The owner sees a 'Refresh from Steam' button on their workshop overlay.""" + with session_scope() as s: + user_id = s.query(User).filter_by(username="alice").one().id + overlay_id = _seed_overlay("ws-refresh-button", "workshop", user_id) + + response = auth_client_with_server.get(f"/overlays/{overlay_id}") + text = response.get_data(as_text=True) + + assert response.status_code == 200 + assert "Refresh from Steam" in text + assert f'action="/overlays/{overlay_id}/refresh"' in text + + +def test_workshop_overlay_refresh_button_hidden_during_build(auth_client_with_server) -> None: + """While a build is in flight the Refresh button hides, matching the Add form.""" + with session_scope() as s: + user_id = s.query(User).filter_by(username="alice").one().id + overlay_id = _seed_overlay("ws-refresh-hidden", "workshop", user_id) + with session_scope() as s: + s.add(Job(user_id=user_id, overlay_id=overlay_id, operation="build_overlay", state="running")) + + response = auth_client_with_server.get(f"/overlays/{overlay_id}") + text = response.get_data(as_text=True) + + assert response.status_code == 200 + assert "Refresh from Steam" not in text