"""Unit tests for the database-independent hit-testing helpers.""" import pytest from services.hit_testing_service import HitTestingService class TestHitTestingServiceArguments: def test_escape_query_for_search_should_escape_double_quotes(self) -> None: query = 'test "query" with quotes' result = HitTestingService.escape_query_for_search(query) assert result == 'test \\"query\\" with quotes' def test_hit_testing_args_check_should_pass_with_valid_query(self) -> None: HitTestingService.hit_testing_args_check({"query": "valid query"}) def test_hit_testing_args_check_should_pass_with_valid_attachments(self) -> None: HitTestingService.hit_testing_args_check({"attachment_ids": ["id1", "id2"]}) def test_hit_testing_args_check_should_raise_error_when_no_query_or_attachments(self) -> None: with pytest.raises(ValueError, match="Query or attachment_ids is required"): HitTestingService.hit_testing_args_check({}) def test_hit_testing_args_check_should_raise_error_when_query_too_long(self) -> None: with pytest.raises(ValueError, match="Query cannot exceed 250 characters"): HitTestingService.hit_testing_args_check({"query": "a" * 251}) def test_hit_testing_args_check_should_raise_error_when_attachments_not_list(self) -> None: with pytest.raises(ValueError, match="Attachment_ids must be a list"): HitTestingService.hit_testing_args_check({"attachment_ids": "not a list"})