from unittest.mock import Mock from PyQt6.QtCore import QSettings import room_widget from main import VlcSyncApp from test_chat import PlayerSignals def test_preferences_survive_restart(qtbot, monkeypatch, tmp_path): monkeypatch.setattr(VlcSyncApp, "refresh_sessions", lambda self: None) monkeypatch.setattr(room_widget, "VLCSyncPlayer", lambda frame: Mock(signals=PlayerSignals())) path = str(tmp_path / "preferences.ini") settings = QSettings(path, QSettings.Format.IniFormat) first = VlcSyncApp(settings) qtbot.addWidget(first) first.show() first.lobby_widget.username_input.setText("Alex") first.room_widget.volume_slider.setValue(37) first._remember_media_folder(str(tmp_path / "movie.mkv")) first.room_widget.chat_container.hide() first.room_widget.tags_list.hide() first.resize(900, 650) first.close() second = VlcSyncApp(QSettings(path, QSettings.Format.IniFormat)) qtbot.addWidget(second) assert second.lobby_widget.username_input.text() == "Alex" assert second.room_widget.volume_slider.value() == 37 assert second.lobby_widget.media_folder == str(tmp_path) assert second.room_widget.chat_container.isHidden() assert second.room_widget.tags_list.isHidden() assert second.size() == first.size() assert second.sync_client.url == "wss://video-sync.peterstockings.com/ws" def test_missing_folder_and_volume_bounds(qtbot, monkeypatch, tmp_path): monkeypatch.setattr(VlcSyncApp, "refresh_sessions", lambda self: None) monkeypatch.setattr(room_widget, "VLCSyncPlayer", lambda frame: Mock(signals=PlayerSignals())) settings = QSettings(str(tmp_path / "preferences.ini"), QSettings.Format.IniFormat) settings.setValue("media_folder", str(tmp_path / "missing")) settings.setValue("volume", 200) window = VlcSyncApp(settings) qtbot.addWidget(window) assert window.lobby_widget.media_folder == "" assert window.room_widget.volume_slider.value() == 100