backend: Add library.browse()

This commit is contained in:
Stein Magnus Jodal 2014-01-02 22:06:32 +01:00
parent 0fb7c79524
commit a3731c8187
4 changed files with 31 additions and 0 deletions

View File

@ -50,9 +50,28 @@ class BaseLibraryProvider(object):
pykka_traversable = True
name = None
"""
Name of the library.
Used as the library directory name in Mopidy's virtual file system.
*MUST be set by any class that implements :meth:`browse`.*
"""
def __init__(self, backend):
self.backend = backend
def browse(self, path):
"""
See :meth:`mopidy.core.LibraryController.browse`.
If you implement this method, make sure to also set :attr:`name`.
*MAY be implemented by subclass.*
"""
return []
# TODO: replace with search(query, exact=True, ...)
def find_exact(self, query=None, uris=None):
"""

View File

@ -38,12 +38,18 @@ class DummyBackend(pykka.ThreadingActor, base.Backend):
class DummyLibraryProvider(base.BaseLibraryProvider):
name = 'dummy'
def __init__(self, *args, **kwargs):
super(DummyLibraryProvider, self).__init__(*args, **kwargs)
self.dummy_library = []
self.dummy_browse_result = []
self.dummy_find_exact_result = SearchResult()
self.dummy_search_result = SearchResult()
def browse(self, path):
return self.dummy_browse_result
def find_exact(self, **query):
return self.dummy_find_exact_result

View File

@ -42,6 +42,8 @@ def write_library(json_file, data):
class LocalJsonLibraryProvider(base.BaseLibraryProvider):
name = 'local'
def __init__(self, *args, **kwargs):
super(LocalJsonLibraryProvider, self).__init__(*args, **kwargs)
self._uri_mapping = {}

View File

@ -110,6 +110,10 @@ class LocalLibraryProviderTest(unittest.TestCase):
result = backend.library.lookup(self.tracks[0].uri)
self.assertEqual(result, [])
@unittest.SkipTest
def test_browse(self):
pass # TODO
def test_lookup(self):
tracks = self.library.lookup(self.tracks[0].uri)
self.assertEqual(tracks, self.tracks[0:1])