import os os.environ['QT_QPA_PLATFORM'] = 'offscreen' from unittest import mock from PySide6.QtWidgets import QApplication, QWidget import wechat_gui_qt as gui app = QApplication([]) class Host(QWidget): def __init__(self): super().__init__() self._wechat_db_state = {} self._refresh_wechat_database = mock.Mock() host = Host() bridge = gui.ConsoleBridge(host) bridge.acquireWeChatDatabaseKeys() host._refresh_wechat_database.assert_called_once_with(refresh_cache=True, acquire_keys=True) host._refresh_wechat_database.reset_mock() host._wechat_db_state = {'loading': True} bridge.acquireWeChatDatabaseKeys() host._refresh_wechat_database.assert_not_called() host._wechat_db_state = {} with mock.patch.object(gui.QFileDialog, 'getExistingDirectory', return_value=''): bridge.chooseWeChatDatabaseDirectory() host._refresh_wechat_database.assert_not_called() with mock.patch.object(gui.QFileDialog, 'getOpenFileName', return_value=('', '')): bridge.importWeChatDatabaseKeys() host._refresh_wechat_database.assert_not_called() with mock.patch.object(gui.QFileDialog, 'getExistingDirectory', return_value='C:/test/WXWork'), mock.patch('wxwork_local_setup.select_source_directory') as selected: bridge.chooseWeChatDatabaseDirectory() selected.assert_called_once_with('C:/test/WXWork') host._refresh_wechat_database.assert_called_once_with(refresh_cache=True) host._refresh_wechat_database.reset_mock() with mock.patch.object(gui.QFileDialog, 'getOpenFileName', return_value=('C:/test/keys.json', '')), mock.patch('wxwork_local_setup.import_keys_file', side_effect=ValueError('wrong key')), mock.patch.object(gui.QMessageBox, 'warning') as warned: bridge.importWeChatDatabaseKeys() assert warned.call_count == 1 host._refresh_wechat_database.assert_not_called() print('Database setup bridge checks passed')