Extended search functionality
This commit is contained in:
@@ -12,6 +12,7 @@ import pytest
|
||||
from hxbooks.search import (
|
||||
ComparisonOperator,
|
||||
Field,
|
||||
IsOperatorValue,
|
||||
QueryParser,
|
||||
SearchQuery,
|
||||
_convert_value, # noqa: PLC2701
|
||||
@@ -87,6 +88,14 @@ class TestFieldFilters:
|
||||
assert filter.field == Field.AUTHOR
|
||||
assert filter.value == "tolkien"
|
||||
|
||||
def test_parse_is_filter(self, parser: QueryParser) -> None:
|
||||
"""Test parsing 'is' operator field filter."""
|
||||
result = parser.parse("is:reading")
|
||||
assert len(result.field_filters) == 1
|
||||
filter = result.field_filters[0]
|
||||
assert filter.field == Field.IS
|
||||
assert filter.value == IsOperatorValue.READING
|
||||
|
||||
def test_parse_negated_filter(self, parser: QueryParser) -> None:
|
||||
"""Test parsing negated field filter."""
|
||||
result = parser.parse("-genre:romance")
|
||||
@@ -243,6 +252,21 @@ class TestTypeConversion:
|
||||
assert result == "123"
|
||||
assert isinstance(result, str)
|
||||
|
||||
def test_convert_is_operator(self, parser: QueryParser) -> None:
|
||||
"""Test converting values for 'is' operator fields."""
|
||||
result = _convert_value(Field.IS, "reading")
|
||||
assert result == IsOperatorValue.READING
|
||||
|
||||
result = _convert_value(Field.IS, "dropped")
|
||||
assert result == IsOperatorValue.DROPPED
|
||||
|
||||
result = _convert_value(Field.IS, "wished")
|
||||
assert result == IsOperatorValue.WISHED
|
||||
|
||||
# Invalid value should return UNKNOWN
|
||||
result = _convert_value(Field.IS, "invalid-status")
|
||||
assert result == IsOperatorValue.UNKNOWN
|
||||
|
||||
|
||||
class TestParsingEdgeCases:
|
||||
"""Test edge cases and error handling in query parsing."""
|
||||
|
||||
Reference in New Issue
Block a user