backends: Add BackendListener.on_event()

This commit is contained in:
Stein Magnus Jodal 2012-12-01 11:21:06 +01:00
parent 959bd6cd84
commit ac6cecd2f8
2 changed files with 24 additions and 2 deletions

View File

@ -21,7 +21,20 @@ class BackendListener(object):
"""Helper to allow calling of backend listener events"""
listeners = pykka.ActorRegistry.get_by_class(BackendListener)
for listener in listeners:
getattr(listener.proxy(), event)(**kwargs)
listener.proxy().on_event(event, **kwargs)
def on_event(self, event, **kwargs):
"""
Called on all events.
*MAY* be implemented by actor. By default, this method forwards the
event to the specific event methods.
:param event: the event name
:type event: string
:param kwargs: any other arguments to the specific event handlers
"""
getattr(self, event)(**kwargs)
def playlists_loaded(self):
"""

View File

@ -1,13 +1,22 @@
from __future__ import unicode_literals
import mock
from mopidy.backends.listener import BackendListener
from tests import unittest
class CoreListenerTest(unittest.TestCase):
class BackendListenerTest(unittest.TestCase):
def setUp(self):
self.listener = BackendListener()
def test_on_event_forwards_to_specific_handler(self):
self.listener.playlists_loaded = mock.Mock()
self.listener.on_event('playlists_loaded')
self.listener.playlists_loaded.assert_called_with()
def test_listener_has_default_impl_for_playlists_loaded(self):
self.listener.playlists_loaded()