generated from john/python-template
Pure remediation; no behavior change. Every item traces to a finding in docs/architecture_code_review_2026-08-17.md. Deletions - Delete app_state.py, which had zero importers and whose get_session_factory raised TypeError at runtime [HIGH-01]. - Delete services/transcription.py and point build_prompt_execution imports at services/sources.py; drop the store.py compatibility aliases [MED-05]. - Delete ServiceBase.queue and its unparameterized asyncio.Queue [MED-07]. - Delete db/operations.get_next_queued_job, a divergent duplicate [CRIT-01]. - Drop the discarded load_docs parameter from list_jobs [LOW-03]. Config - Delete worker_retry_backoff_seconds; no backoff behavior existed anywhere, so wiring it would have been a new feature [MED-02]. - Wire sqlite_check_same_thread through get_engine. The engine hardcoded the setting's own default, so this preserves behavior exactly [MED-02]. - Replace DATABASE_URL in docker-compose.yml with the nested DATABASE__DRIVER / DATABASE__PATH names. Settings uses env_nested_delimiter with extra="ignore", so DATABASE_URL was silently discarded [MED-10]. UI - Move the 23KB inline VIBESCRIBE_LOGO_SVG to ui/static/vibescribe_logo.svg and load it through a cached read_svg sibling of read_css [MED-09]. - Route the portrait upload failure through error_presenter.show_error [LOW-07]. - Cancel the job detail auto-refresh timer instead of only deactivating it, and name its interval constant [LOW-06]. Worker - Make WorkerNotifier runtime_checkable and validate the resolved object in resolve_worker_notifier, which previously returned any non-None attribute unchecked [LOW-04]. Docs and lint - Fix two stale paths in services.instructions.md, one of which pointed at the module deleted here [LOW-02]. - ruff check --fix to zero [LOW-01]. Verified: 264 passed, 4 skipped; ruff check clean. Co-authored-by: Copilot App <[email protected]>
44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
"""Tests for homepage and entry-point routes."""
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.mark.integration
|
|
class TestPageRendering:
|
|
"""Verify entry-point routes return working pages."""
|
|
|
|
def test_root_redirects_to_ui(self, app_client):
|
|
"""GET / redirects to the UI mount point."""
|
|
_, client = app_client
|
|
response = client.get("/", follow_redirects=False)
|
|
|
|
assert response.status_code == 307
|
|
assert response.headers["location"] == "/ui/homepage"
|
|
|
|
def test_ui_redirects_to_homepage(self, app_client):
|
|
"""GET /ui redirects to the homepage."""
|
|
_, client = app_client
|
|
response = client.get("/ui", follow_redirects=False)
|
|
|
|
assert response.status_code == 307
|
|
assert response.headers["location"] == "/ui/homepage"
|
|
|
|
def test_homepage_page_renders(self, app_client):
|
|
"""GET /ui/homepage renders the homepage page."""
|
|
_, client = app_client
|
|
response = client.get("/ui/homepage")
|
|
|
|
assert response.status_code == 200
|
|
assert "Home" in response.text
|
|
assert "Edit Home Page" in response.text
|
|
assert '/homepage' in response.text
|
|
|
|
def test_homepage_edit_page_renders(self, app_client):
|
|
"""GET /ui/homepage/edit renders the edit page."""
|
|
_, client = app_client
|
|
response = client.get("/ui/homepage/edit")
|
|
|
|
assert response.status_code == 200
|
|
assert "Edit Home Page" in response.text
|
|
assert "Homepage markdown" in response.text
|