Miscs
This commit is contained in:
@@ -2,6 +2,8 @@ import os
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from tkinter import ttk
|
||||
from unittest.mock import patch
|
||||
|
||||
from copienator_gui.app import CopienatorApp
|
||||
from copienator_gui.workflow import command_display
|
||||
@@ -40,6 +42,16 @@ class GuiConvenienceTests(unittest.TestCase):
|
||||
self.assertEqual(self.app.state_store.step("inputs")["status"], "ready")
|
||||
self.assertIn("enonce.pdf", self.app.description_label.cget("text"))
|
||||
|
||||
def test_compact_evaluation_input_and_open_folder_button(self):
|
||||
self.assertEqual(int(self.app.evaluation_entry.cget("width")), 42)
|
||||
self.assertEqual(
|
||||
int(self.app.open_evaluation_button.grid_info()["column"]),
|
||||
int(self.app.evaluation_entry.grid_info()["column"]) + 1,
|
||||
)
|
||||
with patch("copienator_gui.app.open_path") as opened:
|
||||
self.app.open_evaluation_button.invoke()
|
||||
opened.assert_called_once_with(self.evaluation)
|
||||
|
||||
def test_redo_targets_selected_copy_and_copies_runnable_command(self):
|
||||
for folder in ("Copies", "Copies Originales"):
|
||||
(self.evaluation / folder).mkdir()
|
||||
@@ -48,7 +60,7 @@ class GuiConvenienceTests(unittest.TestCase):
|
||||
self.app.tree.selection_set("page_splitter")
|
||||
self.app.update()
|
||||
self.app.copy_var.set("Copie02.pdf")
|
||||
self.app._redo_selected_pages()
|
||||
self.app._target_selected_copy()
|
||||
command = self.app._make_command()
|
||||
target = Path(command[-1])
|
||||
self.assertEqual(target, self.evaluation / "Copies" / "Copie02.pdf")
|
||||
@@ -59,6 +71,36 @@ class GuiConvenienceTests(unittest.TestCase):
|
||||
self.app._target_all_pages()
|
||||
self.assertEqual(self.app.arg_vars["target"].get(), self.app._evaluation_arg())
|
||||
|
||||
def test_label_detection_can_target_one_copy(self):
|
||||
copies = self.evaluation / "Copies"
|
||||
copies.mkdir()
|
||||
for name in ("Copie01.pdf", "Copie02.pdf"):
|
||||
(copies / name).touch()
|
||||
|
||||
self.app.tree.selection_set("labels")
|
||||
self.app.update()
|
||||
self.assertEqual(self.app.copy_var.get(), "Copie01.pdf")
|
||||
self.app.copy_var.set("Copie02.pdf")
|
||||
self.app._target_selected_copy()
|
||||
|
||||
command = self.app._make_command()
|
||||
self.assertEqual(Path(command[-1]), copies / "Copie02.pdf")
|
||||
|
||||
def button_texts(widget):
|
||||
return [
|
||||
text
|
||||
for child in widget.winfo_children()
|
||||
for text in (
|
||||
[child.cget("text")]
|
||||
if isinstance(child, ttk.Button)
|
||||
else button_texts(child)
|
||||
)
|
||||
]
|
||||
|
||||
controls = button_texts(self.app.form)
|
||||
self.assertIn("Cibler la copie sélectionnée", controls)
|
||||
self.assertIn("Cibler tout le dossier", controls)
|
||||
|
||||
def test_console_selection_survives_output_and_is_read_only(self):
|
||||
self.app._append_console("Première ligne\nDeuxième ligne\n")
|
||||
self.app.console.tag_add("sel", "1.0", "1.end")
|
||||
@@ -73,3 +115,25 @@ class GuiConvenienceTests(unittest.TestCase):
|
||||
self.app._select_console_all()
|
||||
self.app._copy_console_selection()
|
||||
self.assertEqual(self.app.clipboard_get(), expected)
|
||||
|
||||
def test_validate_rename_preserves_files_and_downstream_status(self):
|
||||
pdf = self.evaluation / "Copie01.pdf"
|
||||
pdf.write_bytes(b"unchanged PDF")
|
||||
self.app.state_store.update_step("rename", status="stale")
|
||||
self.app.state_store.update_step("page_splitter", status="success")
|
||||
self.app.tree.selection_set("rename")
|
||||
self.app.update()
|
||||
with patch.object(self.app.runner, "start") as start:
|
||||
self.app.validate_rename_button.invoke()
|
||||
start.assert_not_called()
|
||||
self.assertEqual(self.app.state_store.step("rename")["status"], "success")
|
||||
self.assertEqual(self.app.state_store.step("page_splitter")["status"], "success")
|
||||
self.assertEqual(pdf.read_bytes(), b"unchanged PDF")
|
||||
self.assertEqual(list(self.evaluation.glob("*.pdf")), [pdf])
|
||||
self.app.state_store.update_step("rename", status="stale")
|
||||
self.app.active_step_id = "page_splitter"
|
||||
self.app._update_controls()
|
||||
self.assertIn("disabled", self.app.validate_rename_button.state())
|
||||
self.app._validate_rename_step()
|
||||
self.assertEqual(self.app.state_store.step("rename")["status"], "stale")
|
||||
self.app.active_step_id = None
|
||||
|
||||
Reference in New Issue
Block a user