Coverage for tests/served_page.py: 100%
32 statements
« prev ^ index » next coverage.py v7.15.3, created at 2026-08-03 00:00 +0000
« prev ^ index » next coverage.py v7.15.3, created at 2026-08-03 00:00 +0000
1import typing
3import fastapi
4from fastapi.testclient import TestClient as FastapiTestClient
5from litestar import Litestar
6from litestar.testing import TestClient as LitestarTestClient
8from archdocs import settings
9from archdocs.integrations import fastapi as fastapi_integration
10from archdocs.integrations import litestar as litestar_integration
11from archdocs.main import SettingsForArchdocs
14type PageRenderer = typing.Callable[[SettingsForArchdocs | None, str | None], str]
16GOOD_HTTP_CODE: typing.Final = 200
17CONTENT_TYPE_HTML: typing.Final = "text/html"
20def render_fastapi_page(arch_settings: SettingsForArchdocs | None, route_path: str | None, /) -> str:
21 fastapi_app: typing.Final = fastapi.FastAPI()
22 if route_path is None:
23 fastapi_integration.add_architecture_doc_routes(fastapi_app, arch_settings=arch_settings)
24 else:
25 fastapi_integration.add_architecture_doc_routes(
26 fastapi_app,
27 route_path=route_path,
28 arch_settings=arch_settings,
29 )
30 fastapi_response: typing.Final = FastapiTestClient(fastapi_app).get(route_path or settings.DEFAULT_PATH)
31 assert fastapi_response.status_code == GOOD_HTTP_CODE
32 assert CONTENT_TYPE_HTML in fastapi_response.headers["content-type"]
33 return fastapi_response.text
36def render_litestar_page(arch_settings: SettingsForArchdocs | None, route_path: str | None, /) -> str:
37 litestar_app: typing.Final = Litestar()
38 if route_path is None:
39 litestar_integration.add_architecture_doc_routes(litestar_app, arch_settings=arch_settings)
40 else:
41 litestar_integration.add_architecture_doc_routes(
42 litestar_app,
43 route_path=route_path,
44 arch_settings=arch_settings,
45 )
46 litestar_response: typing.Final = LitestarTestClient(litestar_app).get(route_path or settings.DEFAULT_PATH)
47 assert litestar_response.status_code == GOOD_HTTP_CODE
48 assert CONTENT_TYPE_HTML in litestar_response.headers["content-type"]
49 return litestar_response.text
52ALL_PAGE_RENDERERS: typing.Final[tuple[PageRenderer, ...]] = (render_fastapi_page, render_litestar_page)
53FRAMEWORK_IDS: typing.Final = ("fastapi", "litestar")