From 03838a19687f76846461e75f4df6e044026d5037 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Tue, 14 Jan 2014 23:29:52 +0100 Subject: [PATCH] mpd: Add tests for adding VFS folders --- mopidy/mpd/protocol/current_playlist.py | 2 +- tests/dummy_backend.py | 4 +-- tests/mpd/protocol/current_playlist_test.py | 33 +++++++++++++++++++-- tests/mpd/protocol/music_db_test.py | 24 +++++++-------- 4 files changed, 43 insertions(+), 20 deletions(-) diff --git a/mopidy/mpd/protocol/current_playlist.py b/mopidy/mpd/protocol/current_playlist.py index 0f7ba901..ab799fb4 100644 --- a/mopidy/mpd/protocol/current_playlist.py +++ b/mopidy/mpd/protocol/current_playlist.py @@ -20,7 +20,7 @@ def add(context, uri): - ``add ""`` should add all tracks in the library to the current playlist. """ - if not uri: + if not uri.strip('/'): return tl_tracks = context.core.tracklist.add(uri=uri).get() diff --git a/tests/dummy_backend.py b/tests/dummy_backend.py index 0b8e3858..258340b9 100644 --- a/tests/dummy_backend.py +++ b/tests/dummy_backend.py @@ -33,12 +33,12 @@ class DummyLibraryProvider(backend.LibraryProvider): def __init__(self, *args, **kwargs): super(DummyLibraryProvider, self).__init__(*args, **kwargs) self.dummy_library = [] - self.dummy_browse_result = [] + self.dummy_browse_result = {} self.dummy_find_exact_result = SearchResult() self.dummy_search_result = SearchResult() def browse(self, path): - return self.dummy_browse_result + return self.dummy_browse_result.get(path, []) def find_exact(self, **query): return self.dummy_find_exact_result diff --git a/tests/mpd/protocol/current_playlist_test.py b/tests/mpd/protocol/current_playlist_test.py index f94ec6a0..34221fcd 100644 --- a/tests/mpd/protocol/current_playlist_test.py +++ b/tests/mpd/protocol/current_playlist_test.py @@ -1,6 +1,6 @@ from __future__ import unicode_literals -from mopidy.models import Track +from mopidy.models import Ref, Track from tests.mpd import protocol @@ -24,9 +24,36 @@ class CurrentPlaylistHandlerTest(protocol.BaseTestCase): self.assertEqualResponse( 'ACK [50@0] {add} directory or file not found') - def test_add_with_empty_uri_should_add_all_known_tracks_and_ok(self): + def test_add_with_empty_uri_should_not_add_anything_and_ok(self): + self.backend.library.dummy_library = [Track(uri='dummy:/a', name='a')] + self.backend.library.dummy_browse_result = { + '/': [Ref.track(uri='dummy:/a', name='a')]} + self.sendRequest('add ""') - # TODO check that we add all tracks (we currently don't) + self.assertEqual(len(self.core.tracklist.tracks.get()), 0) + self.assertInResponse('OK') + + def test_add_with_library_should_recurse(self): + tracks = [Track(uri='dummy:/a', name='a'), + Track(uri='dummy:/b', name='b')] + + self.backend.library.dummy_library = tracks + self.backend.library.dummy_browse_result = { + '/': [Ref.track(uri='dummy:/a', name='a'), + Ref.directory(uri='/foo')], + '/foo': [Ref.track(uri='dummy:/b', name='b')]} + + self.sendRequest('add "/dummy"') + self.assertEqual(self.core.tracklist.tracks.get(), tracks) + self.assertInResponse('OK') + + def test_add_root_should_not_add_anything_and_ok(self): + self.backend.library.dummy_library = [Track(uri='dummy:/a', name='a')] + self.backend.library.dummy_browse_result = { + '/': [Ref.track(uri='dummy:/a', name='a')]} + + self.sendRequest('add "/"') + self.assertEqual(len(self.core.tracklist.tracks.get()), 0) self.assertInResponse('OK') def test_addid_without_songpos(self): diff --git a/tests/mpd/protocol/music_db_test.py b/tests/mpd/protocol/music_db_test.py index 25feab27..163ccf88 100644 --- a/tests/mpd/protocol/music_db_test.py +++ b/tests/mpd/protocol/music_db_test.py @@ -168,20 +168,18 @@ class MusicDatabaseHandlerTest(protocol.BaseTestCase): self.assertInResponse('OK') def test_lsinfo_for_root_includes_dirs_for_each_lib_with_content(self): - self.backend.library.dummy_browse_result = [ - Ref.track(uri='dummy:/a', name='a'), - Ref.directory(uri='/foo', name='foo'), - ] + self.backend.library.dummy_browse_result = { + '/': [Ref.track(uri='dummy:/a', name='a'), + Ref.directory(uri='/foo', name='foo')]} self.sendRequest('lsinfo "/"') self.assertInResponse('directory: dummy') self.assertInResponse('OK') def test_lsinfo_for_dir_with_and_without_leading_slash_is_the_same(self): - self.backend.library.dummy_browse_result = [ - Ref.track(uri='dummy:/a', name='a'), - Ref.directory(uri='/foo', name='foo'), - ] + self.backend.library.dummy_browse_result = { + '/': [Ref.track(uri='dummy:/a', name='a'), + Ref.directory(uri='/foo', name='foo')]} response1 = self.sendRequest('lsinfo "dummy"') response2 = self.sendRequest('lsinfo "/dummy"') @@ -191,9 +189,8 @@ class MusicDatabaseHandlerTest(protocol.BaseTestCase): self.backend.library.dummy_library = [ Track(uri='dummy:/a', name='a'), ] - self.backend.library.dummy_browse_result = [ - Ref.track(uri='dummy:/a', name='a'), - ] + self.backend.library.dummy_browse_result = { + '/': [Ref.track(uri='dummy:/a', name='a')]} self.sendRequest('lsinfo "/dummy"') self.assertInResponse('file: dummy:/a') @@ -201,9 +198,8 @@ class MusicDatabaseHandlerTest(protocol.BaseTestCase): self.assertInResponse('OK') def test_lsinfo_for_dir_includes_subdirs(self): - self.backend.library.dummy_browse_result = [ - Ref.directory(uri='/foo', name='foo'), - ] + self.backend.library.dummy_browse_result = { + '/': [Ref.directory(uri='/foo', name='foo')]} self.sendRequest('lsinfo "/dummy"') self.assertInResponse('directory: dummy/foo')