From 9ba168e9b90e92d65fb0a757b3458d0cebe42fa1 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Sun, 19 Jan 2014 22:21:02 +0100 Subject: [PATCH] local: Update browse cache code to add all directories Tests have been updated to make sure multiple folders are added. We had forgotten to add child folders to the ones that had already been created. --- mopidy/local/json.py | 3 +++ tests/local/test_json.py | 26 +++++++++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/mopidy/local/json.py b/mopidy/local/json.py index ad6be5d3..10611f6f 100644 --- a/mopidy/local/json.py +++ b/mopidy/local/json.py @@ -66,12 +66,15 @@ class _BrowseCache(object): for i in reversed(range(len(parts))): directory = '/'.join(parts[:i+1]) uri = translator.path_to_local_directory_uri(directory) + # First dir we process is our parent if not parent_uri: parent_uri = uri # We found ourselves and we exist, done. if uri in self._cache: + if child: + self._cache[uri][child.uri] = child break # Initialize ourselves, store child if present, and add diff --git a/tests/local/test_json.py b/tests/local/test_json.py index 9c8686e9..3ccb6e6d 100644 --- a/tests/local/test_json.py +++ b/tests/local/test_json.py @@ -7,26 +7,34 @@ from mopidy.models import Ref class BrowseCacheTest(unittest.TestCase): + maxDiff = None + def setUp(self): - self.uris = [b'local:track:foo/bar/song1', - b'local:track:foo/bar/song2', - b'local:track:foo/song3'] + self.uris = ['local:track:foo/bar/song1', + 'local:track:foo/bar/song2', + 'local:track:foo/baz/song3', + 'local:track:foo/song4', + 'local:track:song5'] self.cache = json._BrowseCache(self.uris) def test_lookup_root(self): - expected = [Ref.directory(uri='local:directory:foo', name='foo')] - self.assertEqual(expected, self.cache.lookup('local:directory')) + expected = [Ref.directory(uri='local:directory:foo', name='foo'), + Ref.track(uri='local:track:song5', name='song5')] + self.assertItemsEqual(expected, self.cache.lookup('local:directory')) def test_lookup_foo(self): expected = [Ref.directory(uri='local:directory:foo/bar', name='bar'), - Ref.track(uri=self.uris[2], name='song3')] - self.assertEqual(expected, self.cache.lookup('local:directory:foo')) + Ref.directory(uri='local:directory:foo/baz', name='baz'), + Ref.track(uri=self.uris[3], name='song4')] + result = self.cache.lookup('local:directory:foo') + self.assertItemsEqual(expected, result) def test_lookup_foo_bar(self): expected = [Ref.track(uri=self.uris[0], name='song1'), Ref.track(uri=self.uris[1], name='song2')] - self.assertEqual( + self.assertItemsEqual( expected, self.cache.lookup('local:directory:foo/bar')) def test_lookup_foo_baz(self): - self.assertEqual([], self.cache.lookup('local:directory:foo/baz')) + result = self.cache.lookup('local:directory:foo/unknown') + self.assertItemsEqual([], result)