backends: Make search/find_exact take a query dict instead of kwargs
This commit is contained in:
parent
0c05d7c60e
commit
1704828504
@ -53,7 +53,7 @@ class BaseLibraryProvider(object):
|
||||
def __init__(self, backend):
|
||||
self.backend = backend
|
||||
|
||||
def find_exact(self, **query):
|
||||
def find_exact(self, query=None):
|
||||
"""
|
||||
See :meth:`mopidy.core.LibraryController.find_exact`.
|
||||
|
||||
@ -77,7 +77,7 @@ class BaseLibraryProvider(object):
|
||||
"""
|
||||
pass
|
||||
|
||||
def search(self, **query):
|
||||
def search(self, query=None):
|
||||
"""
|
||||
See :meth:`mopidy.core.LibraryController.search`.
|
||||
|
||||
|
||||
@ -35,7 +35,9 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
|
||||
logger.debug('Failed to lookup %r', uri)
|
||||
return []
|
||||
|
||||
def find_exact(self, **query):
|
||||
def find_exact(self, query=None):
|
||||
if query is None:
|
||||
query = {}
|
||||
self._validate_query(query)
|
||||
result_tracks = self._uri_mapping.values()
|
||||
|
||||
@ -72,7 +74,9 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
|
||||
raise LookupError('Invalid lookup field: %s' % field)
|
||||
return SearchResult(uri='file:search', tracks=result_tracks)
|
||||
|
||||
def search(self, **query):
|
||||
def search(self, query=None):
|
||||
if query is None:
|
||||
query = {}
|
||||
self._validate_query(query)
|
||||
result_tracks = self._uri_mapping.values()
|
||||
|
||||
|
||||
@ -62,8 +62,8 @@ class SpotifyTrack(Track):
|
||||
|
||||
|
||||
class SpotifyLibraryProvider(base.BaseLibraryProvider):
|
||||
def find_exact(self, **query):
|
||||
return self.search(**query)
|
||||
def find_exact(self, query=None):
|
||||
return self.search(query=query)
|
||||
|
||||
def lookup(self, uri):
|
||||
try:
|
||||
@ -131,7 +131,7 @@ class SpotifyLibraryProvider(base.BaseLibraryProvider):
|
||||
def refresh(self, uri=None):
|
||||
pass # TODO
|
||||
|
||||
def search(self, **query):
|
||||
def search(self, query=None):
|
||||
if not query:
|
||||
return self._get_all_tracks()
|
||||
|
||||
|
||||
@ -43,7 +43,8 @@ class LibraryController(object):
|
||||
"""
|
||||
query = query or kwargs
|
||||
futures = [
|
||||
b.library.find_exact(**query) for b in self.backends.with_library]
|
||||
b.library.find_exact(query=query)
|
||||
for b in self.backends.with_library]
|
||||
return [result for result in pykka.get_all(futures) if result]
|
||||
|
||||
def lookup(self, uri):
|
||||
@ -106,5 +107,5 @@ class LibraryController(object):
|
||||
"""
|
||||
query = query or kwargs
|
||||
futures = [
|
||||
b.library.search(**query) for b in self.backends.with_library]
|
||||
b.library.search(query=query) for b in self.backends.with_library]
|
||||
return [result for result in pykka.get_all(futures) if result]
|
||||
|
||||
@ -87,8 +87,10 @@ class CoreLibraryTest(unittest.TestCase):
|
||||
|
||||
self.assertIn(result1, result)
|
||||
self.assertIn(result2, result)
|
||||
self.library1.find_exact.assert_called_once_with(any=['a'])
|
||||
self.library2.find_exact.assert_called_once_with(any=['a'])
|
||||
self.library1.find_exact.assert_called_once_with(
|
||||
query=dict(any=['a']))
|
||||
self.library2.find_exact.assert_called_once_with(
|
||||
query=dict(any=['a']))
|
||||
|
||||
def test_find_exact_filters_out_none(self):
|
||||
track1 = Track(uri='dummy1:a')
|
||||
@ -103,8 +105,10 @@ class CoreLibraryTest(unittest.TestCase):
|
||||
|
||||
self.assertIn(result1, result)
|
||||
self.assertNotIn(None, result)
|
||||
self.library1.find_exact.assert_called_once_with(any=['a'])
|
||||
self.library2.find_exact.assert_called_once_with(any=['a'])
|
||||
self.library1.find_exact.assert_called_once_with(
|
||||
query=dict(any=['a']))
|
||||
self.library2.find_exact.assert_called_once_with(
|
||||
query=dict(any=['a']))
|
||||
|
||||
def test_find_accepts_query_dict_instead_of_kwargs(self):
|
||||
track1 = Track(uri='dummy1:a')
|
||||
@ -121,8 +125,10 @@ class CoreLibraryTest(unittest.TestCase):
|
||||
|
||||
self.assertIn(result1, result)
|
||||
self.assertIn(result2, result)
|
||||
self.library1.find_exact.assert_called_once_with(any=['a'])
|
||||
self.library2.find_exact.assert_called_once_with(any=['a'])
|
||||
self.library1.find_exact.assert_called_once_with(
|
||||
query=dict(any=['a']))
|
||||
self.library2.find_exact.assert_called_once_with(
|
||||
query=dict(any=['a']))
|
||||
|
||||
def test_search_combines_results_from_all_backends(self):
|
||||
track1 = Track(uri='dummy1:a')
|
||||
@ -139,8 +145,10 @@ class CoreLibraryTest(unittest.TestCase):
|
||||
|
||||
self.assertIn(result1, result)
|
||||
self.assertIn(result2, result)
|
||||
self.library1.search.assert_called_once_with(any=['a'])
|
||||
self.library2.search.assert_called_once_with(any=['a'])
|
||||
self.library1.search.assert_called_once_with(
|
||||
query=dict(any=['a']))
|
||||
self.library2.search.assert_called_once_with(
|
||||
query=dict(any=['a']))
|
||||
|
||||
def test_search_filters_out_none(self):
|
||||
track1 = Track(uri='dummy1:a')
|
||||
@ -155,8 +163,10 @@ class CoreLibraryTest(unittest.TestCase):
|
||||
|
||||
self.assertIn(result1, result)
|
||||
self.assertNotIn(None, result)
|
||||
self.library1.search.assert_called_once_with(any=['a'])
|
||||
self.library2.search.assert_called_once_with(any=['a'])
|
||||
self.library1.search.assert_called_once_with(
|
||||
query=dict(any=['a']))
|
||||
self.library2.search.assert_called_once_with(
|
||||
query=dict(any=['a']))
|
||||
|
||||
def test_search_accepts_query_dict_instead_of_kwargs(self):
|
||||
track1 = Track(uri='dummy1:a')
|
||||
@ -173,5 +183,7 @@ class CoreLibraryTest(unittest.TestCase):
|
||||
|
||||
self.assertIn(result1, result)
|
||||
self.assertIn(result2, result)
|
||||
self.library1.search.assert_called_once_with(any=['a'])
|
||||
self.library2.search.assert_called_once_with(any=['a'])
|
||||
self.library1.search.assert_called_once_with(
|
||||
query=dict(any=['a']))
|
||||
self.library2.search.assert_called_once_with(
|
||||
query=dict(any=['a']))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user