From 54a13cbb7ad931d4d23dd8768dee4a2cbe4543f2 Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Mon, 2 Feb 2026 17:24:43 +0000 Subject: [PATCH] Add tests - part 2 --- tests/test_diff.py | 116 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 tests/test_diff.py diff --git a/tests/test_diff.py b/tests/test_diff.py new file mode 100644 index 0000000..ae54942 --- /dev/null +++ b/tests/test_diff.py @@ -0,0 +1,116 @@ +"""Tests for diff generation.""" + + +from i18n_guardian.diff.diff_generator import DiffGenerator, DiffChange, DiffResult + + +class TestDiffGenerator: + """Tests for DiffGenerator.""" + + def test_generate_diff_basic(self, temp_dir): + """Test basic diff generation.""" + file_path = temp_dir / "test.py" + old_content = 'message = "Hello"' + new_content = 'message = t("Hello")' + + generator = DiffGenerator() + diff = generator.generate_diff(file_path, old_content, new_content) + + assert isinstance(diff, str) + assert len(diff) > 0 + assert "---" in diff + assert "+++" in diff + assert "-" in diff + assert "+" in diff + + def test_generate_diff_multiple_lines(self, temp_dir): + """Test diff generation for multiple lines.""" + file_path = temp_dir / "test.py" + old_content = '''def greet(): + return "Hello" +''' + new_content = '''def greet(): + return t("Hello") +''' + + generator = DiffGenerator() + diff = generator.generate_diff(file_path, old_content, new_content) + + assert "Hello" in diff + + def test_create_replacement(self): + """Test creating replacement string with i18n function.""" + generator = DiffGenerator() + replacement = generator.create_replacement("Hello World", "t") + + assert 't("Hello World")' in replacement + assert "\\n" not in replacement or replacement.count('\\n') == 0 + + def test_create_replacement_escaping(self): + """Test that special characters are escaped.""" + generator = DiffGenerator() + replacement = generator.create_replacement('Hello "World"', "t") + + assert '\\"' in replacement + + def test_diff_result_structure(self): + """Test DiffResult has correct structure.""" + result = DiffResult() + assert hasattr(result, "changes") + assert hasattr(result, "files_modified") + assert hasattr(result, "total_changes") + assert result.changes == [] + + def test_diff_change_structure(self, temp_dir): + """Test DiffChange has correct structure.""" + change = DiffChange( + file_path=temp_dir / "test.py", + original_line=1, + original_text='"Hello"', + new_text='t("Hello")', + ) + + assert hasattr(change, "file_path") + assert hasattr(change, "original_line") + assert hasattr(change, "original_text") + assert hasattr(change, "new_text") + + def test_empty_diff(self, temp_dir): + """Test diff with no changes.""" + file_path = temp_dir / "test.py" + content = 'message = "Hello"' + + generator = DiffGenerator() + diff = generator.generate_diff(file_path, content, content) + + assert isinstance(diff, str) + + def test_apply_diff_creates_backup(self, temp_dir): + """Test that applying diff creates backup.""" + file_path = temp_dir / "test.py" + file_path.write_text('message = "Hello"', encoding="utf-8") + + old_content = file_path.read_text(encoding="utf-8") + new_content = 'message = t("Hello")' + + generator = DiffGenerator() + diff = generator.generate_diff(file_path, old_content, new_content) + result = generator.apply_diff(file_path, diff, backup=True) + + assert result + assert file_path.with_suffix(".bak").exists() + + def test_apply_diff_modifies_file(self, temp_dir): + """Test that applying diff modifies file.""" + file_path = temp_dir / "test.py" + file_path.write_text('message = "Hello"', encoding="utf-8") + + old_content = file_path.read_text(encoding="utf-8") + new_content = 'message = t("Hello")' + + generator = DiffGenerator() + diff = generator.generate_diff(file_path, old_content, new_content) + generator.apply_diff(file_path, diff, backup=False) + + content = file_path.read_text(encoding="utf-8") + assert 't("Hello")' in content