generated from john/python-template
438 lines
50 KiB
Plaintext
438 lines
50 KiB
Plaintext
============================= test session starts =============================
|
|
platform win32 -- Python 3.12.8, pytest-9.1.1, pluggy-1.6.0
|
|
rootdir: C:\Github\transcription
|
|
configfile: pyproject.toml
|
|
plugins: anyio-4.14.2, asyncio-1.4.0
|
|
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
|
|
collected 52 items
|
|
|
|
tests\ui\test_documents_page.py ...F.... [ 15%]
|
|
tests\ui\test_jobs_page.py ....F.... [ 32%]
|
|
tests\ui\test_navigation_and_mounts.py .......F. [ 50%]
|
|
tests\ui\test_pages_registration.py F [ 51%]
|
|
tests\ui\test_people_page.py .......... [ 71%]
|
|
tests\ui\test_sources_page.py ..FFFFFFFF [ 90%]
|
|
tests\ui\test_upload_page.py ..... [100%]
|
|
|
|
================================== FAILURES ===================================
|
|
_ TestDocumentsPageRendering.test_document_detail_page_renders_bento_grid_and_metadata _
|
|
|
|
self = <test_documents_page.TestDocumentsPageRendering object at 0x000001EC8D7043B0>
|
|
app_client = (<fastapi.applications.FastAPI object at 0x000001EC8D704CE0>, <starlette.testclient.TestClient object at 0x000001EC8D7B5C70>)
|
|
seed_person_and_document = ('1f55fb6e-a343-4f2e-a461-c3c22e493d2f', '5060421f-64ac-47a1-8249-24c9e656c565')
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_document_detail_page_renders_bento_grid_and_metadata(
|
|
self, app_client, seed_person_and_document
|
|
):
|
|
_, client = app_client
|
|
doc_id, _ = seed_person_and_document
|
|
|
|
response = client.get(f"/ui/documents/{doc_id}")
|
|
|
|
assert response.status_code == 200
|
|
> assert "Document Record" in response.text
|
|
E assert 'Document Record' in '<!doctype html>\n<html>\n <head>\n <title>NiceGUI</title>\n <meta name="viewport" content="width=device-width,...nt.querySelector(`a[name="${fragment}"]`))?.scrollIntoView();\n });\n }\n </script>\n </body>\n</html>'
|
|
E + where '<!doctype html>\n<html>\n <head>\n <title>NiceGUI</title>\n <meta name="viewport" content="width=device-width,...nt.querySelector(`a[name="${fragment}"]`))?.scrollIntoView();\n });\n }\n </script>\n </body>\n</html>' = <Response [200 OK]>.text
|
|
|
|
tests\ui\test_documents_page.py:92: AssertionError
|
|
---------------------------- Captured stdout call -----------------------------
|
|
2026-08-05 18:31:12 INFO | HTTP Request: GET http://testserver/ui/documents/1f55fb6e-a343-4f2e-a461-c3c22e493d2f "HTTP/1.1 200 OK"
|
|
------------------------------ Captured log call ------------------------------
|
|
INFO httpx2:_client.py:1090 HTTP Request: GET http://testserver/ui/documents/1f55fb6e-a343-4f2e-a461-c3c22e493d2f "HTTP/1.1 200 OK"
|
|
___ TestJobsPageRendering.test_job_detail_page_renders_logistics_and_links ____
|
|
|
|
self = <test_jobs_page.TestJobsPageRendering object at 0x000001EC8D706990>
|
|
app_client = (<fastapi.applications.FastAPI object at 0x000001EC8D704CE0>, <starlette.testclient.TestClient object at 0x000001EC8D7B5C70>)
|
|
seed_document_with_unlinked_job = ('17a8ca60-ae2e-4189-9642-048a79bf5633', 'c2863ebc-5c9a-4033-9451-bd516b46bc7b')
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_job_detail_page_renders_logistics_and_links(
|
|
self, app_client, seed_document_with_unlinked_job
|
|
):
|
|
_, client = app_client
|
|
_, job_id = seed_document_with_unlinked_job
|
|
|
|
response = client.get(f"/ui/jobs/{job_id}")
|
|
|
|
assert response.status_code == 200
|
|
assert f"Job Record: {job_id}" in response.text
|
|
> assert "Job Execution Logistics" in response.text
|
|
E assert 'Job Execution Logistics' in '<!doctype html>\n<html>\n <head>\n <title>NiceGUI</title>\n <meta name="viewport" content="width=device-width,...nt.querySelector(`a[name="${fragment}"]`))?.scrollIntoView();\n });\n }\n </script>\n </body>\n</html>'
|
|
E + where '<!doctype html>\n<html>\n <head>\n <title>NiceGUI</title>\n <meta name="viewport" content="width=device-width,...nt.querySelector(`a[name="${fragment}"]`))?.scrollIntoView();\n });\n }\n </script>\n </body>\n</html>' = <Response [200 OK]>.text
|
|
|
|
tests\ui\test_jobs_page.py:97: AssertionError
|
|
---------------------------- Captured stdout call -----------------------------
|
|
2026-08-05 18:31:13 INFO | HTTP Request: GET http://testserver/ui/jobs/c2863ebc-5c9a-4033-9451-bd516b46bc7b "HTTP/1.1 200 OK"
|
|
------------------------------ Captured log call ------------------------------
|
|
INFO httpx2:_client.py:1090 HTTP Request: GET http://testserver/ui/jobs/c2863ebc-5c9a-4033-9451-bd516b46bc7b "HTTP/1.1 200 OK"
|
|
_ TestNavigationAndMounts.test_registered_pages_render_successfully[/ui/sources] _
|
|
|
|
self = <test_navigation_and_mounts.TestNavigationAndMounts object at 0x000001EC8D704950>
|
|
app_client = (<fastapi.applications.FastAPI object at 0x000001EC8D704CE0>, <starlette.testclient.TestClient object at 0x000001EC8D7B5C70>)
|
|
route_path = '/ui/sources'
|
|
|
|
@pytest.mark.parametrize(
|
|
"route_path",
|
|
[
|
|
"/ui/homepage",
|
|
"/ui/homepage/edit",
|
|
"/ui/documents",
|
|
"/ui/people",
|
|
"/ui/sources",
|
|
"/ui/jobs",
|
|
],
|
|
)
|
|
def test_registered_pages_render_successfully(self, app_client, route_path: str):
|
|
"""Smoke test verifying all primary UI routes respond with 200 OK."""
|
|
_, client = app_client
|
|
response = client.get(route_path)
|
|
|
|
> assert response.status_code == 200
|
|
E assert 404 == 200
|
|
E + where 404 = <Response [404 Not Found]>.status_code
|
|
|
|
tests\ui\test_navigation_and_mounts.py:42: AssertionError
|
|
---------------------------- Captured stdout call -----------------------------
|
|
2026-08-05 18:31:13 WARNING | http://testserver/ui/sources not found
|
|
2026-08-05 18:31:13 INFO | HTTP Request: GET http://testserver/ui/sources "HTTP/1.1 404 Not Found"
|
|
------------------------------ Captured log call ------------------------------
|
|
WARNING nicegui:nicegui.py:180 http://testserver/ui/sources not found
|
|
INFO httpx2:_client.py:1090 HTTP Request: GET http://testserver/ui/sources "HTTP/1.1 404 Not Found"
|
|
_________ TestPageRegistration.test_ui_mount_serves_registered_pages __________
|
|
|
|
self = <test_pages_registration.TestPageRegistration object at 0x000001EC8D707950>
|
|
app_client = (<fastapi.applications.FastAPI object at 0x000001EC8D704CE0>, <starlette.testclient.TestClient object at 0x000001EC8D7B5C70>)
|
|
|
|
def test_ui_mount_serves_registered_pages(self, app_client):
|
|
"""Mounted UI routes respond successfully when the full app is created."""
|
|
_, client = app_client
|
|
|
|
homepage_response = client.get("/ui/homepage")
|
|
upload_response = client.get("/ui/upload", follow_redirects=False)
|
|
documents_response = client.get("/ui/documents")
|
|
people_response = client.get("/ui/people")
|
|
sources_response = client.get("/ui/sources")
|
|
jobs_response = client.get("/ui/jobs")
|
|
|
|
assert homepage_response.status_code == 200
|
|
assert upload_response.status_code == 307
|
|
assert documents_response.status_code == 200
|
|
assert people_response.status_code == 200
|
|
> assert sources_response.status_code == 200
|
|
E assert 404 == 200
|
|
E + where 404 = <Response [404 Not Found]>.status_code
|
|
|
|
tests\ui\test_pages_registration.py:25: AssertionError
|
|
---------------------------- Captured stdout call -----------------------------
|
|
2026-08-05 18:31:14 INFO | HTTP Request: GET http://testserver/ui/homepage "HTTP/1.1 200 OK"
|
|
2026-08-05 18:31:14 INFO | HTTP Request: GET http://testserver/ui/upload "HTTP/1.1 307 Temporary Redirect"
|
|
2026-08-05 18:31:14 INFO | HTTP Request: GET http://testserver/ui/documents "HTTP/1.1 200 OK"
|
|
2026-08-05 18:31:14 INFO | HTTP Request: GET http://testserver/ui/people "HTTP/1.1 200 OK"
|
|
2026-08-05 18:31:14 WARNING | http://testserver/ui/sources not found
|
|
2026-08-05 18:31:14 INFO | HTTP Request: GET http://testserver/ui/sources "HTTP/1.1 404 Not Found"
|
|
2026-08-05 18:31:14 INFO | HTTP Request: GET http://testserver/ui/jobs "HTTP/1.1 200 OK"
|
|
------------------------------ Captured log call ------------------------------
|
|
INFO httpx2:_client.py:1090 HTTP Request: GET http://testserver/ui/homepage "HTTP/1.1 200 OK"
|
|
INFO httpx2:_client.py:1090 HTTP Request: GET http://testserver/ui/upload "HTTP/1.1 307 Temporary Redirect"
|
|
INFO httpx2:_client.py:1090 HTTP Request: GET http://testserver/ui/documents "HTTP/1.1 200 OK"
|
|
INFO httpx2:_client.py:1090 HTTP Request: GET http://testserver/ui/people "HTTP/1.1 200 OK"
|
|
WARNING nicegui:nicegui.py:180 http://testserver/ui/sources not found
|
|
INFO httpx2:_client.py:1090 HTTP Request: GET http://testserver/ui/sources "HTTP/1.1 404 Not Found"
|
|
INFO httpx2:_client.py:1090 HTTP Request: GET http://testserver/ui/jobs "HTTP/1.1 200 OK"
|
|
_______ TestSourcesPageRendering.test_sources_page_renders_empty_state ________
|
|
|
|
self = <test_sources_page.TestSourcesPageRendering object at 0x000001EC8D71E300>
|
|
app_client = (<fastapi.applications.FastAPI object at 0x000001EC8D704CE0>, <starlette.testclient.TestClient object at 0x000001EC8D7B5C70>)
|
|
|
|
def test_sources_page_renders_empty_state(self, app_client):
|
|
_, client = app_client
|
|
|
|
response = client.get("/ui/sources")
|
|
|
|
> assert response.status_code == 200
|
|
E assert 404 == 200
|
|
E + where 404 = <Response [404 Not Found]>.status_code
|
|
|
|
tests\ui\test_sources_page.py:69: AssertionError
|
|
---------------------------- Captured stdout call -----------------------------
|
|
2026-08-05 18:31:14 WARNING | http://testserver/ui/sources not found
|
|
2026-08-05 18:31:14 INFO | HTTP Request: GET http://testserver/ui/sources "HTTP/1.1 404 Not Found"
|
|
------------------------------ Captured log call ------------------------------
|
|
WARNING nicegui:nicegui.py:180 http://testserver/ui/sources not found
|
|
INFO httpx2:_client.py:1090 HTTP Request: GET http://testserver/ui/sources "HTTP/1.1 404 Not Found"
|
|
_______ TestSourcesPageRendering.test_sources_page_lists_seeded_sources _______
|
|
|
|
self = <test_sources_page.TestSourcesPageRendering object at 0x000001EC8D71D820>
|
|
app_client = (<fastapi.applications.FastAPI object at 0x000001EC8D704CE0>, <starlette.testclient.TestClient object at 0x000001EC8D7B5C70>)
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_sources_page_lists_seeded_sources(self, app_client):
|
|
_, client = app_client
|
|
|
|
async with session_scope() as session:
|
|
document = Document(name="Source Document", document_type="letter")
|
|
session.add(document)
|
|
await session.flush()
|
|
session.add(
|
|
Source(
|
|
document_id=document.id,
|
|
page_number=1,
|
|
upload_name="page_one.png",
|
|
filename="stored_page_one.png",
|
|
file_path="/tmp/stored_page_one.png",
|
|
)
|
|
)
|
|
await session.commit()
|
|
|
|
response = client.get("/ui/sources")
|
|
|
|
> assert response.status_code == 200
|
|
E assert 404 == 200
|
|
E + where 404 = <Response [404 Not Found]>.status_code
|
|
|
|
tests\ui\test_sources_page.py:94: AssertionError
|
|
---------------------------- Captured stdout call -----------------------------
|
|
2026-08-05 18:31:14 WARNING | http://testserver/ui/sources not found
|
|
2026-08-05 18:31:14 INFO | HTTP Request: GET http://testserver/ui/sources "HTTP/1.1 404 Not Found"
|
|
------------------------------ Captured log call ------------------------------
|
|
WARNING nicegui:nicegui.py:180 http://testserver/ui/sources not found
|
|
INFO httpx2:_client.py:1090 HTTP Request: GET http://testserver/ui/sources "HTTP/1.1 404 Not Found"
|
|
___ TestSourcesPageRendering.test_sources_page_filters_to_document_context ____
|
|
|
|
self = <test_sources_page.TestSourcesPageRendering object at 0x000001EC8D74C0B0>
|
|
app_client = (<fastapi.applications.FastAPI object at 0x000001EC8D704CE0>, <starlette.testclient.TestClient object at 0x000001EC8D7B5C70>)
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_sources_page_filters_to_document_context(self, app_client):
|
|
_, client = app_client
|
|
|
|
async with session_scope() as session:
|
|
target = Document(name="Target", document_type="letter")
|
|
other = Document(name="Other", document_type="record")
|
|
session.add_all([target, other])
|
|
await session.flush()
|
|
|
|
session.add_all(
|
|
[
|
|
Source(
|
|
document_id=target.id,
|
|
page_number=1,
|
|
upload_name="target_page.png",
|
|
filename="target_stored.png",
|
|
file_path="/tmp/target_stored.png",
|
|
),
|
|
Source(
|
|
document_id=other.id,
|
|
page_number=1,
|
|
upload_name="other_page.png",
|
|
filename="other_stored.png",
|
|
file_path="/tmp/other_stored.png",
|
|
),
|
|
]
|
|
)
|
|
await session.commit()
|
|
target_id = str(target.id)
|
|
|
|
response = client.get(f"/ui/sources?document_id={target_id}")
|
|
|
|
> assert response.status_code == 200
|
|
E assert 404 == 200
|
|
E + where 404 = <Response [404 Not Found]>.status_code
|
|
|
|
tests\ui\test_sources_page.py:131: AssertionError
|
|
---------------------------- Captured stdout call -----------------------------
|
|
2026-08-05 18:31:14 WARNING | http://testserver/ui/sources?document_id=14d8708a-ac52-49a0-b0ca-a19d6c2daca7 not found
|
|
2026-08-05 18:31:14 INFO | HTTP Request: GET http://testserver/ui/sources?document_id=14d8708a-ac52-49a0-b0ca-a19d6c2daca7 "HTTP/1.1 404 Not Found"
|
|
------------------------------ Captured log call ------------------------------
|
|
WARNING nicegui:nicegui.py:180 http://testserver/ui/sources?document_id=14d8708a-ac52-49a0-b0ca-a19d6c2daca7 not found
|
|
INFO httpx2:_client.py:1090 HTTP Request: GET http://testserver/ui/sources?document_id=14d8708a-ac52-49a0-b0ca-a19d6c2daca7 "HTTP/1.1 404 Not Found"
|
|
______ TestSourcesPageRendering.test_sources_page_filters_to_job_context ______
|
|
|
|
self = <test_sources_page.TestSourcesPageRendering object at 0x000001EC8D74C500>
|
|
app_client = (<fastapi.applications.FastAPI object at 0x000001EC8D704CE0>, <starlette.testclient.TestClient object at 0x000001EC8D7B5C70>)
|
|
seed_job = <function seed_job.<locals>._seed at 0x000001EC8F3898A0>
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_sources_page_filters_to_job_context(self, app_client, seed_job):
|
|
_, client = app_client
|
|
job_id = await seed_job(filename="job-page.png", transcription_text="job text")
|
|
|
|
response = client.get(f"/ui/sources?job_id={job_id}")
|
|
|
|
> assert response.status_code == 200
|
|
E assert 404 == 200
|
|
E + where 404 = <Response [404 Not Found]>.status_code
|
|
|
|
tests\ui\test_sources_page.py:144: AssertionError
|
|
---------------------------- Captured stdout call -----------------------------
|
|
2026-08-05 18:31:14 WARNING | http://testserver/ui/sources?job_id=f9aec457-1f4b-4081-b2cb-4dccae00afd5 not found
|
|
2026-08-05 18:31:14 INFO | HTTP Request: GET http://testserver/ui/sources?job_id=f9aec457-1f4b-4081-b2cb-4dccae00afd5 "HTTP/1.1 404 Not Found"
|
|
------------------------------ Captured log call ------------------------------
|
|
WARNING nicegui:nicegui.py:180 http://testserver/ui/sources?job_id=f9aec457-1f4b-4081-b2cb-4dccae00afd5 not found
|
|
INFO httpx2:_client.py:1090 HTTP Request: GET http://testserver/ui/sources?job_id=f9aec457-1f4b-4081-b2cb-4dccae00afd5 "HTTP/1.1 404 Not Found"
|
|
_ TestSourcesPageRendering.test_sources_page_job_context_shows_job_source_status_and_error_detail _
|
|
|
|
self = <test_sources_page.TestSourcesPageRendering object at 0x000001EC8D74C920>
|
|
app_client = (<fastapi.applications.FastAPI object at 0x000001EC8D704CE0>, <starlette.testclient.TestClient object at 0x000001EC8D7B5C70>)
|
|
seed_job = <function seed_job.<locals>._seed at 0x000001EC8F388AE0>
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_sources_page_job_context_shows_job_source_status_and_error_detail(
|
|
self, app_client, seed_job
|
|
):
|
|
_, client = app_client
|
|
job_id = await seed_job(
|
|
filename="job-failed-page.png",
|
|
status=JobStatus.FAILED,
|
|
transcription_text=None,
|
|
error_detail="Provider timed out",
|
|
)
|
|
|
|
response = client.get(f"/ui/sources?job_id={job_id}")
|
|
|
|
> assert response.status_code == 200
|
|
E assert 404 == 200
|
|
E + where 404 = <Response [404 Not Found]>.status_code
|
|
|
|
tests\ui\test_sources_page.py:163: AssertionError
|
|
---------------------------- Captured stdout call -----------------------------
|
|
2026-08-05 18:31:14 WARNING | http://testserver/ui/sources?job_id=82032e5d-847c-4147-9f5d-42e6e6aea6da not found
|
|
2026-08-05 18:31:14 INFO | HTTP Request: GET http://testserver/ui/sources?job_id=82032e5d-847c-4147-9f5d-42e6e6aea6da "HTTP/1.1 404 Not Found"
|
|
------------------------------ Captured log call ------------------------------
|
|
WARNING nicegui:nicegui.py:180 http://testserver/ui/sources?job_id=82032e5d-847c-4147-9f5d-42e6e6aea6da not found
|
|
INFO httpx2:_client.py:1090 HTTP Request: GET http://testserver/ui/sources?job_id=82032e5d-847c-4147-9f5d-42e6e6aea6da "HTTP/1.1 404 Not Found"
|
|
_ TestSourcesPageRendering.test_source_detail_page_renders_preview_and_revision_box _
|
|
|
|
self = <test_sources_page.TestSourcesPageRendering object at 0x000001EC8D74CD40>
|
|
app_client = (<fastapi.applications.FastAPI object at 0x000001EC8D704CE0>, <starlette.testclient.TestClient object at 0x000001EC8D7B5C70>)
|
|
seed_job = <function seed_job.<locals>._seed at 0x000001EC8F38A8E0>
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_source_detail_page_renders_preview_and_revision_box(
|
|
self, app_client, seed_job
|
|
):
|
|
_, client = app_client
|
|
fixture_path = (
|
|
Path(__file__).resolve().parents[1]
|
|
/ "fixtures"
|
|
/ "images"
|
|
/ "valid"
|
|
/ "small_png.png"
|
|
)
|
|
job_id = await seed_job(
|
|
filename="detail-source.png",
|
|
transcription_text="original transcription text",
|
|
revision_text="human revision text",
|
|
source_file=fixture_path,
|
|
)
|
|
|
|
async with session_scope() as session:
|
|
job = await session.get(Job, job_id)
|
|
assert job is not None
|
|
source = (
|
|
await session.exec(select(Source).where(Source.document_id == job.document_id))
|
|
).first()
|
|
assert source is not None
|
|
source_id = str(source.id)
|
|
|
|
response = client.get(f"/ui/sources/{source_id}")
|
|
|
|
> assert response.status_code == 200
|
|
E assert 404 == 200
|
|
E + where 404 = <Response [404 Not Found]>.status_code
|
|
|
|
tests\ui\test_sources_page.py:198: AssertionError
|
|
---------------------------- Captured stdout call -----------------------------
|
|
2026-08-05 18:31:14 WARNING | http://testserver/ui/sources/07d47626-452c-4d25-93ee-63081d173d80 not found
|
|
2026-08-05 18:31:14 INFO | HTTP Request: GET http://testserver/ui/sources/07d47626-452c-4d25-93ee-63081d173d80 "HTTP/1.1 404 Not Found"
|
|
------------------------------ Captured log call ------------------------------
|
|
WARNING nicegui:nicegui.py:180 http://testserver/ui/sources/07d47626-452c-4d25-93ee-63081d173d80 not found
|
|
INFO httpx2:_client.py:1090 HTTP Request: GET http://testserver/ui/sources/07d47626-452c-4d25-93ee-63081d173d80 "HTTP/1.1 404 Not Found"
|
|
_ TestSourcesPageRendering.test_source_delete_page_blocks_when_source_is_job_linked _
|
|
|
|
self = <test_sources_page.TestSourcesPageRendering object at 0x000001EC8D74D160>
|
|
app_client = (<fastapi.applications.FastAPI object at 0x000001EC8D704CE0>, <starlette.testclient.TestClient object at 0x000001EC8D7B5C70>)
|
|
seed_job = <function seed_job.<locals>._seed at 0x000001EC8F3893A0>
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_source_delete_page_blocks_when_source_is_job_linked(
|
|
self, app_client, seed_job
|
|
):
|
|
_, client = app_client
|
|
job_id = await seed_job(filename="linked-source.png", transcription_text="linked text")
|
|
|
|
async with session_scope() as session:
|
|
job = await session.get(Job, job_id)
|
|
assert job is not None
|
|
source = (
|
|
await session.exec(select(Source).where(Source.document_id == job.document_id))
|
|
).first()
|
|
assert source is not None
|
|
source_id = str(source.id)
|
|
|
|
response = client.get(f"/ui/sources/{source_id}/delete")
|
|
|
|
> assert response.status_code == 200
|
|
E assert 404 == 200
|
|
E + where 404 = <Response [404 Not Found]>.status_code
|
|
|
|
tests\ui\test_sources_page.py:223: AssertionError
|
|
---------------------------- Captured stdout call -----------------------------
|
|
2026-08-05 18:31:14 WARNING | http://testserver/ui/sources/2ddbd90f-bd65-4e28-b297-4d3288e8ba71/delete not found
|
|
2026-08-05 18:31:14 INFO | HTTP Request: GET http://testserver/ui/sources/2ddbd90f-bd65-4e28-b297-4d3288e8ba71/delete "HTTP/1.1 404 Not Found"
|
|
------------------------------ Captured log call ------------------------------
|
|
WARNING nicegui:nicegui.py:180 http://testserver/ui/sources/2ddbd90f-bd65-4e28-b297-4d3288e8ba71/delete not found
|
|
INFO httpx2:_client.py:1090 HTTP Request: GET http://testserver/ui/sources/2ddbd90f-bd65-4e28-b297-4d3288e8ba71/delete "HTTP/1.1 404 Not Found"
|
|
___ TestSourcesPageRendering.test_source_delete_page_allows_unlinked_source ___
|
|
|
|
self = <test_sources_page.TestSourcesPageRendering object at 0x000001EC8D74D520>
|
|
app_client = (<fastapi.applications.FastAPI object at 0x000001EC8D704CE0>, <starlette.testclient.TestClient object at 0x000001EC8D7B5C70>)
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_source_delete_page_allows_unlinked_source(self, app_client):
|
|
_, client = app_client
|
|
|
|
async with session_scope() as session:
|
|
document = Document(name="Unlinked Source Doc", document_type="memo")
|
|
session.add(document)
|
|
await session.flush()
|
|
source = Source(
|
|
document_id=document.id,
|
|
page_number=1,
|
|
upload_name="orphan-source.png",
|
|
filename="orphan-source.png",
|
|
file_path="/tmp/orphan-source.png",
|
|
)
|
|
session.add(source)
|
|
await session.commit()
|
|
source_id = str(source.id)
|
|
|
|
response = client.get(f"/ui/sources/{source_id}/delete")
|
|
|
|
> assert response.status_code == 200
|
|
E assert 404 == 200
|
|
E + where 404 = <Response [404 Not Found]>.status_code
|
|
|
|
tests\ui\test_sources_page.py:248: AssertionError
|
|
---------------------------- Captured stdout call -----------------------------
|
|
2026-08-05 18:31:14 WARNING | http://testserver/ui/sources/06c535f3-7e98-4536-b138-d1730f931933/delete not found
|
|
2026-08-05 18:31:14 INFO | HTTP Request: GET http://testserver/ui/sources/06c535f3-7e98-4536-b138-d1730f931933/delete "HTTP/1.1 404 Not Found"
|
|
------------------------------ Captured log call ------------------------------
|
|
WARNING nicegui:nicegui.py:180 http://testserver/ui/sources/06c535f3-7e98-4536-b138-d1730f931933/delete not found
|
|
INFO httpx2:_client.py:1090 HTTP Request: GET http://testserver/ui/sources/06c535f3-7e98-4536-b138-d1730f931933/delete "HTTP/1.1 404 Not Found"
|
|
=========================== short test summary info ===========================
|
|
FAILED tests/ui/test_documents_page.py::TestDocumentsPageRendering::test_document_detail_page_renders_bento_grid_and_metadata
|
|
FAILED tests/ui/test_jobs_page.py::TestJobsPageRendering::test_job_detail_page_renders_logistics_and_links
|
|
FAILED tests/ui/test_navigation_and_mounts.py::TestNavigationAndMounts::test_registered_pages_render_successfully[/ui/sources]
|
|
FAILED tests/ui/test_pages_registration.py::TestPageRegistration::test_ui_mount_serves_registered_pages
|
|
FAILED tests/ui/test_sources_page.py::TestSourcesPageRendering::test_sources_page_renders_empty_state
|
|
FAILED tests/ui/test_sources_page.py::TestSourcesPageRendering::test_sources_page_lists_seeded_sources
|
|
FAILED tests/ui/test_sources_page.py::TestSourcesPageRendering::test_sources_page_filters_to_document_context
|
|
FAILED tests/ui/test_sources_page.py::TestSourcesPageRendering::test_sources_page_filters_to_job_context
|
|
FAILED tests/ui/test_sources_page.py::TestSourcesPageRendering::test_sources_page_job_context_shows_job_source_status_and_error_detail
|
|
FAILED tests/ui/test_sources_page.py::TestSourcesPageRendering::test_source_detail_page_renders_preview_and_revision_box
|
|
FAILED tests/ui/test_sources_page.py::TestSourcesPageRendering::test_source_delete_page_blocks_when_source_is_job_linked
|
|
FAILED tests/ui/test_sources_page.py::TestSourcesPageRendering::test_source_delete_page_allows_unlinked_source
|
|
======================== 12 failed, 40 passed in 3.81s ========================
|