start-gui.sh et améliorations diverses
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from unittest.mock import Mock
|
||||
|
||||
import pymupdf
|
||||
|
||||
from copienator.commands.page_splitter import PDFPreviewer, PAGE_SPLITTER_KB
|
||||
|
||||
|
||||
class ReversePagesTests(unittest.TestCase):
|
||||
def test_reverse_restarts_with_fresh_settings_and_exports_reversed_pages(self):
|
||||
with tempfile.TemporaryDirectory() as temporary:
|
||||
source = Path(temporary) / "copy.pdf"
|
||||
with pymupdf.open() as document:
|
||||
for index in range(3):
|
||||
page = document.new_page(width=200 + 20 * index, height=300)
|
||||
page.insert_text((30, 30), f"Page {index + 1}")
|
||||
document.save(source)
|
||||
original = source.read_bytes()
|
||||
preview = PDFPreviewer.__new__(PDFPreviewer)
|
||||
preview.doc = pymupdf.open(source)
|
||||
self.addCleanup(lambda: None if preview.doc.is_closed else preview.doc.close())
|
||||
preview.current_page_index = 2
|
||||
preview.page_settings = [{"keep": "none"}, {"keep": "left"}]
|
||||
preview.current_rotation = 180
|
||||
preview.file_rotation = 180
|
||||
preview.global_rotation = 180
|
||||
preview.processing = False
|
||||
preview.load_page = Mock()
|
||||
|
||||
preview.reverse_pages()
|
||||
|
||||
self.assertEqual([page.get_text().strip() for page in preview.doc],
|
||||
["Page 3", "Page 2", "Page 1"])
|
||||
self.assertEqual(preview.current_page_index, 0)
|
||||
self.assertEqual(preview.page_settings, [])
|
||||
self.assertEqual(preview.current_line_x, 120)
|
||||
self.assertEqual(preview.current_rotation, 0)
|
||||
self.assertEqual((preview.file_rotation, preview.global_rotation), (180, 180))
|
||||
preview.load_page.assert_called_once_with()
|
||||
self.assertEqual(source.read_bytes(), original)
|
||||
|
||||
preview.reverse_pages()
|
||||
self.assertEqual([page.get_text().strip() for page in preview.doc],
|
||||
["Page 1", "Page 2", "Page 3"])
|
||||
preview.reverse_pages()
|
||||
|
||||
preview.base_name = "copy"
|
||||
preview.split_dir = Path(temporary) / "split"
|
||||
preview.reorder_dir = Path(temporary) / "reorder"
|
||||
preview.final_file = Path(temporary) / "result.pdf"
|
||||
preview.output_dir = None
|
||||
preview.page_settings = [
|
||||
{"keep": "as_is", "rotation": 0, "line_x": page.rect.width / 2}
|
||||
for page in preview.doc
|
||||
]
|
||||
preview.split_pdf()
|
||||
preview.reorder_pdfs()
|
||||
preview.concate_files()
|
||||
with pymupdf.open(preview.final_file) as result:
|
||||
self.assertEqual([page.get_text().strip() for page in result],
|
||||
["Page 3", "Page 2", "Page 1"])
|
||||
|
||||
def test_single_page_can_restart_and_processing_ignores_shortcut(self):
|
||||
preview = PDFPreviewer.__new__(PDFPreviewer)
|
||||
preview.doc = pymupdf.open()
|
||||
self.addCleanup(preview.doc.close)
|
||||
preview.doc.new_page()
|
||||
preview.processing = True
|
||||
preview.load_page = Mock()
|
||||
preview.reverse_pages()
|
||||
preview.load_page.assert_not_called()
|
||||
preview.processing = False
|
||||
preview.reverse_pages()
|
||||
self.assertEqual(preview.current_page_index, 0)
|
||||
self.assertEqual(preview.page_settings, [])
|
||||
preview.load_page.assert_called_once_with()
|
||||
|
||||
def test_shortcut_available_with_personal_configuration(self):
|
||||
self.assertEqual(PAGE_SPLITTER_KB["reverse_pages"], "i")
|
||||
Reference in New Issue
Block a user