Changeset View
Changeset View
Standalone View
Standalone View
swh/search/tests/test_search.py
Show All 11 Lines | class CommonSearchTest: | ||||
def test_origin_url_unique_word_prefix(self): | def test_origin_url_unique_word_prefix(self): | ||||
self.search.origin_update([ | self.search.origin_update([ | ||||
{'url': 'http://foobar.baz'}, | {'url': 'http://foobar.baz'}, | ||||
{'url': 'http://barbaz.qux'}, | {'url': 'http://barbaz.qux'}, | ||||
{'url': 'http://qux.quux'}, | {'url': 'http://qux.quux'}, | ||||
]) | ]) | ||||
results = self.search.origin_search(url_pattern='foobar') | results = self.search.origin_search(url_pattern='foobar') | ||||
assert results == {'cursor': None, 'results': [ | assert results == {'scroll_token': None, 'results': [ | ||||
{'url': 'http://foobar.baz'}]} | {'url': 'http://foobar.baz'}]} | ||||
results = self.search.origin_search(url_pattern='barb') | results = self.search.origin_search(url_pattern='barb') | ||||
assert results == {'cursor': None, 'results': [ | assert results == {'scroll_token': None, 'results': [ | ||||
{'url': 'http://barbaz.qux'}]} | {'url': 'http://barbaz.qux'}]} | ||||
# 'bar' is part of 'foobar', but is not the beginning of it | # 'bar' is part of 'foobar', but is not the beginning of it | ||||
results = self.search.origin_search(url_pattern='bar') | results = self.search.origin_search(url_pattern='bar') | ||||
assert results == {'cursor': None, 'results': [ | assert results == {'scroll_token': None, 'results': [ | ||||
{'url': 'http://barbaz.qux'}]} | {'url': 'http://barbaz.qux'}]} | ||||
results = self.search.origin_search(url_pattern='barbaz') | results = self.search.origin_search(url_pattern='barbaz') | ||||
assert results == {'cursor': None, 'results': [ | assert results == {'scroll_token': None, 'results': [ | ||||
{'url': 'http://barbaz.qux'}]} | {'url': 'http://barbaz.qux'}]} | ||||
def test_origin_url_unique_word_prefix_multiple_results(self): | def test_origin_url_unique_word_prefix_multiple_results(self): | ||||
self.search.origin_update([ | self.search.origin_update([ | ||||
{'url': 'http://foobar.baz'}, | {'url': 'http://foobar.baz'}, | ||||
{'url': 'http://barbaz.qux'}, | {'url': 'http://barbaz.qux'}, | ||||
{'url': 'http://qux.quux'}, | {'url': 'http://qux.quux'}, | ||||
]) | ]) | ||||
results = self.search.origin_search(url_pattern='qu') | results = self.search.origin_search(url_pattern='qu') | ||||
assert results['cursor'] is None | assert results['scroll_token'] is None | ||||
results = [res['url'] for res in results['results']] | results = [res['url'] for res in results['results']] | ||||
expected_results = ['http://qux.quux', 'http://barbaz.qux'] | expected_results = ['http://qux.quux', 'http://barbaz.qux'] | ||||
assert sorted(results) == sorted(expected_results) | assert sorted(results) == sorted(expected_results) | ||||
results = self.search.origin_search(url_pattern='qux') | results = self.search.origin_search(url_pattern='qux') | ||||
assert results['cursor'] is None | assert results['scroll_token'] is None | ||||
results = [res['url'] for res in results['results']] | results = [res['url'] for res in results['results']] | ||||
expected_results = ['http://barbaz.qux', 'http://qux.quux'] | expected_results = ['http://barbaz.qux', 'http://qux.quux'] | ||||
assert sorted(results) == sorted(expected_results) | assert sorted(results) == sorted(expected_results) | ||||
def test_origin_intrinsic_metadata_description(self): | def test_origin_intrinsic_metadata_description(self): | ||||
self.search.origin_update([ | self.search.origin_update([ | ||||
{ | { | ||||
Show All 12 Lines | def test_origin_intrinsic_metadata_description(self): | ||||
'intrinsic_metadata': { | 'intrinsic_metadata': { | ||||
'@context': 'https://doi.org/10.5063/schema/codemeta-2.0', | '@context': 'https://doi.org/10.5063/schema/codemeta-2.0', | ||||
'description': 'bar baz', | 'description': 'bar baz', | ||||
} | } | ||||
}, | }, | ||||
]) | ]) | ||||
results = self.search.origin_search(metadata_pattern='foo') | results = self.search.origin_search(metadata_pattern='foo') | ||||
assert results == {'cursor': None, 'results': [ | assert results == {'scroll_token': None, 'results': [ | ||||
{'url': 'http://origin2'}]} | {'url': 'http://origin2'}]} | ||||
# ES returns both results, because blahblah | # ES returns both results, because blahblah | ||||
results = self.search.origin_search(metadata_pattern='foo bar') | results = self.search.origin_search(metadata_pattern='foo bar') | ||||
assert results == {'cursor': None, 'results': [ | assert results == {'scroll_token': None, 'results': [ | ||||
{'url': 'http://origin2'}, {'url': 'http://origin3'}]} | {'url': 'http://origin2'}, {'url': 'http://origin3'}]} | ||||
results = self.search.origin_search(metadata_pattern='bar baz') | results = self.search.origin_search(metadata_pattern='bar baz') | ||||
assert results == {'cursor': None, 'results': [ | assert results == {'scroll_token': None, 'results': [ | ||||
{'url': 'http://origin3'}, {'url': 'http://origin2'}]} | {'url': 'http://origin3'}, {'url': 'http://origin2'}]} | ||||
def test_origin_intrinsic_metadata_nested(self): | def test_origin_intrinsic_metadata_nested(self): | ||||
self.search.origin_update([ | self.search.origin_update([ | ||||
{ | { | ||||
'url': 'http://origin1', | 'url': 'http://origin1', | ||||
'intrinsic_metadata': {}, | 'intrinsic_metadata': {}, | ||||
}, | }, | ||||
Show All 9 Lines | def test_origin_intrinsic_metadata_nested(self): | ||||
'intrinsic_metadata': { | 'intrinsic_metadata': { | ||||
'@context': 'https://doi.org/10.5063/schema/codemeta-2.0', | '@context': 'https://doi.org/10.5063/schema/codemeta-2.0', | ||||
'keywords': ['bar', 'baz'], | 'keywords': ['bar', 'baz'], | ||||
} | } | ||||
}, | }, | ||||
]) | ]) | ||||
results = self.search.origin_search(metadata_pattern='foo') | results = self.search.origin_search(metadata_pattern='foo') | ||||
assert results == {'cursor': None, 'results': [ | assert results == {'scroll_token': None, 'results': [ | ||||
{'url': 'http://origin2'}]} | {'url': 'http://origin2'}]} | ||||
results = self.search.origin_search(metadata_pattern='foo bar') | results = self.search.origin_search(metadata_pattern='foo bar') | ||||
assert results == {'cursor': None, 'results': [ | assert results == {'scroll_token': None, 'results': [ | ||||
{'url': 'http://origin2'}, {'url': 'http://origin3'}]} | {'url': 'http://origin2'}, {'url': 'http://origin3'}]} | ||||
results = self.search.origin_search(metadata_pattern='bar baz') | results = self.search.origin_search(metadata_pattern='bar baz') | ||||
assert results == {'cursor': None, 'results': [ | assert results == {'scroll_token': None, 'results': [ | ||||
{'url': 'http://origin3'}, {'url': 'http://origin2'}]} | {'url': 'http://origin3'}, {'url': 'http://origin2'}]} | ||||
# 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)) | ||||
▲ Show 20 Lines • Show All 94 Lines • Show Last 20 Lines |