import unittest from pathlib import Path ROOT = Path(__file__).resolve().parents[1] class UI045PolishTests(unittest.TestCase): def test_type_column_stretches_to_fill_unused_space(self): ui = (ROOT / "src/librenet_scanner/ui.py").read_text() self.assertIn("header.setSectionResizeMode(2, QHeaderView.Stretch)", ui) self.assertIn("self.tree.header().setSectionResizeMode(2, QHeaderView.Stretch)", ui) def test_scan_progress_does_not_write_phase_to_statusbar(self): ui = (ROOT / "src/librenet_scanner/ui.py").read_text() start = ui.index("def _progress(self, message: str)") end = ui.index("def _progress_state", start) block = ui[start:end] self.assertIn("self.activity_label.setText(message)", block) self.assertNotIn("statusBar().showMessage", block) finished = ui[ui.index("def _scan_finished"):ui.index("# ---------- Arbre", ui.index("def _scan_finished"))] self.assertIn("self.statusBar().clearMessage()", finished) self.assertIn('self.progress.setFormat("100%")', finished) def test_worker_exposes_stage_aware_progress(self): scanner = (ROOT / "src/librenet_scanner/scanner.py").read_text() self.assertIn("progress_state = Signal(int, str)", scanner) self.assertIn("self.progress_state.emit(-1, label)", scanner) self.assertIn('self._set_progress(100, "Finalisation du scan…")', scanner) self.assertTrue("start_percent=62, end_percent=96" in scanner or "start_percent=64, end_percent=96" in scanner) def test_progress_bar_is_visible_and_readable(self): ui = (ROOT / "src/librenet_scanner/ui.py").read_text() self.assertIn("self.progress.setMinimumWidth(240)", ui) self.assertIn("min-height: 16px", ui) self.assertIn('self.progress.setFormat("%p%")', ui) if __name__ == "__main__": unittest.main()