Add support for sorting by various fields

This commit is contained in:
2026-03-21 01:44:17 +01:00
parent 6b65d9cd15
commit 167b37f471
5 changed files with 180 additions and 42 deletions

View File

@@ -15,6 +15,7 @@ from hxbooks.search import (
IsOperatorValue,
QueryParser,
SearchQuery,
SortDirection,
_convert_value, # noqa: PLC2701
)
@@ -267,6 +268,21 @@ class TestTypeConversion:
result = _convert_value(Field.IS, "invalid-status")
assert result == IsOperatorValue.UNKNOWN
def test_convert_sort_field(self, parser: QueryParser) -> None:
"""Test converting values for 'sort' field."""
result = _convert_value(Field.SORT, "added")
assert result == (Field.ADDED_DATE, SortDirection.ASC)
result = _convert_value(Field.SORT, "added-desc")
assert result == (Field.ADDED_DATE, SortDirection.DESC)
# Invalid field or direction should fallback to a default value
result = _convert_value(Field.SORT, "added-invalid")
assert result == (Field.SORT, SortDirection.ASC)
result = _convert_value(Field.SORT, "invalid-asc")
assert result == (Field.SORT, SortDirection.ASC)
class TestParsingEdgeCases:
"""Test edge cases and error handling in query parsing."""