Coverage for tests / test_tutorial / test_relationship_attributes / test_delete_records_relationship / test_tutorial004.py: 100%
26 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-06-10 09:40 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-06-10 09:40 +0000
1import importlib 1abcdefgh
2from types import ModuleType 1abcdefgh
4import pytest 1abcdefgh
5from sqlalchemy.exc import IntegrityError 1abcdefgh
6from sqlmodel import Session, create_engine, select 1abcdefgh
8from ....conftest import PrintMock 1abcdefgh
11@pytest.fixture( 1abcdefgh
12 name="mod",
13 params=[
14 pytest.param("tutorial004_py310"),
15 ],
16)
17def get_module(request: pytest.FixtureRequest) -> ModuleType: 1abcdefgh
18 mod = importlib.import_module( 1abcdefgh
19 f"docs_src.tutorial.relationship_attributes.cascade_delete_relationships.{request.param}"
20 )
21 mod.sqlite_url = "sqlite://" 1abcdefgh
22 mod.engine = create_engine(mod.sqlite_url) 1abcdefgh
23 return mod 1abcdefgh
26def test_tutorial(print_mock: PrintMock, mod: ModuleType): 1abcdefgh
27 mod.create_db_and_tables() 1ijklmnop
28 mod.create_heroes() 1ijklmnop
29 mod.select_deleted_heroes() 1ijklmnop
30 with Session(mod.engine) as session: 1ijklmnop
31 team = session.exec(select(mod.Team).where(mod.Team.name == "Wakaland")).one() 1ijklmnop
32 team.heroes.clear() 1ijklmnop
33 session.add(team) 1ijklmnop
34 session.commit() 1ijklmnop
35 mod.delete_team() 1ijklmnop
36 assert print_mock.calls == [ 1ijklmnop
37 [
38 "Created hero:",
39 {
40 "age": None,
41 "id": 1,
42 "name": "Deadpond",
43 "secret_name": "Dive Wilson",
44 "team_id": 1,
45 },
46 ],
47 [
48 "Created hero:",
49 {
50 "age": 48,
51 "id": 2,
52 "name": "Rusty-Man",
53 "secret_name": "Tommy Sharp",
54 "team_id": 2,
55 },
56 ],
57 [
58 "Created hero:",
59 {
60 "age": None,
61 "id": 3,
62 "name": "Spider-Boy",
63 "secret_name": "Pedro Parqueador",
64 "team_id": None,
65 },
66 ],
67 [
68 "Updated hero:",
69 {
70 "age": None,
71 "id": 3,
72 "name": "Spider-Boy",
73 "secret_name": "Pedro Parqueador",
74 "team_id": 2,
75 },
76 ],
77 [
78 "Team Wakaland:",
79 {"headquarters": "Wakaland Capital City", "id": 3, "name": "Wakaland"},
80 ],
81 [
82 "Black Lion has no team:",
83 {
84 "age": 35,
85 "id": 4,
86 "name": "Black Lion",
87 "secret_name": "Trevor Challa",
88 "team_id": 3,
89 },
90 ],
91 [
92 "Princess Sure-E has no team:",
93 {
94 "age": None,
95 "id": 5,
96 "name": "Princess Sure-E",
97 "secret_name": "Sure-E",
98 "team_id": 3,
99 },
100 ],
101 [
102 "Deleted team:",
103 {"headquarters": "Wakaland Capital City", "id": 3, "name": "Wakaland"},
104 ],
105 ]
107 with pytest.raises(IntegrityError) as exc: 1ijklmnop
108 mod.main() 1ijklmnop
109 assert "FOREIGN KEY constraint failed" in str(exc.value) 1ijklmnop