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

1import importlib 1abcdefghi

2from datetime import datetime, timezone 1abcdefghi

3from types import ModuleType 1abcdefghi

4 

5import pytest 1abcdefghi

6from pydantic import ValidationError 1abcdefghi

7from sqlmodel import SQLModel 1abcdefghi

8 

9from ...conftest import PrintMock 1abcdefghi

10 

11 

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

20 

21 

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 ] 

27 

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 ] 

36 

37 table = SQLModel.metadata.tables["event"] 1jklmnopqr

38 assert table.c.created_at.type.timezone is False 1jklmnopqr