async def test_on_close_event(window: GameSessionWindow, mocker, dialog_response, is_member): # Setup execute_dialog = mocker.patch("randovania.gui.lib.async_dialog.warning", new_callable=AsyncMock, return_value=dialog_response) super_close_event = mocker.patch("PySide2.QtWidgets.QMainWindow.closeEvent") event = MagicMock() window._game_session = MagicMock() window._game_session.players = [window.network_client.current_user.id] if is_member else [] window.network_client.leave_game_session = AsyncMock() window.network_client.connection_state.is_disconnected = dialog_response == QMessageBox.Yes # Run await window._on_close_event(event) if is_member: execute_dialog.assert_awaited_once() else: execute_dialog.assert_not_awaited() if is_member and dialog_response == QMessageBox.Cancel: event.ignore.assert_called_once_with() super_close_event.assert_not_called() else: event.ignore.assert_not_called() super_close_event.assert_called_once_with(event) if is_member and dialog_response != QMessageBox.Cancel: window.network_client.leave_game_session.assert_awaited_once_with(dialog_response == QMessageBox.Yes) else: window.network_client.leave_game_session.assert_not_awaited()
async def test_on_game_session_actions_update(window: GameSessionWindow, default_echoes_preset): # Setup game_session = MagicMock() game_session.presets = [default_echoes_preset] window._game_session = game_session timestamp = datetime.datetime(year=2020, month=1, day=5) # Run await window.on_game_session_actions_update( GameSessionActions((GameSessionAction("A", 0, "B", "Bombs", PickupIndex(0), timestamp), ))) texts = [window.history_table_widget.item(0, i).text() for i in range(5)] assert texts == [ 'A', 'B', 'Bombs', 'Temple Grounds/Hive Chamber A/Pickup (Missile)', timestamp.strftime("%c") ]
async def test_on_close_event(window: GameSessionWindow, mocker, is_member): # Setup super_close_event = mocker.patch( "PySide6.QtWidgets.QMainWindow.closeEvent") event = MagicMock() window._game_session = MagicMock() window._game_session.players = [window.network_client.current_user.id ] if is_member else [] window.network_client.leave_game_session = AsyncMock() window.network_client.connection_state.is_disconnected = False # Run await window._on_close_event(event) event.ignore.assert_not_called() super_close_event.assert_called_once_with(event) if is_member: window.network_client.leave_game_session.assert_awaited_once_with( False) else: window.network_client.leave_game_session.assert_not_awaited()