local: Fix get_images() for local libraries returning single track from lookup().

This commit is contained in:
Thomas Kemmer 2015-03-14 16:12:46 +01:00
parent abe9b7aea7
commit 29b4a2075a
2 changed files with 17 additions and 1 deletions

View File

@ -116,7 +116,11 @@ class Library(object):
result = {} result = {}
for uri in uris: for uri in uris:
image_uris = set() 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: if track.album and track.album.images:
image_uris.update(track.album.images) image_uris.update(track.album.images)
result[uri] = [models.Image(uri=u) for u in image_uris] 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]) result = library.get_images([track.uri])
self.assertEqual(result, {track.uri: [image]}) 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') @mock.patch.object(json.JsonLibrary, 'get_images')
def test_local_library_get_images(self, mock_get_images): def test_local_library_get_images(self, mock_get_images):
library = actor.LocalBackend(config=self.config, audio=None).library library = actor.LocalBackend(config=self.config, audio=None).library