From b7d0fc8ffc8a1ca865bd157f585c7c746454e132 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 31 May 2015 07:40:37 +0100 Subject: [PATCH] Fix focus and test --- openlp/core/ui/slidecontroller.py | 3 +- .../openlp_core_ui/test_slidecontroller.py | 59 +++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index f05b0b5c2..8638b8e9c 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -427,7 +427,7 @@ class SlideController(DisplayController, RegistryProperties): """ Called, when a shortcut has been activated to jump to a chorus, verse, etc. - **Note**: This implementation is based on shortcuts. But it rather works like "key sequenes". You have to + **Note**: This implementation is based on shortcuts. But it rather works like "key sequences". You have to press one key after the other and **not** at the same time. For example to jump to "V3" you have to press "V" and afterwards but within a time frame of 350ms you have to press "3". @@ -1344,6 +1344,7 @@ class SlideController(DisplayController, RegistryProperties): self.service_manager.preview_live(self.service_item.unique_identifier, row) else: self.live_controller.add_service_manager_item(self.service_item, row) + self.live_controller.preview_widget.setFocus() def on_media_start(self, item): """ diff --git a/tests/functional/openlp_core_ui/test_slidecontroller.py b/tests/functional/openlp_core_ui/test_slidecontroller.py index c91a82144..2ae58b7dd 100644 --- a/tests/functional/openlp_core_ui/test_slidecontroller.py +++ b/tests/functional/openlp_core_ui/test_slidecontroller.py @@ -231,6 +231,65 @@ class TestSlideController(TestCase): mocked_display.setVisible.assert_called_once_with(False) mocked_media_controller.media_stop.assert_called_once_with(slide_controller) + def on_go_live_live_controller_test(self): + """ + Test that when the on_go_live() method is called the message is sent to the live controller and focus is + set correctly. + """ + # GIVEN: A new SlideController instance and plugin preview then pressing go live should respond + mocked_display = MagicMock() + mocked_live_controller = MagicMock() + mocked_preview_widget = MagicMock() + mocked_service_item = MagicMock() + mocked_service_item.from_service = False + mocked_preview_widget.current_slide_number.return_value = 1 + mocked_preview_widget.slide_count.return_value = 2 + mocked_live_controller.preview_widget = MagicMock() + Registry.create() + Registry().register('live_controller', mocked_live_controller) + slide_controller = SlideController(None) + slide_controller.service_item = mocked_service_item + slide_controller.preview_widget = mocked_preview_widget + slide_controller.display = mocked_display + + # WHEN: on_go_live() is called + slide_controller.on_go_live() + + # THEN: the live controller should have the service item and the focus set to live + mocked_live_controller.add_service_manager_item.assert_called_once_with(mocked_service_item, 1) + mocked_live_controller.preview_widget.setFocus.assert_called_once_with() + + def on_go_live_service_manager_test(self): + """ + Test that when the on_go_live() method is called the message is sent to the live controller and focus is + set correctly. + """ + # GIVEN: A new SlideController instance and service manager preview then pressing go live should respond + mocked_display = MagicMock() + mocked_service_manager = MagicMock() + mocked_live_controller = MagicMock() + mocked_preview_widget = MagicMock() + mocked_service_item = MagicMock() + mocked_service_item.from_service = True + mocked_service_item.unique_identifier = 42 + mocked_preview_widget.current_slide_number.return_value = 1 + mocked_preview_widget.slide_count.return_value = 2 + mocked_live_controller.preview_widget = MagicMock() + Registry.create() + Registry().register('live_controller', mocked_live_controller) + Registry().register('service_manager', mocked_service_manager) + slide_controller = SlideController(None) + slide_controller.service_item = mocked_service_item + slide_controller.preview_widget = mocked_preview_widget + slide_controller.display = mocked_display + + # WHEN: on_go_live() is called + slide_controller.on_go_live() + + # THEN: the service manager should have the service item and the focus set to live + mocked_service_manager.preview_live.assert_called_once_with(42, 1) + mocked_live_controller.preview_widget.setFocus.assert_called_once_with() + def service_previous_test(self): """ Check that calling the service_previous() method adds the previous key to the queue and processes the queue