Coverage for tests / test_advanced / test_datetime / test_tutorial005.py: 100%
19 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-11-09 00:02 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-11-09 00:02 +0000
1import importlib 1abcdefghi
2from datetime import datetime, timezone 1abcdefghi
3from types import ModuleType 1abcdefghi
5import pytest 1abcdefghi
6from pydantic import ValidationError 1abcdefghi
7from sqlmodel import SQLModel 1abcdefghi
9from ...conftest import PrintMock 1abcdefghi
12@pytest.fixture( 1abcdefghi
13 name="mod",
14 params=[
15 pytest.param("tutorial005_py310"),
16 ],
17)
18def get_module(request: pytest.FixtureRequest) -> ModuleType: 1abcdefghi
19 return importlib.import_module(f"docs_src.advanced.datetime.{request.param}") 1abcdefghi
22def test_tutorial(print_mock: PrintMock, mod: ModuleType) -> None: 1abcdefghi
23 mod.main() 1jklmnopqr
24 assert print_mock.calls == [ 1jklmnopqr
25 ["Event:", {"id": None, "created_at": datetime(2026, 1, 1, 12)}]
26 ]
28 with pytest.raises(ValidationError) as exc_info: 1jklmnopqr
29 mod.Event.model_validate( 1jklmnopqr
30 {"created_at": datetime(2026, 1, 1, 12, tzinfo=timezone.utc)}
31 )
32 errors = exc_info.value.errors() 1jklmnopqr
33 assert [(error["loc"], error["type"]) for error in errors] == [ 1jklmnopqr
34 (("created_at",), "timezone_naive"),
35 ]
37 table = SQLModel.metadata.tables["event"] 1jklmnopqr
38 assert table.c.created_at.type.timezone is False 1jklmnopqr