34 lines
769 B
Python
34 lines
769 B
Python
from contextlib import asynccontextmanager
|
|
from unittest.mock import Mock, patch
|
|
|
|
import pytest
|
|
from fastapi import FastAPI
|
|
|
|
from app.main import app_factory, lifespan, main
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_lifespan() -> None:
|
|
app = FastAPI()
|
|
assert isinstance(lifespan, asynccontextmanager(lifespan).__class__) # type: ignore[arg-type]
|
|
|
|
async with lifespan(app):
|
|
pass
|
|
|
|
|
|
def test_app_factory() -> None:
|
|
app = app_factory()
|
|
assert isinstance(app, FastAPI)
|
|
assert app.router.lifespan_context == lifespan
|
|
|
|
|
|
@patch("app.main.uvicorn.run")
|
|
def test_main(mock_uvicorn_run: Mock) -> None:
|
|
main()
|
|
mock_uvicorn_run.assert_called_once_with(
|
|
app_factory,
|
|
factory=True,
|
|
host="0.0.0.0",
|
|
port=8000,
|
|
)
|