diff --git a/mopidy/core/playback.py b/mopidy/core/playback.py index 4941ef0f..ec51b7ec 100644 --- a/mopidy/core/playback.py +++ b/mopidy/core/playback.py @@ -289,6 +289,8 @@ class PlaybackController(object): # For testing self._volume = volume + self._trigger_volume_changed() + volume = property(get_volume, set_volume) """Volume as int in range [0..100] or :class:`None`""" @@ -515,6 +517,10 @@ class PlaybackController(object): logger.debug('Triggering options changed event') listener.CoreListener.send('options_changed') + def _trigger_volume_changed(self): + logger.debug('Triggering volume changed event') + listener.CoreListener.send('volume_changed') + def _trigger_seeked(self, time_position): logger.debug('Triggering seeked event') listener.CoreListener.send('seeked', time_position=time_position) diff --git a/tests/core/events_test.py b/tests/core/events_test.py index 88f07de6..008d23dd 100644 --- a/tests/core/events_test.py +++ b/tests/core/events_test.py @@ -117,3 +117,9 @@ class BackendEventsTest(unittest.TestCase): playlist = playlist.copy(name='bar') self.core.playlists.save(playlist).get() self.assertEqual(send.call_args[0][0], 'playlist_changed') + + def test_set_volume_sends_volume_changed_event(self, send): + self.core.playback.set_volume(10).get() + send.reset_mock() + self.core.playback.set_volume(20).get() + self.assertEqual(send.call_args[0][0], 'volume_changed')