Coverage for tests/served_page.py: 100%

32 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-18 22:03 +0000

1import typing 

2 

3import fastapi 

4from fastapi.testclient import TestClient as FastapiTestClient 

5from litestar import Litestar 

6from litestar.testing import TestClient as LitestarTestClient 

7 

8from archdocs.integrations import fastapi as fastapi_integration 

9from archdocs.integrations import litestar as litestar_integration 

10from archdocs.main import SettingsForArchdocs 

11 

12 

13type PageRenderer = typing.Callable[[SettingsForArchdocs | None, str | None], str] 

14 

15GOOD_HTTP_CODE: typing.Final = 200 

16CONTENT_TYPE_HTML: typing.Final = "text/html" 

17# A literal, not `archdocs.settings.DEFAULT_PATH`: where the default route lives is part of the 

18# package's promise, and an expectation read from the code under test would prove nothing. 

19DEFAULT_ROUTE_PATH: typing.Final = "/docs/architecture/" 

20 

21 

22def render_fastapi_page(arch_settings: SettingsForArchdocs | None, route_path: str | None, /) -> str: 

23 fastapi_app: typing.Final = fastapi.FastAPI() 

24 if route_path is None: 

25 fastapi_integration.add_architecture_doc_routes(fastapi_app, arch_settings=arch_settings) 

26 else: 

27 fastapi_integration.add_architecture_doc_routes( 

28 fastapi_app, 

29 route_path=route_path, 

30 arch_settings=arch_settings, 

31 ) 

32 fastapi_response: typing.Final = FastapiTestClient(fastapi_app).get(route_path or DEFAULT_ROUTE_PATH) 

33 assert fastapi_response.status_code == GOOD_HTTP_CODE 

34 assert CONTENT_TYPE_HTML in fastapi_response.headers["content-type"] 

35 return fastapi_response.text 

36 

37 

38def render_litestar_page(arch_settings: SettingsForArchdocs | None, route_path: str | None, /) -> str: 

39 litestar_app: typing.Final = Litestar() 

40 if route_path is None: 

41 litestar_integration.add_architecture_doc_routes(litestar_app, arch_settings=arch_settings) 

42 else: 

43 litestar_integration.add_architecture_doc_routes( 

44 litestar_app, 

45 route_path=route_path, 

46 arch_settings=arch_settings, 

47 ) 

48 litestar_response: typing.Final = LitestarTestClient(litestar_app).get(route_path or DEFAULT_ROUTE_PATH) 

49 assert litestar_response.status_code == GOOD_HTTP_CODE 

50 assert CONTENT_TYPE_HTML in litestar_response.headers["content-type"] 

51 return litestar_response.text 

52 

53 

54ALL_PAGE_RENDERERS: typing.Final[tuple[PageRenderer, ...]] = (render_fastapi_page, render_litestar_page) 

55FRAMEWORK_IDS: typing.Final = ("fastapi", "litestar")