From ac6cecd2f87f543de23da03e8e6af326de859045 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sat, 1 Dec 2012 11:21:06 +0100 Subject: [PATCH] backends: Add BackendListener.on_event() --- mopidy/backends/listener.py | 15 ++++++++++++++- tests/backends/listener_test.py | 11 ++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/mopidy/backends/listener.py b/mopidy/backends/listener.py index 30b3291d..d9043079 100644 --- a/mopidy/backends/listener.py +++ b/mopidy/backends/listener.py @@ -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): """ diff --git a/tests/backends/listener_test.py b/tests/backends/listener_test.py index a4df513c..4aee451e 100644 --- a/tests/backends/listener_test.py +++ b/tests/backends/listener_test.py @@ -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()