← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~raoul-snyman/openlp/vlc-cleanup into lp:openlp

 

Raoul Snyman has proposed merging lp:~raoul-snyman/openlp/vlc-cleanup into lp:openlp.

Requested reviews:
  OpenLP Core (openlp-core)

For more details, see:
https://code.launchpad.net/~raoul-snyman/openlp/vlc-cleanup/+merge/260633

Fix a left-over from the VLC 2.2 fix; fix a problem when video player from the UI is None
-- 
Your team OpenLP Core is requested to review the proposed merge of lp:~raoul-snyman/openlp/vlc-cleanup into lp:openlp.
=== modified file 'openlp/core/ui/media/mediacontroller.py'
--- openlp/core/ui/media/mediacontroller.py	2015-04-03 18:31:19 +0000
+++ openlp/core/ui/media/mediacontroller.py	2015-05-29 21:16:27 +0000
@@ -515,7 +515,7 @@
         :param service_item: The ServiceItem containing the details to be played.
         """
         used_players = get_media_players()[0]
-        if service_item.processor != UiStrings().Automatic:
+        if service_item.processor and service_item.processor != UiStrings().Automatic:
             used_players = [service_item.processor.lower()]
         # If no player, we can't play
         if not used_players:

=== modified file 'openlp/plugins/media/lib/mediaitem.py'
--- openlp/plugins/media/lib/mediaitem.py	2015-04-25 14:32:09 +0000
+++ openlp/plugins/media/lib/mediaitem.py	2015-05-29 21:16:27 +0000
@@ -34,6 +34,7 @@
 from openlp.core.ui.media import get_media_players, set_media_players, parse_optical_path, format_milliseconds
 from openlp.core.utils import get_locale_key
 from openlp.core.ui.media.vlcplayer import get_vlc
+
 if get_vlc() is not None:
     from openlp.plugins.media.forms.mediaclipselectorform import MediaClipSelectorForm
 
@@ -412,7 +413,7 @@
         When the load optical button is clicked, open the clip selector window.
         """
         # self.media_clip_selector_form.exec_()
-        if VLC_AVAILABLE:
+        if get_vlc():
             media_clip_selector_form = MediaClipSelectorForm(self, self.main_window, None)
             media_clip_selector_form.exec_()
             del media_clip_selector_form

=== modified file 'tests/functional/openlp_core_ui_media/test_mediacontroller.py'
--- tests/functional/openlp_core_ui_media/test_mediacontroller.py	2015-02-19 20:53:42 +0000
+++ tests/functional/openlp_core_ui_media/test_mediacontroller.py	2015-05-29 21:16:27 +0000
@@ -59,6 +59,21 @@
         self.assertListEqual(media_player.audio_extensions_list, media_controller.audio_extensions_list,
                              'Audio extensions should be the same')
 
+    def resize_test(self):
+        """
+        Test that the resize method is called correctly
+        """
+        # GIVEN: A media controller, a player and a display
+        media_controller = MediaController()
+        mocked_player = MagicMock()
+        mocked_display = MagicMock()
+
+        # WHEN: resize() is called
+        media_controller.resize(mocked_display, mocked_player)
+
+        # THEN: The player's resize method should be called correctly
+        mocked_player.resize.assert_called_with(mocked_display)
+
     def check_file_type_no_players_test(self):
         """
         Test that we don't try to play media when no players available
@@ -81,3 +96,101 @@
 
             # THEN: it should return False
             self.assertFalse(ret, '_check_file_type should return False when no mediaplayers are available.')
+
+    @patch('openlp.core.ui.media.mediacontroller.get_media_players')
+    @patch('openlp.core.ui.media.mediacontroller.UiStrings')
+    def check_file_type_no_processor_test(self, mocked_uistrings, mocked_get_media_players):
+        """
+        Test that we don't try to play media when the processor for the service item is None
+        """
+        # GIVEN: A mocked UiStrings, get_media_players, controller, display and service_item
+        mocked_get_media_players.return_value = ([], '')
+        mocked_ret_uistrings = MagicMock()
+        mocked_ret_uistrings.Automatic = 1
+        mocked_uistrings.return_value = mocked_ret_uistrings
+        media_controller = MediaController()
+        mocked_controller = MagicMock()
+        mocked_display = MagicMock()
+        mocked_service_item = MagicMock()
+        mocked_service_item.processor = None
+
+        # WHEN: calling _check_file_type when the processor for the service item is None
+        ret = media_controller._check_file_type(mocked_controller, mocked_display, mocked_service_item)
+
+        # THEN: it should return False
+        self.assertFalse(ret, '_check_file_type should return False when the processor for service_item is None.')
+
+    def media_play_msg_test(self):
+        """
+        Test that the media controller responds to the request to play a loaded video
+        """
+        # GIVEN: A media controller and a message with two elements
+        media_controller = MediaController()
+        message = (1, 2)
+
+        # WHEN: media_play_msg() is called
+        with patch.object(media_controller, u'media_play') as mocked_media_play:
+            media_controller.media_play_msg(message, False)
+
+        # THEN: The underlying method is called
+        mocked_media_play.assert_called_with(1, False)
+
+    def media_pause_msg_test(self):
+        """
+        Test that the media controller responds to the request to pause a loaded video
+        """
+        # GIVEN: A media controller and a message with two elements
+        media_controller = MediaController()
+        message = (1, 2)
+
+        # WHEN: media_play_msg() is called
+        with patch.object(media_controller, u'media_pause') as mocked_media_pause:
+            media_controller.media_pause_msg(message)
+
+        # THEN: The underlying method is called
+        mocked_media_pause.assert_called_with(1)
+
+    def media_stop_msg_test(self):
+        """
+        Test that the media controller responds to the request to stop a loaded video
+        """
+        # GIVEN: A media controller and a message with two elements
+        media_controller = MediaController()
+        message = (1, 2)
+
+        # WHEN: media_play_msg() is called
+        with patch.object(media_controller, u'media_stop') as mocked_media_stop:
+            media_controller.media_stop_msg(message)
+
+        # THEN: The underlying method is called
+        mocked_media_stop.assert_called_with(1)
+
+    def media_volume_msg_test(self):
+        """
+        Test that the media controller responds to the request to change the volume
+        """
+        # GIVEN: A media controller and a message with two elements
+        media_controller = MediaController()
+        message = (1, [50])
+
+        # WHEN: media_play_msg() is called
+        with patch.object(media_controller, u'media_volume') as mocked_media_volume:
+            media_controller.media_volume_msg(message)
+
+        # THEN: The underlying method is called
+        mocked_media_volume.assert_called_with(1, 50)
+
+    def media_seek_msg_test(self):
+        """
+        Test that the media controller responds to the request to seek to a particular position
+        """
+        # GIVEN: A media controller and a message with two elements
+        media_controller = MediaController()
+        message = (1, [800])
+
+        # WHEN: media_play_msg() is called
+        with patch.object(media_controller, u'media_seek') as mocked_media_seek:
+            media_controller.media_seek_msg(message)
+
+        # THEN: The underlying method is called
+        mocked_media_seek.assert_called_with(1, 800)


Follow ups