Files
gitignore-cli-generator/tests/test_custom_patterns.py
7000pctAUTO 8ed8de01af
Some checks failed
CI / test (3.10) (push) Successful in 9m34s
CI / test (3.11) (push) Successful in 9m29s
CI / test (3.12) (push) Successful in 9m33s
CI / test (3.9) (push) Successful in 9m33s
CI / lint (push) Failing after 4m43s
CI / type-check (push) Successful in 9m28s
CI / build (push) Has been skipped
Release / release (push) Failing after 4m51s
Release / release-pypi (push) Has been skipped
Add test suite for all modules
2026-01-29 15:45:21 +00:00

152 lines
5.5 KiB
Python

"""Tests for custom patterns module."""
import pytest
from pathlib import Path
from gitignore_cli.custom_patterns import (
CustomPattern,
CustomPatternManager,
)
class TestCustomPattern:
"""Tests for CustomPattern class."""
def test_custom_pattern_creation(self):
"""Test creating a CustomPattern instance."""
pattern = CustomPattern(pattern="*.log", description="Log files")
assert pattern.pattern == "*.log"
assert pattern.description == "Log files"
assert pattern.enabled is True
def test_custom_pattern_disabled(self):
"""Test creating a disabled CustomPattern."""
pattern = CustomPattern(pattern="*.tmp", enabled=False)
assert pattern.enabled is False
def test_custom_pattern_to_dict(self):
"""Test converting pattern to dictionary."""
pattern = CustomPattern(pattern="*.log", description="Logs", enabled=True)
data = pattern.to_dict()
assert data["pattern"] == "*.log"
assert data["description"] == "Logs"
assert data["enabled"] is True
def test_custom_pattern_from_dict(self):
"""Test creating pattern from dictionary."""
data = {
"pattern": "*.tmp",
"description": "Temporary files",
"enabled": False,
}
pattern = CustomPattern.from_dict(data)
assert pattern.pattern == "*.tmp"
assert pattern.description == "Temporary files"
assert pattern.enabled is False
def test_custom_pattern_repr(self):
"""Test pattern string representation."""
pattern = CustomPattern(pattern="*.log")
repr_str = repr(pattern)
assert "*.log" in repr_str
class TestCustomPatternManager:
"""Tests for CustomPatternManager class."""
def test_add_pattern(self, custom_pattern_manager: CustomPatternManager):
"""Test adding a custom pattern."""
result = custom_pattern_manager.add_pattern("*.log", "Log files")
assert result is True
assert custom_pattern_manager.count() == 1
def test_add_duplicate_pattern(self, custom_pattern_manager: CustomPatternManager):
"""Test adding a duplicate pattern."""
custom_pattern_manager.add_pattern("*.log")
result = custom_pattern_manager.add_pattern("*.log")
assert result is False
def test_remove_pattern(self, custom_pattern_manager: CustomPatternManager):
"""Test removing a custom pattern."""
custom_pattern_manager.add_pattern("*.log")
result = custom_pattern_manager.remove_pattern("*.log")
assert result is True
assert custom_pattern_manager.count() == 0
def test_remove_nonexistent_pattern(self, custom_pattern_manager: CustomPatternManager):
"""Test removing a pattern that doesn't exist."""
result = custom_pattern_manager.remove_pattern("*.nonexistent")
assert result is False
def test_list_patterns(self, custom_pattern_manager: CustomPatternManager):
"""Test listing custom patterns."""
custom_pattern_manager.add_pattern("*.log", "Log files")
custom_pattern_manager.add_pattern("*.tmp")
custom_pattern_manager.toggle_pattern("*.tmp")
patterns = custom_pattern_manager.list_patterns(include_disabled=True)
assert len(patterns) == 2
enabled = custom_pattern_manager.list_patterns(include_disabled=False)
assert len(enabled) == 1
def test_get_enabled_patterns(self, custom_pattern_manager: CustomPatternManager):
"""Test getting enabled pattern strings."""
custom_pattern_manager.add_pattern("*.log")
custom_pattern_manager.add_pattern("*.tmp")
custom_pattern_manager.toggle_pattern("*.tmp")
patterns = custom_pattern_manager.get_enabled_patterns()
assert "*.log" in patterns
assert "*.tmp" not in patterns
def test_toggle_pattern(self, custom_pattern_manager: CustomPatternManager):
"""Test toggling a pattern's enabled state."""
custom_pattern_manager.add_pattern("*.log")
new_state = custom_pattern_manager.toggle_pattern("*.log")
assert new_state is False
new_state = custom_pattern_manager.toggle_pattern("*.log")
assert new_state is True
def test_toggle_nonexistent_pattern(self, custom_pattern_manager: CustomPatternManager):
"""Test toggling a nonexistent pattern."""
result = custom_pattern_manager.toggle_pattern("*.nonexistent")
assert result is None
def test_get_patterns_content(self, custom_pattern_manager: CustomPatternManager):
"""Test getting patterns content string."""
custom_pattern_manager.add_pattern("*.log")
custom_pattern_manager.add_pattern("*.tmp")
content = custom_pattern_manager.get_patterns_content()
assert "*.log" in content
assert "*.tmp" in content
def test_count_patterns(self, custom_pattern_manager: CustomPatternManager):
"""Test counting patterns."""
assert custom_pattern_manager.count() == 0
custom_pattern_manager.add_pattern("*.log")
custom_pattern_manager.add_pattern("*.tmp")
assert custom_pattern_manager.count() == 2
def test_count_enabled(self, custom_pattern_manager: CustomPatternManager):
"""Test counting enabled patterns."""
custom_pattern_manager.add_pattern("*.log")
custom_pattern_manager.add_pattern("*.tmp")
custom_pattern_manager.toggle_pattern("*.tmp")
assert custom_pattern_manager.count_enabled() == 1