Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions src/nameres/handlers/lookup.py
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,9 @@ def _build_lookup_filters(self) -> dict:
In this case we to boolean AND NOT specific different types of required
fields we want to ensure `don't` exist in the results output
"""
biolink_types = self.get_argument("biolink_types", default=[], strip=True)

# to cover both the singular and plural biolink_type arguments, we combine them into a single list
biolink_types = [*self.get_arguments("biolink_types"), *self.get_arguments("biolink_type")]

filter_delimiter = "|"

Expand Down Expand Up @@ -295,8 +297,8 @@ def _build_lookup_filters(self) -> dict:
# Elasticsearch should
for biolink_type in biolink_types:
biolink_type = biolink_type.strip()
if biolink_type is not None:
should_filter = {"term": {"biolink_types": biolink_type.remove("biolink:")}}
if biolink_type:
should_filter = {"term": {"biolink_types": biolink_type.removeprefix("biolink:")}}
filters["should"].append(should_filter)

# Prefix: only filter
Expand Down
25 changes: 24 additions & 1 deletion test/test_lookup_query.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,27 @@
from nameres.handlers.lookup import LookupQuery, _build_elasticsearch_query
from unittest.mock import Mock

from nameres.handlers.lookup import BaseNameResolutionLookupHandler, LookupQuery, _build_elasticsearch_query


def test_biolink_type_filters_accept_singular_and_plural_arguments():
handler = Mock()
query_arguments = {
"biolink_types": ["biolink:Disease", " Gene "],
"biolink_type": ["biolink:PhenotypicFeature", " "],
}
handler.get_arguments.side_effect = lambda name: query_arguments.get(name, [])
handler.get_argument.side_effect = lambda _name, default, strip: default

filters = BaseNameResolutionLookupHandler._build_lookup_filters(handler)

assert filters == {
"should": [
{"term": {"biolink_types": "Disease"}},
{"term": {"biolink_types": "Gene"}},
{"term": {"biolink_types": "PhenotypicFeature"}},
],
"must_not": [],
}


def test_autocomplete_query_treats_final_term_as_prefix():
Expand Down