From 0b6ec50b163e908191d16bfdf99672680c7692b9 Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Mon, 2 Feb 2026 03:58:38 +0000 Subject: [PATCH] Add test files --- tests/test_validate.py | 156 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 tests/test_validate.py diff --git a/tests/test_validate.py b/tests/test_validate.py new file mode 100644 index 0000000..3a3473d --- /dev/null +++ b/tests/test_validate.py @@ -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