62 lines
2.2 KiB
Python
62 lines
2.2 KiB
Python
"""Output path when the GUI switches between MD → DOCX and DOCX → MD."""
|
|
|
|
import os
|
|
|
|
from md2gost.gui import (
|
|
coerce_docx_output,
|
|
import_output_path,
|
|
next_import_output,
|
|
next_markdown_output,
|
|
output_tracks_source,
|
|
)
|
|
from md2gost.pipeline import default_output_path
|
|
|
|
|
|
def test_import_markdown_counts_as_automatic(tmp_path):
|
|
docx = tmp_path / "шаблон таблицы.docx"
|
|
imported = import_output_path(str(docx))
|
|
assert imported.endswith(".md")
|
|
assert output_tracks_source(str(docx), imported)
|
|
# default_output_path appends .docx and must not be the import target
|
|
assert not output_tracks_source(str(docx), default_output_path(str(docx)))
|
|
|
|
|
|
def test_markdown_after_import_uses_docx(tmp_path):
|
|
"""MD → DOCX, then DOCX → MD, then another .md must not keep the .md output."""
|
|
report = tmp_path / "1исп.md"
|
|
imported = import_output_path(str(tmp_path / "шаблон таблицы.docx"))
|
|
|
|
out, auto = next_markdown_output(str(report), imported, auto=True)
|
|
assert out == default_output_path(str(report))
|
|
assert auto is True
|
|
|
|
# Old GUI cleared the auto flag after import, so the .md path stuck.
|
|
out, auto = next_markdown_output(str(report), imported, auto=False)
|
|
assert out == default_output_path(str(report))
|
|
assert out.lower().endswith(".docx")
|
|
assert auto is True
|
|
|
|
|
|
def test_custom_docx_is_kept_when_switching_markdown(tmp_path):
|
|
other = tmp_path / "other.md"
|
|
custom = str(tmp_path / "pinned.docx")
|
|
out, auto = next_markdown_output(str(other), custom, auto=False)
|
|
assert out == custom
|
|
assert auto is False
|
|
|
|
|
|
def test_import_replaces_previous_docx_target(tmp_path):
|
|
src = tmp_path / "шаблон таблицы.docx"
|
|
previous = str(tmp_path / "report.docx")
|
|
out, auto = next_import_output(str(src), previous, auto=False)
|
|
assert os.path.normcase(out) == os.path.normcase(import_output_path(str(src)))
|
|
assert auto is True
|
|
|
|
|
|
def test_convert_does_not_reuse_import_markdown(tmp_path):
|
|
report = tmp_path / "1исп.md"
|
|
stale = str(tmp_path / "шаблон таблицы.md")
|
|
assert coerce_docx_output(str(report), stale) == default_output_path(str(report))
|
|
keep = str(tmp_path / "keep.docx")
|
|
assert coerce_docx_output(str(report), keep) == keep
|