test: assert unregistered id-field queries actually match nothing

test_unregistered_id_field_folds_to_literal_text_not_error only checked
that parse_user_query() didn't raise for a query like tag_id:5. Add a
result-level acceptance test (matching test_acceptance.py's
_matched_ids pattern, indexed against real documents) that asserts the
matched-document-ID set is genuinely empty, not just that the parse
step succeeds.
This commit is contained in:
Trenton Holmes
2026-08-18 11:05:04 -07:00
parent eaa6dc1eed
commit b48b1a7d08
2 changed files with 19 additions and 0 deletions
@@ -245,3 +245,19 @@ class TestMultitokenInNestedOr:
backend.add_or_update(doc_b)
matched = _matched_ids(backend, 'tag:"multi word tag" OR title:B')
assert matched == {doc_a.pk, doc_b.pk}
class TestUnregisteredIdFieldFoldsToLiteralText:
"""tag_id, owner_id, etc. are intentionally excluded from the
FieldRegistry - whoosh-compat parity leniency folds them into a literal
text search rather than raising a diagnostic/400 (see docs/usage.md's
advanced-search section). Prove the fold is inert against real data, not
just that parsing doesn't raise."""
def test_tag_id_query_matches_nothing(
self,
backend: TantivyBackend,
indexed_documents: dict[str, int],
) -> None:
matched = _matched_ids(backend, "tag_id:5")
assert matched == set()
+3
View File
@@ -152,6 +152,9 @@ class TestParseUserQuery:
) -> None:
# tag_id is intentionally excluded from the FieldRegistry — whoosh-compat
# parity leniency folds it into literal text, not a diagnostic/400.
# A result-level assertion that this fold actually matches nothing
# against real documents lives in
# test_acceptance.py::TestUnregisteredIdFieldFoldsToLiteralText.
q = parse_user_query(query_index, "tag_id:5", UTC)
assert isinstance(q, tantivy.Query)