55and camera state management functionality.
66"""
77
8- from unittest .mock import MagicMock , Mock
8+ from unittest .mock import Mock
99
1010import pytest
1111from PySide6 .QtCore import QPointF , Qt
@@ -37,7 +37,7 @@ def event_window(qt_app):
3737 return window
3838
3939
40- def test_setup_event_handling_default_values (event_window ):
40+ def test_setup_event_handling_default_values (qt_app , event_window ):
4141 """Test setup_event_handling with default parameters"""
4242 assert event_window .rotate is False
4343 assert event_window .translate is False
@@ -74,7 +74,7 @@ def test_setup_event_handling_custom_values(qt_app):
7474 assert window .ZOOM == pytest .approx (0.2 )
7575
7676
77- def test_reset_camera (event_window ):
77+ def test_reset_camera (qt_app , event_window ):
7878 """Test camera reset functionality"""
7979 # Set some non-zero values
8080 event_window .spin_x_face = 45
@@ -92,7 +92,7 @@ def test_reset_camera(event_window):
9292 assert event_window .model_position .z == pytest .approx (0 )
9393
9494
95- def test_key_press_event_escape (event_window ):
95+ def test_key_press_event_escape (qt_app , event_window ):
9696 """Test escape key closes the application"""
9797 # Create mock key event
9898 event = Mock ()
@@ -104,12 +104,12 @@ def test_key_press_event_escape(event_window):
104104 assert event_window .update_called is True
105105
106106
107- def test_key_press_event_wireframe_mode (event_window , monkeypatch ):
107+ def test_key_press_event_wireframe_mode (qt_app , event_window , monkeypatch ):
108108 """Test W key switches to wireframe mode"""
109109 event = Mock ()
110110 event .key .return_value = Qt .Key_W
111111
112- mock_gl_polygon_mode = MagicMock ()
112+ mock_gl_polygon_mode = Mock ()
113113 # Use fixture-provided monkeypatch to set attribute (non-raising to avoid import issues)
114114 monkeypatch .setattr ("OpenGL.GL.glPolygonMode" , mock_gl_polygon_mode , raising = False )
115115
@@ -119,12 +119,12 @@ def test_key_press_event_wireframe_mode(event_window, monkeypatch):
119119 assert event_window .update_called is True
120120
121121
122- def test_key_press_event_solid_mode (event_window , monkeypatch ):
122+ def test_key_press_event_solid_mode (qt_app , event_window , monkeypatch ):
123123 """Test S key switches to solid fill mode"""
124124 event = Mock ()
125125 event .key .return_value = Qt .Key_S
126126
127- mock_gl_polygon_mode = MagicMock ()
127+ mock_gl_polygon_mode = Mock ()
128128 monkeypatch .setattr ("OpenGL.GL.glPolygonMode" , mock_gl_polygon_mode , raising = False )
129129
130130 event_window .keyPressEvent (event )
@@ -133,7 +133,7 @@ def test_key_press_event_solid_mode(event_window, monkeypatch):
133133 assert event_window .update_called is True
134134
135135
136- def test_key_press_event_space_reset (event_window ):
136+ def test_key_press_event_space_reset (qt_app , event_window ):
137137 """Test space key resets camera"""
138138 # Set some values first
139139 event_window .spin_x_face = 45
@@ -151,7 +151,7 @@ def test_key_press_event_space_reset(event_window):
151151 assert event_window .update_called is True
152152
153153
154- def test_key_press_event_other_key (event_window , monkeypatch ):
154+ def test_key_press_event_other_key (qt_app , event_window , monkeypatch ):
155155 """Test other keys call parent keyPressEvent"""
156156 event = Mock ()
157157 event .key .return_value = Qt .Key_A
@@ -165,7 +165,7 @@ def test_key_press_event_other_key(event_window, monkeypatch):
165165 mock_parent .keyPressEvent .assert_called_once_with (event )
166166
167167
168- def test_mouse_press_event_left_button (event_window ):
168+ def test_mouse_press_event_left_button (qt_app , event_window ):
169169 """Test left mouse button press starts rotation"""
170170 event = Mock ()
171171 event .button .return_value = Qt .LeftButton
@@ -178,7 +178,7 @@ def test_mouse_press_event_left_button(event_window):
178178 assert event_window .original_y_rotation == 200
179179
180180
181- def test_mouse_press_event_right_button (event_window ):
181+ def test_mouse_press_event_right_button (qt_app , event_window ):
182182 """Test right mouse button press starts translation"""
183183 event = Mock ()
184184 event .button .return_value = Qt .RightButton
@@ -191,7 +191,7 @@ def test_mouse_press_event_right_button(event_window):
191191 assert event_window .original_y_pos == 250
192192
193193
194- def test_mouse_release_event_left_button (event_window ):
194+ def test_mouse_release_event_left_button (qt_app , event_window ):
195195 """Test left mouse button release stops rotation"""
196196 event_window .rotate = True
197197
@@ -203,7 +203,7 @@ def test_mouse_release_event_left_button(event_window):
203203 assert event_window .rotate is False
204204
205205
206- def test_mouse_release_event_right_button (event_window ):
206+ def test_mouse_release_event_right_button (qt_app , event_window ):
207207 """Test right mouse button release stops translation"""
208208 event_window .translate = True
209209
@@ -215,7 +215,7 @@ def test_mouse_release_event_right_button(event_window):
215215 assert event_window .translate is False
216216
217217
218- def test_mouse_move_event_rotation (event_window ):
218+ def test_mouse_move_event_rotation (qt_app , event_window ):
219219 """Test mouse movement during rotation"""
220220 # Setup rotation state
221221 event_window .rotate = True
@@ -237,7 +237,7 @@ def test_mouse_move_event_rotation(event_window):
237237 assert event_window .update_called is True
238238
239239
240- def test_mouse_move_event_translation (event_window ):
240+ def test_mouse_move_event_translation (qt_app , event_window ):
241241 """Test mouse movement during translation"""
242242 # Setup translation state
243243 event_window .translate = True
@@ -259,7 +259,7 @@ def test_mouse_move_event_translation(event_window):
259259 assert event_window .update_called is True
260260
261261
262- def test_mouse_move_event_no_action (event_window ):
262+ def test_mouse_move_event_no_action (qt_app , event_window ):
263263 """Test mouse movement when no buttons active"""
264264 event_window .rotate = False
265265 event_window .translate = False
@@ -273,7 +273,7 @@ def test_mouse_move_event_no_action(event_window):
273273 assert event_window .update_called is False
274274
275275
276- def test_wheel_event_positive_delta (event_window ):
276+ def test_wheel_event_positive_delta (qt_app , event_window ):
277277 """Test mouse wheel scroll up (zoom in)"""
278278 event_window .zoom_sensitivity = 0.5
279279 initial_z = event_window .model_position .z
@@ -290,7 +290,7 @@ def test_wheel_event_positive_delta(event_window):
290290 assert event_window .update_called is True
291291
292292
293- def test_wheel_event_negative_delta (event_window ):
293+ def test_wheel_event_negative_delta (qt_app , event_window ):
294294 """Test mouse wheel scroll down (zoom out)"""
295295 event_window .zoom_sensitivity = 0.5
296296 initial_z = event_window .model_position .z
@@ -307,7 +307,7 @@ def test_wheel_event_negative_delta(event_window):
307307 assert event_window .update_called is True
308308
309309
310- def test_wheel_event_x_axis_delta (event_window ):
310+ def test_wheel_event_x_axis_delta (qt_app , event_window ):
311311 """Test mouse wheel using x-axis delta (horizontal scroll)"""
312312 event_window .zoom_sensitivity = 0.3
313313 initial_z = event_window .model_position .z
@@ -324,7 +324,7 @@ def test_wheel_event_x_axis_delta(event_window):
324324 assert event_window .update_called is True
325325
326326
327- def test_wheel_event_zero_delta (event_window ):
327+ def test_wheel_event_zero_delta (qt_app , event_window ):
328328 """Test mouse wheel with zero delta"""
329329 initial_z = event_window .model_position .z
330330
@@ -405,7 +405,7 @@ def test_event_handling_target_protocol(qt_app):
405405 assert callable (window .close )
406406
407407
408- def test_mouse_move_event_rotation_without_left_button (event_window ):
408+ def test_mouse_move_event_rotation_without_left_button (qt_app , event_window ):
409409 """Test mouse movement during rotation mode but without left button pressed"""
410410 # Setup rotation state
411411 event_window .rotate = True
@@ -424,7 +424,7 @@ def test_mouse_move_event_rotation_without_left_button(event_window):
424424 assert event_window .update_called is False
425425
426426
427- def test_mouse_move_event_translation_without_right_button (event_window ):
427+ def test_mouse_move_event_translation_without_right_button (qt_app , event_window ):
428428 """Test mouse movement during translation mode but without right button pressed"""
429429 # Setup translation state
430430 event_window .translate = True
@@ -443,7 +443,7 @@ def test_mouse_move_event_translation_without_right_button(event_window):
443443 assert event_window .update_called is False
444444
445445
446- def test_mouse_press_event_middle_button (event_window ):
446+ def test_mouse_press_event_middle_button (qt_app , event_window ):
447447 """Test middle mouse button press (should be ignored)"""
448448 event = Mock ()
449449 event .button .return_value = Qt .MiddleButton
@@ -456,7 +456,7 @@ def test_mouse_press_event_middle_button(event_window):
456456 assert event_window .translate is False
457457
458458
459- def test_mouse_release_event_middle_button (event_window ):
459+ def test_mouse_release_event_middle_button (qt_app , event_window ):
460460 """Test middle mouse button release (should be ignored)"""
461461 event_window .rotate = True
462462 event_window .translate = True
@@ -471,7 +471,7 @@ def test_mouse_release_event_middle_button(event_window):
471471 assert event_window .translate is True
472472
473473
474- def test_setup_event_handling_with_none_position ():
474+ def test_setup_event_handling_with_none_position (qt_app ):
475475 """Test setup_event_handling with None initial position"""
476476 window = MockEventHandlingWindow ()
477477 window .setup_event_handling (initial_position = None )
@@ -481,7 +481,7 @@ def test_setup_event_handling_with_none_position():
481481 assert window .model_position .z == 0
482482
483483
484- def test_wheel_event_priority_y_over_x (event_window ):
484+ def test_wheel_event_priority_y_over_x (qt_app , event_window ):
485485 """Test that y delta takes priority over x delta when both are non-zero"""
486486 event_window .zoom_sensitivity = 0.5
487487 initial_z = event_window .model_position .z
0 commit comments