Merge pull request #931 from ali/fix/local-search-with-album-query

local: Fix exact search to handle tracks where album is None (fixes #930)
This commit is contained in:
Thomas Adamcik 2015-01-06 10:44:11 +01:00
commit bd7ddcf7ea
2 changed files with 19 additions and 2 deletions

View File

@ -1,6 +1,6 @@
from __future__ import absolute_import, unicode_literals
from mopidy.models import Album, SearchResult
from mopidy.models import SearchResult
def find_exact(tracks, query=None, uris=None):
@ -23,7 +23,8 @@ def find_exact(tracks, query=None, uris=None):
uri_filter = lambda t: q == t.uri
track_name_filter = lambda t: q == t.name
album_filter = lambda t: q == getattr(t, 'album', Album()).name
album_filter = lambda t: q == getattr(
getattr(t, 'album', None), 'name', None)
artist_filter = lambda t: filter(
lambda a: q == a.name, t.artists)
albumartist_filter = lambda t: any([

View File

@ -0,0 +1,16 @@
from __future__ import unicode_literals
import unittest
from mopidy.local import search
from mopidy.models import Album, Track
class LocalLibrarySearchTest(unittest.TestCase):
def test_find_exact_with_album_query(self):
expected_tracks = [Track(album=Album(name='foo'))]
tracks = [Track(), Track(album=Album(name='bar'))] + expected_tracks
search_result = search.find_exact(tracks, {'album': ['foo']})
self.assertEqual(search_result.tracks, tuple(expected_tracks))