core: Trigger playlist_changed() event on create() and save()

This commit is contained in:
Stein Magnus Jodal 2012-11-16 23:49:28 +01:00
parent fd86b7173c
commit 4efff4a5a3
2 changed files with 31 additions and 2 deletions

View File

@ -5,6 +5,8 @@ import urlparse
import pykka
from . import listener
class PlaylistsController(object):
pykka_traversable = True
@ -47,7 +49,9 @@ class PlaylistsController(object):
backend = self.backends.by_uri_scheme[uri_scheme]
else:
backend = self.backends.with_playlists[0]
return backend.playlists.create(name).get()
playlist = backend.playlists.create(name).get()
listener.CoreListener.send('playlist_changed', playlist=playlist)
return playlist
def delete(self, uri):
"""
@ -162,4 +166,6 @@ class PlaylistsController(object):
backend = self.backends.with_playlists_by_uri_scheme.get(
uri_scheme, None)
if backend:
return backend.playlists.save(playlist).get()
playlist = backend.playlists.save(playlist).get()
listener.CoreListener.send('playlist_changed', playlist=playlist)
return playlist

View File

@ -90,3 +90,26 @@ class BackendEventsTest(unittest.TestCase):
send.reset_mock()
self.core.tracklist.shuffle().get()
self.assertEqual(send.call_args[0][0], 'tracklist_changed')
@unittest.SkipTest
def test_playlists_load_sends_playlists_loaded_event(self, send):
# TODO Figure out what type of event and how to send events when
# the backend finished loading playlists
pass
def test_playlists_create_sends_playlist_changed_event(self, send):
send.reset_mock()
self.core.playlists.create('foo').get()
self.assertEqual(send.call_args[0][0], 'playlist_changed')
@unittest.SkipTest
def test_playlists_delete_sends_playlist_deleted_event(self, send):
# TODO We should probably add a playlist_deleted event
pass
def test_playlists_save_sends_playlist_changed_event(self, send):
playlist = self.core.playlists.create('foo').get()
send.reset_mock()
playlist = playlist.copy(name='bar')
self.core.playlists.save(playlist).get()
self.assertEqual(send.call_args[0][0], 'playlist_changed')