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

1import importlib 1jklmnopqr

2from types import ModuleType 1jklmnopqr

3from typing import Any, Union 1jklmnopqr

4 

5import pytest 1jklmnopqr

6from sqlmodel import create_engine 1jklmnopqr

7 

8from tests.conftest import PrintMock, needs_py310 1jklmnopqr

9 

10 

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 ] 

136 

137 

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

153 

154 return module 1jklmnopqr

155 

156 

157def test_tutorial_001_tutorial_002(print_mock: PrintMock, module: ModuleType) -> None: 1jklmnopqr

158 module.main() 1abcdefghi

159 check_calls(print_mock.calls) 1abcdefghi