|
10 | 10 | from toga.constants import WindowState
|
11 | 11 | from toga.style.pack import Pack
|
12 | 12 |
|
| 13 | +from ..assertions import assert_window_on_hide, assert_window_on_show |
13 | 14 | from ..widgets.probe import get_probe
|
14 | 15 | from ..window.test_window import window_probe
|
15 | 16 |
|
@@ -174,6 +175,73 @@ async def test_menu_minimize(app, app_probe):
|
174 | 175 | assert window1_probe.is_minimized
|
175 | 176 |
|
176 | 177 |
|
| 178 | +async def test_app_level_menu_hide(app, app_probe, main_window, main_window_probe): |
| 179 | + """The app can be hidden from the global app menu option, thereby hiding all |
| 180 | + the windows of the app.""" |
| 181 | + initially_visible_window = toga.Window( |
| 182 | + title="Initially Visible Window", |
| 183 | + size=(200, 200), |
| 184 | + content=toga.Box(style=Pack(background_color=CORNFLOWERBLUE)), |
| 185 | + ) |
| 186 | + initially_visible_window.show() |
| 187 | + |
| 188 | + initially_hidden_window = toga.Window( |
| 189 | + title="Initially Hidden Window", |
| 190 | + size=(200, 200), |
| 191 | + content=toga.Box(style=Pack(background_color=REBECCAPURPLE)), |
| 192 | + ) |
| 193 | + initially_hidden_window.hide() |
| 194 | + |
| 195 | + initially_minimized_window = toga.Window( |
| 196 | + title="Initially Minimized Window", |
| 197 | + size=(200, 200), |
| 198 | + content=toga.Box(style=Pack(background_color=GOLDENROD)), |
| 199 | + ) |
| 200 | + initially_minimized_window.show() |
| 201 | + initially_minimized_window.state = WindowState.MINIMIZED |
| 202 | + |
| 203 | + await window_probe(app, initially_minimized_window).wait_for_window( |
| 204 | + "Test windows have been setup", state=WindowState.MINIMIZED |
| 205 | + ) |
| 206 | + |
| 207 | + # Setup event mocks after test windows' setup to prevent false positive triggering. |
| 208 | + initially_visible_window.on_show = Mock() |
| 209 | + initially_visible_window.on_hide = Mock() |
| 210 | + |
| 211 | + initially_hidden_window.on_show = Mock() |
| 212 | + initially_hidden_window.on_hide = Mock() |
| 213 | + |
| 214 | + initially_minimized_window.on_show = Mock() |
| 215 | + initially_minimized_window.on_hide = Mock() |
| 216 | + |
| 217 | + # Confirm the initial window state |
| 218 | + assert initially_visible_window.visible |
| 219 | + assert not initially_hidden_window.visible |
| 220 | + assert initially_minimized_window.visible |
| 221 | + |
| 222 | + # Test using the "Hide" option from the global app menu. |
| 223 | + app_probe.activate_menu_hide() |
| 224 | + await main_window_probe.wait_for_window("Hide selected from menu, and accepted") |
| 225 | + assert not initially_visible_window.visible |
| 226 | + assert not initially_hidden_window.visible |
| 227 | + assert not initially_minimized_window.visible |
| 228 | + |
| 229 | + assert_window_on_hide(initially_visible_window) |
| 230 | + assert_window_on_hide(initially_hidden_window, trigger_expected=False) |
| 231 | + assert_window_on_hide(initially_minimized_window, trigger_expected=False) |
| 232 | + |
| 233 | + # Make the app visible again |
| 234 | + app_probe.unhide() |
| 235 | + await main_window_probe.wait_for_window("App level unhide has been activated") |
| 236 | + assert initially_visible_window.visible |
| 237 | + assert not initially_hidden_window.visible |
| 238 | + assert initially_minimized_window.visible |
| 239 | + |
| 240 | + assert_window_on_show(initially_visible_window) |
| 241 | + assert_window_on_show(initially_hidden_window, trigger_expected=False) |
| 242 | + assert_window_on_show(initially_minimized_window, trigger_expected=False) |
| 243 | + |
| 244 | + |
177 | 245 | async def test_presentation_mode(app, app_probe, main_window, main_window_probe):
|
178 | 246 | """The app can enter presentation mode."""
|
179 | 247 | bg_colors = (CORNFLOWERBLUE, FIREBRICK, REBECCAPURPLE, GOLDENROD)
|
|
0 commit comments