From a54551d9855a00ced41dcddce94c54563bebbe17 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Thu, 26 Mar 2015 23:12:26 +0100 Subject: [PATCH] core: Mark get_playlists and filter as deprecated --- mopidy/core/playlists.py | 6 +++ tests/core/test_playlists.py | 94 +++++++++++++++++++++++------------- tests/m3u/test_playlists.py | 66 +++++++++++++++---------- 3 files changed, 106 insertions(+), 60 deletions(-) diff --git a/mopidy/core/playlists.py b/mopidy/core/playlists.py index 669e1f35..b6f2e726 100644 --- a/mopidy/core/playlists.py +++ b/mopidy/core/playlists.py @@ -2,6 +2,7 @@ from __future__ import absolute_import, unicode_literals import logging import urlparse +import warnings import pykka @@ -80,6 +81,9 @@ class PlaylistsController(object): .. deprecated:: 1.0 Use :meth:`as_list` and :meth:`get_items` instead. """ + warnings.warn( + 'playlists.get_playlists() is deprecated', DeprecationWarning) + playlist_refs = self.as_list() if include_tracks: @@ -166,6 +170,8 @@ class PlaylistsController(object): .. deprecated:: 1.0 Use :meth:`as_list` and filter yourself. """ + warnings.warn('playlists.filter() is deprecated', DeprecationWarning) + criteria = criteria or kwargs matches = self.playlists for (key, value) in criteria.iteritems(): diff --git a/tests/core/test_playlists.py b/tests/core/test_playlists.py index 081f73e6..fa8c3531 100644 --- a/tests/core/test_playlists.py +++ b/tests/core/test_playlists.py @@ -1,6 +1,7 @@ from __future__ import absolute_import, unicode_literals import unittest +import warnings import mock @@ -83,30 +84,6 @@ class PlaylistsTest(unittest.TestCase): self.assertFalse(self.sp1.delete.called) self.assertFalse(self.sp2.delete.called) - def test_get_playlists_combines_result_from_backends(self): - result = self.core.playlists.get_playlists() - - self.assertIn(self.pl1a, result) - self.assertIn(self.pl1b, result) - self.assertIn(self.pl2a, result) - self.assertIn(self.pl2b, result) - - def test_get_playlists_includes_tracks_by_default(self): - result = self.core.playlists.get_playlists() - - self.assertEqual(result[0].name, 'A') - self.assertEqual(len(result[0].tracks), 1) - self.assertEqual(result[1].name, 'B') - self.assertEqual(len(result[1].tracks), 1) - - def test_get_playlist_can_strip_tracks_from_returned_playlists(self): - result = self.core.playlists.get_playlists(include_tracks=False) - - self.assertEqual(result[0].name, 'A') - self.assertEqual(len(result[0].tracks), 0) - self.assertEqual(result[1].name, 'B') - self.assertEqual(len(result[1].tracks), 0) - def test_create_without_uri_scheme_uses_first_backend(self): playlist = Playlist() self.sp1.create().get.return_value = playlist @@ -164,16 +141,6 @@ class PlaylistsTest(unittest.TestCase): self.assertFalse(self.sp1.delete.called) self.assertFalse(self.sp2.delete.called) - def test_filter_returns_matching_playlists(self): - result = self.core.playlists.filter(name='A') - - self.assertEqual(2, len(result)) - - def test_filter_accepts_dict_instead_of_kwargs(self): - result = self.core.playlists.filter({'name': 'A'}) - - self.assertEqual(2, len(result)) - def test_lookup_selects_the_dummy1_backend(self): self.core.playlists.lookup('dummy1:a') @@ -259,3 +226,62 @@ class PlaylistsTest(unittest.TestCase): self.assertIsNone(result) self.assertFalse(self.sp1.save.called) self.assertFalse(self.sp2.save.called) + + +class DeprecatedFilterPlaylistsTest(BasePlaylistsTest): + def setUp(self): # noqa: N802 + super(DeprecatedFilterPlaylistsTest, self).setUp() + self._warnings_filters = warnings.filters + warnings.filters = warnings.filters[:] + warnings.filterwarnings('ignore', '.*filter.*') + warnings.filterwarnings('ignore', '.*get_playlists.*') + + def tearDown(self): # noqa: N802 + super(DeprecatedFilterPlaylistsTest, self).tearDown() + warnings.filters = self._warnings_filters + + def test_filter_returns_matching_playlists(self): + result = self.core.playlists.filter(name='A') + + self.assertEqual(2, len(result)) + + def test_filter_accepts_dict_instead_of_kwargs(self): + result = self.core.playlists.filter({'name': 'A'}) + + self.assertEqual(2, len(result)) + + +class DeprecatedGetPlaylistsTest(BasePlaylistsTest): + def setUp(self): # noqa: N802 + super(DeprecatedGetPlaylistsTest, self).setUp() + self._warnings_filters = warnings.filters + warnings.filters = warnings.filters[:] + warnings.filterwarnings('ignore', '.*get_playlists.*') + + def tearDown(self): # noqa: N802 + super(DeprecatedGetPlaylistsTest, self).tearDown() + warnings.filters = self._warnings_filters + + def test_get_playlists_combines_result_from_backends(self): + result = self.core.playlists.get_playlists() + + self.assertIn(self.pl1a, result) + self.assertIn(self.pl1b, result) + self.assertIn(self.pl2a, result) + self.assertIn(self.pl2b, result) + + def test_get_playlists_includes_tracks_by_default(self): + result = self.core.playlists.get_playlists() + + self.assertEqual(result[0].name, 'A') + self.assertEqual(len(result[0].tracks), 1) + self.assertEqual(result[1].name, 'B') + self.assertEqual(len(result[1].tracks), 1) + + def test_get_playlist_can_strip_tracks_from_returned_playlists(self): + result = self.core.playlists.get_playlists(include_tracks=False) + + self.assertEqual(result[0].name, 'A') + self.assertEqual(len(result[0].tracks), 0) + self.assertEqual(result[1].name, 'B') + self.assertEqual(len(result[1].tracks), 0) diff --git a/tests/m3u/test_playlists.py b/tests/m3u/test_playlists.py index 355aabf5..cf3265c3 100644 --- a/tests/m3u/test_playlists.py +++ b/tests/m3u/test_playlists.py @@ -4,6 +4,7 @@ import os import shutil import tempfile import unittest +import warnings import pykka @@ -141,8 +142,8 @@ class M3UPlaylistsProviderTest(unittest.TestCase): def test_create_adds_playlist_to_playlists_collection(self): playlist = self.core.playlists.create('test') - self.assert_(self.core.playlists.playlists) - self.assertIn(playlist, self.core.playlists.playlists) + playlists = self.core.playlists.as_list() + self.assertIn(playlist.uri, [ref.uri for ref in playlists]) def test_as_list_empty_to_start_with(self): self.assertEqual(len(self.core.playlists.as_list()), 0) @@ -171,30 +172,6 @@ class M3UPlaylistsProviderTest(unittest.TestCase): self.core.playlists.delete(playlist.uri) self.assertIsNone(self.core.playlists.lookup(playlist.uri)) - def test_filter_without_criteria(self): - self.assertEqual( - self.core.playlists.get_playlists(), self.core.playlists.filter()) - - def test_filter_with_wrong_criteria(self): - self.assertEqual([], self.core.playlists.filter(name='foo')) - - def test_filter_with_right_criteria(self): - playlist = self.core.playlists.create('test') - playlists = self.core.playlists.filter(name='test') - self.assertEqual([playlist], playlists) - - def test_filter_by_name_returns_single_match(self): - self.core.playlists.create('a') - playlist = self.core.playlists.create('b') - - self.assertEqual([playlist], self.core.playlists.filter(name='b')) - - def test_filter_by_name_returns_no_matches(self): - self.core.playlists.create('a') - self.core.playlists.create('b') - - self.assertEqual([], self.core.playlists.filter(name='c')) - def test_lookup_finds_playlist_by_uri(self): original_playlist = self.core.playlists.create('test') @@ -292,3 +269,40 @@ class M3UPlaylistsProviderTest(unittest.TestCase): item_refs = self.core.playlists.get_items('dummy:unknown') self.assertIsNone(item_refs) + + +class DeprecatedM3UPlaylistsProviderTest(M3UPlaylistsProviderTest): + def setUp(self): # noqa: N802 + super(DeprecatedM3UPlaylistsProviderTest, self).setUp() + self._warnings_filters = warnings.filters + warnings.filters = warnings.filters[:] + warnings.filterwarnings('ignore', '.*filter.*') + warnings.filterwarnings('ignore', '.*get_playlists.*') + + def tearDown(self): # noqa: N802 + super(DeprecatedM3UPlaylistsProviderTest, self).tearDown() + warnings.filters = self._warnings_filters + + def test_filter_without_criteria(self): + self.assertEqual(self.core.playlists.get_playlists(), + self.core.playlists.filter()) + + def test_filter_with_wrong_criteria(self): + self.assertEqual([], self.core.playlists.filter(name='foo')) + + def test_filter_with_right_criteria(self): + playlist = self.core.playlists.create('test') + playlists = self.core.playlists.filter(name='test') + self.assertEqual([playlist], playlists) + + def test_filter_by_name_returns_single_match(self): + self.core.playlists.create('a') + playlist = self.core.playlists.create('b') + + self.assertEqual([playlist], self.core.playlists.filter(name='b')) + + def test_filter_by_name_returns_no_matches(self): + self.core.playlists.create('a') + self.core.playlists.create('b') + + self.assertEqual([], self.core.playlists.filter(name='c'))