Changeset View
Changeset View
Standalone View
Standalone View
swh/search/tests/test_search.py
Show First 20 Lines • Show All 161 Lines • ▼ Show 20 Lines | def test_origin_intrinsic_metadata_all_terms(self): | ||||
] | ] | ||||
) | ) | ||||
self.search.flush() | self.search.flush() | ||||
actual_page = self.search.origin_search(metadata_pattern="foo bar baz") | actual_page = self.search.origin_search(metadata_pattern="foo bar baz") | ||||
assert actual_page.next_page_token is None | assert actual_page.next_page_token is None | ||||
assert actual_page.results == [origin3_foobarbaz] | assert actual_page.results == [origin3_foobarbaz] | ||||
def test_origin_intrinsic_metadata_matches_cross_fields(self): | |||||
"""Checks the backend finds results even if the two words in the query are | |||||
each in a different field.""" | |||||
origin1 = {"url": "http://origin1"} | |||||
self.search.origin_update( | |||||
[ | |||||
{ | |||||
**origin1, | |||||
"intrinsic_metadata": { | |||||
"@context": "https://doi.org/10.5063/schema/codemeta-2.0", | |||||
"description": "foo bar", | |||||
"author": "John Doe", | |||||
}, | |||||
}, | |||||
] | |||||
) | |||||
self.search.flush() | |||||
actual_page = self.search.origin_search(metadata_pattern="foo John") | |||||
assert actual_page.next_page_token is None | |||||
assert actual_page.results == [origin1] | |||||
def test_origin_intrinsic_metadata_nested(self): | def test_origin_intrinsic_metadata_nested(self): | ||||
origin1_nothin = {"url": "http://origin1"} | origin1_nothin = {"url": "http://origin1"} | ||||
origin2_foobar = {"url": "http://origin2"} | origin2_foobar = {"url": "http://origin2"} | ||||
origin3_barbaz = {"url": "http://origin3"} | origin3_barbaz = {"url": "http://origin3"} | ||||
self.search.origin_update( | self.search.origin_update( | ||||
[ | [ | ||||
{**origin1_nothin, "intrinsic_metadata": {},}, | {**origin1_nothin, "intrinsic_metadata": {},}, | ||||
▲ Show 20 Lines • Show All 85 Lines • ▼ Show 20 Lines | def test_origin_intrinsic_metadata_inconsistent_type(self): | ||||
actual_page = self.search.origin_search(metadata_pattern="qux") | actual_page = self.search.origin_search(metadata_pattern="qux") | ||||
assert actual_page.next_page_token is None | assert actual_page.next_page_token is None | ||||
assert actual_page.results == [origin3_bazqux] | assert actual_page.results == [origin3_bazqux] | ||||
actual_page = self.search.origin_search(metadata_pattern="baz qux") | actual_page = self.search.origin_search(metadata_pattern="baz qux") | ||||
assert actual_page.next_page_token is None | assert actual_page.next_page_token is None | ||||
assert actual_page.results == [origin3_bazqux] | assert actual_page.results == [origin3_bazqux] | ||||
# FIXME: the following won't work because "foo" and "bar" are not in the | actual_page = self.search.origin_search(metadata_pattern="foo bar") | ||||
# same field. | assert actual_page.next_page_token is None | ||||
# actual_page = self.search.origin_search(metadata_pattern="foo bar") | assert actual_page.results == [origin1_foobar] | ||||
# assert actual_page.next_page_token is None | |||||
# assert actual_page.results == [origin2_foobar] | |||||
# TODO: add more tests with more codemeta terms | # TODO: add more tests with more codemeta terms | ||||
# TODO: add more tests with edge cases | # TODO: add more tests with edge cases | ||||
@settings(deadline=None) | @settings(deadline=None) | ||||
@given(strategies.integers(min_value=1, max_value=4)) | @given(strategies.integers(min_value=1, max_value=4)) | ||||
def test_origin_url_paging(self, limit): | def test_origin_url_paging(self, limit): | ||||
▲ Show 20 Lines • Show All 82 Lines • Show Last 20 Lines |