Coverage for tests/test_tutorial/test_automatic_id_none_refresh/test_tutorial001_tutorial002.py: 100%

44 statements  

« prev     ^ index     » next       coverage.py v7.9.2, created at 2025-07-15 09:31 +0000

1import importlib 1ghijkl

2from types import ModuleType 1ghijkl

3from typing import Any, Dict, List, Union 1ghijkl

4 

5import pytest 1ghijkl

6from sqlmodel import create_engine 1ghijkl

7 

8from tests.conftest import PrintMock, needs_py310 1ghijkl

9 

10 

11def check_calls(calls: List[List[Union[str, Dict[str, Any]]]]) -> None: 1ghijkl

12 assert calls[0] == ["Before interacting with the database"] 1abcdef

13 assert calls[1] == [ 1abcdef

14 "Hero 1:", 

15 { 

16 "id": None, 

17 "name": "Deadpond", 

18 "secret_name": "Dive Wilson", 

19 "age": None, 

20 }, 

21 ] 

22 assert calls[2] == [ 1abcdef

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] == [ 1abcdef

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"] 1abcdef

41 assert calls[5] == [ 1abcdef

42 "Hero 1:", 

43 { 

44 "id": None, 

45 "name": "Deadpond", 

46 "secret_name": "Dive Wilson", 

47 "age": None, 

48 }, 

49 ] 

50 assert calls[6] == [ 1abcdef

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] == [ 1abcdef

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"] 1abcdef

69 assert calls[9] == ["Hero 1:", {}] 1abcdef

70 assert calls[10] == ["Hero 2:", {}] 1abcdef

71 assert calls[11] == ["Hero 3:", {}] 1abcdef

72 assert calls[12] == ["After committing the session, show IDs"] 1abcdef

73 assert calls[13] == ["Hero 1 ID:", 1] 1abcdef

74 assert calls[14] == ["Hero 2 ID:", 2] 1abcdef

75 assert calls[15] == ["Hero 3 ID:", 3] 1abcdef

76 assert calls[16] == ["After committing the session, show names"] 1abcdef

77 assert calls[17] == ["Hero 1 name:", "Deadpond"] 1abcdef

78 assert calls[18] == ["Hero 2 name:", "Spider-Boy"] 1abcdef

79 assert calls[19] == ["Hero 3 name:", "Rusty-Man"] 1abcdef

80 assert calls[20] == ["After refreshing the heroes"] 1abcdef

81 assert calls[21] == [ 1abcdef

82 "Hero 1:", 

83 { 

84 "id": 1, 

85 "name": "Deadpond", 

86 "secret_name": "Dive Wilson", 

87 "age": None, 

88 }, 

89 ] 

90 assert calls[22] == [ 1abcdef

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] == [ 1abcdef

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"] 1abcdef

109 assert calls[21] == [ 1abcdef

110 "Hero 1:", 

111 { 

112 "id": 1, 

113 "name": "Deadpond", 

114 "secret_name": "Dive Wilson", 

115 "age": None, 

116 }, 

117 ] 

118 assert calls[22] == [ 1abcdef

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] == [ 1abcdef

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( 1ghijkl

139 name="module", 

140 params=[ 

141 "tutorial001", 

142 "tutorial002", 

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: 1ghijkl

148 module = importlib.import_module( 1ghijkl

149 f"docs_src.tutorial.automatic_id_none_refresh.{request.param}" 

150 ) 

151 module.sqlite_url = "sqlite://" 1ghijkl

152 module.engine = create_engine(module.sqlite_url) 1ghijkl

153 

154 return module 1ghijkl

155 

156 

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

158 module.main() 1abcdef

159 check_calls(print_mock.calls) 1abcdef