Coverage for tests / test_tutorial / test_automatic_id_none_refresh / test_tutorial001_tutorial002.py: 100%
44 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-01-06 21:09 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-01-06 21:09 +0000
1import importlib 1jklmnopqr
2from types import ModuleType 1jklmnopqr
3from typing import Any, Union 1jklmnopqr
5import pytest 1jklmnopqr
6from sqlmodel import create_engine 1jklmnopqr
8from tests.conftest import PrintMock, needs_py310 1jklmnopqr
11def check_calls(calls: list[list[Union[str, dict[str, Any]]]]) -> None: 1jklmnopqr
12 assert calls[0] == ["Before interacting with the database"] 1abcdefghi
13 assert calls[1] == [ 1abcdefghi
14 "Hero 1:",
15 {
16 "id": None,
17 "name": "Deadpond",
18 "secret_name": "Dive Wilson",
19 "age": None,
20 },
21 ]
22 assert calls[2] == [ 1abcdefghi
23 "Hero 2:",
24 {
25 "id": None,
26 "name": "Spider-Boy",
27 "secret_name": "Pedro Parqueador",
28 "age": None,
29 },
30 ]
31 assert calls[3] == [ 1abcdefghi
32 "Hero 3:",
33 {
34 "id": None,
35 "name": "Rusty-Man",
36 "secret_name": "Tommy Sharp",
37 "age": 48,
38 },
39 ]
40 assert calls[4] == ["After adding to the session"] 1abcdefghi
41 assert calls[5] == [ 1abcdefghi
42 "Hero 1:",
43 {
44 "id": None,
45 "name": "Deadpond",
46 "secret_name": "Dive Wilson",
47 "age": None,
48 },
49 ]
50 assert calls[6] == [ 1abcdefghi
51 "Hero 2:",
52 {
53 "id": None,
54 "name": "Spider-Boy",
55 "secret_name": "Pedro Parqueador",
56 "age": None,
57 },
58 ]
59 assert calls[7] == [ 1abcdefghi
60 "Hero 3:",
61 {
62 "id": None,
63 "name": "Rusty-Man",
64 "secret_name": "Tommy Sharp",
65 "age": 48,
66 },
67 ]
68 assert calls[8] == ["After committing the session"] 1abcdefghi
69 assert calls[9] == ["Hero 1:", {}] 1abcdefghi
70 assert calls[10] == ["Hero 2:", {}] 1abcdefghi
71 assert calls[11] == ["Hero 3:", {}] 1abcdefghi
72 assert calls[12] == ["After committing the session, show IDs"] 1abcdefghi
73 assert calls[13] == ["Hero 1 ID:", 1] 1abcdefghi
74 assert calls[14] == ["Hero 2 ID:", 2] 1abcdefghi
75 assert calls[15] == ["Hero 3 ID:", 3] 1abcdefghi
76 assert calls[16] == ["After committing the session, show names"] 1abcdefghi
77 assert calls[17] == ["Hero 1 name:", "Deadpond"] 1abcdefghi
78 assert calls[18] == ["Hero 2 name:", "Spider-Boy"] 1abcdefghi
79 assert calls[19] == ["Hero 3 name:", "Rusty-Man"] 1abcdefghi
80 assert calls[20] == ["After refreshing the heroes"] 1abcdefghi
81 assert calls[21] == [ 1abcdefghi
82 "Hero 1:",
83 {
84 "id": 1,
85 "name": "Deadpond",
86 "secret_name": "Dive Wilson",
87 "age": None,
88 },
89 ]
90 assert calls[22] == [ 1abcdefghi
91 "Hero 2:",
92 {
93 "id": 2,
94 "name": "Spider-Boy",
95 "secret_name": "Pedro Parqueador",
96 "age": None,
97 },
98 ]
99 assert calls[23] == [ 1abcdefghi
100 "Hero 3:",
101 {
102 "id": 3,
103 "name": "Rusty-Man",
104 "secret_name": "Tommy Sharp",
105 "age": 48,
106 },
107 ]
108 assert calls[24] == ["After the session closes"] 1abcdefghi
109 assert calls[21] == [ 1abcdefghi
110 "Hero 1:",
111 {
112 "id": 1,
113 "name": "Deadpond",
114 "secret_name": "Dive Wilson",
115 "age": None,
116 },
117 ]
118 assert calls[22] == [ 1abcdefghi
119 "Hero 2:",
120 {
121 "id": 2,
122 "name": "Spider-Boy",
123 "secret_name": "Pedro Parqueador",
124 "age": None,
125 },
126 ]
127 assert calls[23] == [ 1abcdefghi
128 "Hero 3:",
129 {
130 "id": 3,
131 "name": "Rusty-Man",
132 "secret_name": "Tommy Sharp",
133 "age": 48,
134 },
135 ]
138@pytest.fixture( 1jklmnopqr
139 name="module",
140 params=[
141 "tutorial001_py39",
142 "tutorial002_py39",
143 pytest.param("tutorial001_py310", marks=needs_py310),
144 pytest.param("tutorial002_py310", marks=needs_py310),
145 ],
146)
147def get_module(request: pytest.FixtureRequest) -> ModuleType: 1jklmnopqr
148 module = importlib.import_module( 1jklmnopqr
149 f"docs_src.tutorial.automatic_id_none_refresh.{request.param}"
150 )
151 module.sqlite_url = "sqlite://" 1jklmnopqr
152 module.engine = create_engine(module.sqlite_url) 1jklmnopqr
154 return module 1jklmnopqr
157def test_tutorial_001_tutorial_002(print_mock: PrintMock, module: ModuleType) -> None: 1jklmnopqr
158 module.main() 1abcdefghi
159 check_calls(print_mock.calls) 1abcdefghi