backends: Add BackendListener.on_event()
This commit is contained in:
parent
959bd6cd84
commit
ac6cecd2f8
@ -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):
|
||||
"""
|
||||
|
||||
@ -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()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user