"""Tests for cli.filelevel module.""" from __future__ import annotations from pathlib import Path from pyflowx.cli._ops import files # ---------------------------------------------------------------------- # # remove_marks # ---------------------------------------------------------------------- # class TestRemoveMarks: """Test remove_marks function.""" def test_remove_marks_single_mark(self) -> None: """Should remove single mark.""" stem = "filename(PUB)" result = files.remove_marks(stem, ["PUB"]) assert result == "filename" def test_remove_marks_multiple_marks(self) -> None: """Should remove multiple marks.""" stem = "filename(PUB)(NOR)" result = files.remove_marks(stem, ["PUB", "NOR"]) assert result == "filename" def test_remove_marks_no_marks(self) -> None: """Should not change stem without marks.""" stem = "filename" result = files.remove_marks(stem, ["PUB"]) assert result == "filename" # ---------------------------------------------------------------------- # # process_file_level # ---------------------------------------------------------------------- # class TestProcessFileLevel: """Test process_file_level function.""" def test_process_file_level_set_pub(self, tmp_path: Path) -> None: """Should set PUB level.""" test_file = tmp_path / "test.txt" test_file.write_text("test content") files.process_file_level(test_file, level=1) # File should be renamed with PUB level def test_process_file_level_set_int(self, tmp_path: Path) -> None: """Should set INT level.""" test_file = tmp_path / "test.txt" test_file.write_text("test content") files.process_file_level(test_file, level=2) # File should be renamed with INT level def test_process_file_level_clear(self, tmp_path: Path) -> None: """Should clear level.""" test_file = tmp_path / "test(PUB).txt" test_file.write_text("test content") files.process_file_level(test_file, level=0) # File should be renamed without level def test_process_file_level_invalid_level(self, tmp_path: Path) -> None: """Should handle invalid level.""" test_file = tmp_path / "test.txt" test_file.write_text("test content") files.process_file_level(test_file, level=5) # Should print error message def test_process_file_level_nonexistent_file(self, tmp_path: Path) -> None: """Should handle nonexistent file.""" test_file = tmp_path / "nonexistent.txt" files.process_file_level(test_file, level=1) # Should print error message # ---------------------------------------------------------------------- # # process_files_level # ---------------------------------------------------------------------- # class TestProcessFilesLevel: """Test process_files_level function.""" def test_process_files_level_batch(self, tmp_path: Path) -> None: """Should process multiple files.""" file_list = [] for i in range(3): test_file = tmp_path / f"test{i}.txt" test_file.write_text(f"content{i}") file_list.append(test_file) files.process_files_level(file_list, level=1) # All files should be processed