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

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 import settings 

9from archdocs.integrations import fastapi as fastapi_integration 

10from archdocs.integrations import litestar as litestar_integration 

11from archdocs.main import SettingsForArchdocs 

12 

13 

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

15 

16GOOD_HTTP_CODE: typing.Final = 200 

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

18 

19 

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 

34 

35 

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 

50 

51 

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

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