from lobby_widget import LobbyWidget from PyQt6.QtCore import Qt def test_session_selection_uses_existing_join_flow(qtbot): lobby = LobbyWidget() qtbot.addWidget(lobby) assert lobby.listed_checkbox.isChecked() rooms = [{"code": "ABC123", "fileInfo": {"name": "movie.mkv"}, "users": ["Host"], "playing": True, "position": 75}] lobby.update_sessions(rooms) lobby.sessions_list.setCurrentRow(0) assert not lobby.session_join_btn.isEnabled() lobby.username_input.setText("Alex") assert lobby.session_join_btn.isEnabled() with qtbot.waitSignal(lobby.join_requested) as signal: lobby.join_selected_session() assert signal.args == ["Alex", "ABC123"] lobby.reset_ui() lobby.update_sessions(rooms) assert lobby.sessions_list.currentItem().data(256) == "ABC123" lobby.update_sessions([]) assert not lobby.session_join_btn.isEnabled() assert "No active sessions" in lobby.sessions_status.text() def test_workspace_dialogs_and_connection_lock(qtbot, tmp_path): lobby = LobbyWidget() qtbot.addWidget(lobby) lobby.show() assert not lobby.create_action_btn.isEnabled() lobby.username_input.setText("Alex") qtbot.mouseClick(lobby.create_action_btn, Qt.MouseButton.LeftButton) assert lobby.create_dialog.isVisible() assert not lobby.create_room_btn.isEnabled() video = tmp_path / "movie.mkv" video.write_bytes(b"local video") lobby._set_local_file(str(video)) lobby.listed_checkbox.setChecked(False) with qtbot.waitSignal(lobby.create_requested) as signal: qtbot.mouseClick(lobby.create_room_btn, Qt.MouseButton.LeftButton) assert signal.args == ["Alex", str(video), "movie.mkv", 11] assert not lobby.create_dialog.isVisible() assert not lobby.create_action_btn.isEnabled() assert not lobby.join_action_btn.isEnabled() lobby.reset_ui() qtbot.mouseClick(lobby.join_action_btn, Qt.MouseButton.LeftButton) lobby.room_code_input.setText("abc123") with qtbot.waitSignal(lobby.join_requested) as signal: qtbot.keyClick(lobby.room_code_input, Qt.Key.Key_Return) assert signal.args == ["Alex", "ABC123"] assert not lobby.join_dialog.isVisible()