import os import pytest from starlette.applications import Starlette from starlette.routing import Route from starlette.templating import Jinja2Templates def test_templates(tmpdir, test_client_factory): path = os.path.join(tmpdir, "index.html") with open(path, "w") as file: file.write("Hello, world") async def homepage(request): return templates.TemplateResponse("index.html", {"request": request}) app = Starlette( debug=True, routes=[Route("/", endpoint=homepage)], ) templates = Jinja2Templates(directory=str(tmpdir)) client = test_client_factory(app) response = client.get("/") assert response.text == "Hello, world" assert response.template.name == "index.html" assert set(response.context.keys()) == {"request"} def test_template_response_requires_request(tmpdir): templates = Jinja2Templates(str(tmpdir)) with pytest.raises(ValueError): templates.TemplateResponse("", {})