from __future__ import annotations import os from pathlib import Path import sys import unittest os.environ.setdefault("QT_QPA_PLATFORM", "offscreen") SOURCE_ROOT = Path(__file__).resolve().parents[1] sys.path.insert(0, str(SOURCE_ROOT / "src")) sys.path.insert(0, str(Path(__file__).resolve().parent)) from PySide6.QtWidgets import QApplication, QLineEdit # noqa: E402 from matrix_image_editor.gui import MainWindow # noqa: E402 from test_config import sample_config # noqa: E402 class GuiTests(unittest.TestCase): @classmethod def setUpClass(cls) -> None: cls.app = QApplication.instance() or QApplication([]) def setUp(self) -> None: self.window = MainWindow() def tearDown(self) -> None: self.window.close() def test_passwords_are_hidden_and_dhcp_disables_static_fields(self) -> None: self.assertEqual(self.window.account_password.echoMode(), QLineEdit.EchoMode.Password) self.assertEqual(self.window.wifi_password.echoMode(), QLineEdit.EchoMode.Password) for widget in (self.window.address, self.window.prefix, self.window.gateway, self.window.dns): self.assertFalse(widget.isEnabled()) self.window.mode.setCurrentIndex(1) for widget in (self.window.address, self.window.prefix, self.window.gateway, self.window.dns): self.assertTrue(widget.isEnabled()) def test_loaded_values_collect_without_changing_image_version(self) -> None: config = sample_config() self.window._apply_loaded(Path("sample.img"), config) self.window.username.setText("new_user") collected = self.window._collect() self.assertEqual(collected["software_version"], config["software_version"]) self.assertEqual(collected["account"]["username"], "new_user") if __name__ == "__main__": unittest.main()