Add test files
Some checks failed
CI / test (push) Failing after 10s

This commit is contained in:
2026-02-02 03:58:38 +00:00
parent 9bfcdd41fb
commit 0b6ec50b16

156
tests/test_validate.py Normal file
View File

@@ -0,0 +1,156 @@
"""Tests for validation module."""
from i18n_key_sync.validate import ValidationResult, Validator
class TestValidationResult:
"""Tests for ValidationResult class."""
def test_validation_result_properties(self):
"""Test ValidationResult property calculations."""
result = ValidationResult(
missing_keys={"key1", "key2"},
unused_keys={"key3"},
matching_keys={"key4", "key5"},
)
assert result.total_missing == 2
assert result.total_unused == 1
assert result.total_matching == 2
assert result.is_valid is False
def test_validation_result_valid(self):
"""Test ValidationResult with no missing or unused keys."""
result = ValidationResult(
missing_keys=set(),
unused_keys=set(),
matching_keys={"key1", "key2"},
)
assert result.total_missing == 0
assert result.total_unused == 0
assert result.is_valid is True
class TestValidator:
"""Tests for Validator class."""
def test_validate_all_matching(self):
"""Test validation when all keys match."""
validator = Validator()
extracted_keys = {"key1", "key2", "key3"}
locale_keys = {"en": {"key1", "key2", "key3"}}
result = validator.validate(extracted_keys, locale_keys)
assert result.missing_keys == set()
assert result.unused_keys == set()
assert result.matching_keys == {"key1", "key2", "key3"}
assert result.is_valid is True
def test_validate_missing_keys(self):
"""Test validation with missing keys."""
validator = Validator()
extracted_keys = {"key1", "key2", "key3"}
locale_keys = {"en": {"key1", "key2"}}
result = validator.validate(extracted_keys, locale_keys)
assert result.missing_keys == {"key3"}
assert result.unused_keys == set()
assert result.matching_keys == {"key1", "key2"}
assert result.is_valid is False
def test_validate_unused_keys(self):
"""Test validation with unused keys."""
validator = Validator()
extracted_keys = {"key1", "key2"}
locale_keys = {"en": {"key1", "key2", "key3", "key4"}}
result = validator.validate(extracted_keys, locale_keys)
assert result.missing_keys == set()
assert result.unused_keys == {"key3", "key4"}
assert result.matching_keys == {"key1", "key2"}
assert result.is_valid is False
def test_validate_missing_and_unused_keys(self):
"""Test validation with both missing and unused keys."""
validator = Validator()
extracted_keys = {"key1", "key2", "key3"}
locale_keys = {"en": {"key1", "key4", "key5"}}
result = validator.validate(extracted_keys, locale_keys)
assert result.missing_keys == {"key2", "key3"}
assert result.unused_keys == {"key4", "key5"}
assert result.matching_keys == {"key1"}
assert result.is_valid is False
def test_validate_multiple_locales(self):
"""Test validation with multiple locales."""
validator = Validator()
extracted_keys = {"key1", "key2"}
locale_keys = {
"en": {"key1", "key2"},
"es": {"key1", "key2"},
"fr": {"key1", "key2", "key3"},
}
result = validator.validate(extracted_keys, locale_keys)
assert result.missing_keys == set()
assert result.unused_keys == {"key3"}
assert result.matching_keys == {"key1", "key2"}
def test_validate_empty_locale_keys(self):
"""Test validation with empty locale keys dict."""
validator = Validator()
extracted_keys = {"key1", "key2"}
locale_keys = {}
result = validator.validate(extracted_keys, locale_keys)
assert result.missing_keys == {"key1", "key2"}
assert result.unused_keys == set()
assert result.matching_keys == set()
assert result.is_valid is False
def test_validate_no_locale_files(self):
"""Test validation when locale directory has no files."""
validator = Validator()
extracted_keys = {"key1", "key2"}
locale_keys = {"en": set(), "es": set()}
result = validator.validate(extracted_keys, locale_keys)
assert result.missing_keys == {"key1", "key2"}
assert result.unused_keys == set()
assert result.matching_keys == set()
def test_validate_for_locale(self):
"""Test validation for a single locale."""
validator = Validator()
extracted_keys = {"key1", "key2", "key3"}
locale_keys = {"key1", "key2"}
result = validator.validate_for_locale(extracted_keys, locale_keys, "en")
assert result.missing_keys == {"key3"}
assert result.unused_keys == set()
assert result.matching_keys == {"key1", "key2"}
def test_get_summary(self):
"""Test getting validation summary."""
validator = Validator()
extracted_keys = {"key1", "key2", "key3"}
locale_keys = {"en": {"key1", "key2", "key4"}}
result = validator.validate(extracted_keys, locale_keys)
summary = validator.get_summary(result)
assert summary["missing_keys"] == 1
assert summary["unused_keys"] == 1
assert summary["matching_keys"] == 2
assert summary["total_keys_in_code"] == 3
assert summary["total_keys_in_locale"] == 3