Merge pull request #1037 from tkem/fix/local_get_images_single_track

local: Fix get_images() for local libraries returning single track from lookup().
This commit is contained in:
Thomas Adamcik 2015-03-14 19:14:22 +01:00
commit 21b11b21cd
3 changed files with 18 additions and 2 deletions

View File

@ -108,7 +108,7 @@ v0.20.0 (UNRELEASED)
(Fixes: :issue:`967`)
- Add :meth:`mopidy.local.Library.get_images` for looking up images
for local URIs. (Fixes: :issue:`1031`, PR: :issue:`1032`)
for local URIs. (Fixes: :issue:`1031`, PR: :issue:`1032` and :issue:`1037`)
**MPD frontend**

View File

@ -116,7 +116,11 @@ class Library(object):
result = {}
for uri in uris:
image_uris = set()
for track in self.lookup(uri):
tracks = self.lookup(uri)
# local libraries may return single track
if isinstance(tracks, models.Track):
tracks = [tracks]
for track in tracks:
if track.album and track.album.images:
image_uris.update(track.album.images)
result[uri] = [models.Image(uri=u) for u in image_uris]

View File

@ -597,6 +597,18 @@ class LocalLibraryProviderTest(unittest.TestCase):
result = library.get_images([track.uri])
self.assertEqual(result, {track.uri: [image]})
@mock.patch.object(json.JsonLibrary, 'lookup')
def test_default_get_images_impl_single_track(self, mock_lookup):
library = actor.LocalBackend(config=self.config, audio=None).library
image = Image(uri='imageuri')
album = Album(images=[image.uri])
track = Track(uri='trackuri', album=album)
mock_lookup.return_value = track
result = library.get_images([track.uri])
self.assertEqual(result, {track.uri: [image]})
@mock.patch.object(json.JsonLibrary, 'get_images')
def test_local_library_get_images(self, mock_get_images):
library = actor.LocalBackend(config=self.config, audio=None).library