forked from openlp/openlp
Fix issue with android where tagging is wrong is the render takes too long
This commit is contained in:
parent
002d68086a
commit
54dbafed8e
@ -824,6 +824,8 @@ class SlideController(DisplayController, RegistryProperties):
|
|||||||
"""
|
"""
|
||||||
self.on_stop_loop()
|
self.on_stop_loop()
|
||||||
old_item = self.service_item
|
old_item = self.service_item
|
||||||
|
# rest to allow the remote pick up verse 1 if large imaged
|
||||||
|
self.selected_row = 0
|
||||||
# take a copy not a link to the servicemanager copy.
|
# take a copy not a link to the servicemanager copy.
|
||||||
self.service_item = copy.copy(service_item)
|
self.service_item = copy.copy(service_item)
|
||||||
if old_item and self.is_live and old_item.is_capable(ItemCapabilities.ProvidesOwnDisplay):
|
if old_item and self.is_live and old_item.is_capable(ItemCapabilities.ProvidesOwnDisplay):
|
||||||
@ -1417,11 +1419,11 @@ class SlideController(DisplayController, RegistryProperties):
|
|||||||
|
|
||||||
class PreviewController(RegistryMixin, OpenLPMixin, SlideController):
|
class PreviewController(RegistryMixin, OpenLPMixin, SlideController):
|
||||||
"""
|
"""
|
||||||
Set up the Live Controller.
|
Set up the Preview Controller.
|
||||||
"""
|
"""
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
"""
|
"""
|
||||||
Set up the general Controller.
|
Set up the base Controller as a preview.
|
||||||
"""
|
"""
|
||||||
super(PreviewController, self).__init__(parent)
|
super(PreviewController, self).__init__(parent)
|
||||||
self.split = 0
|
self.split = 0
|
||||||
@ -1441,7 +1443,7 @@ class LiveController(RegistryMixin, OpenLPMixin, SlideController):
|
|||||||
"""
|
"""
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
"""
|
"""
|
||||||
Set up the general Controller.
|
Set up the base Controller as a live.
|
||||||
"""
|
"""
|
||||||
super(LiveController, self).__init__(parent)
|
super(LiveController, self).__init__(parent)
|
||||||
self.is_live = True
|
self.is_live = True
|
||||||
|
@ -27,7 +27,7 @@ from PyQt4 import QtCore, QtGui
|
|||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
from openlp.core import Registry
|
from openlp.core import Registry
|
||||||
from openlp.core.lib import ServiceItemAction
|
from openlp.core.lib import ServiceItemAction
|
||||||
from openlp.core.ui import SlideController
|
from openlp.core.ui import SlideController, LiveController, PreviewController
|
||||||
from openlp.core.ui.slidecontroller import InfoLabel, WIDE_MENU, NON_TEXT_MENU
|
from openlp.core.ui.slidecontroller import InfoLabel, WIDE_MENU, NON_TEXT_MENU
|
||||||
|
|
||||||
from tests.functional import MagicMock, patch
|
from tests.functional import MagicMock, patch
|
||||||
@ -84,24 +84,24 @@ class TestSlideController(TestCase):
|
|||||||
# THEN: then call set up the toolbar to blank the display screen.
|
# THEN: then call set up the toolbar to blank the display screen.
|
||||||
toolbar.set_widget_visible.assert_called_with(NON_TEXT_MENU, True)
|
toolbar.set_widget_visible.assert_called_with(NON_TEXT_MENU, True)
|
||||||
|
|
||||||
def receive_spin_delay_test(self):
|
@patch('openlp.core.ui.slidecontroller.Settings')
|
||||||
|
def receive_spin_delay_test(self, MockedSettings):
|
||||||
"""
|
"""
|
||||||
Test that the spin box is updated accordingly after a call to receive_spin_delay()
|
Test that the spin box is updated accordingly after a call to receive_spin_delay()
|
||||||
"""
|
"""
|
||||||
with patch('openlp.core.ui.slidecontroller.Settings') as MockedSettings:
|
# GIVEN: A new SlideController instance.
|
||||||
# GIVEN: A new SlideController instance.
|
mocked_value = MagicMock(return_value=1)
|
||||||
mocked_value = MagicMock(return_value=1)
|
MockedSettings.return_value = MagicMock(value=mocked_value)
|
||||||
MockedSettings.return_value = MagicMock(value=mocked_value)
|
mocked_delay_spin_box = MagicMock()
|
||||||
mocked_delay_spin_box = MagicMock()
|
slide_controller = SlideController(None)
|
||||||
slide_controller = SlideController(None)
|
slide_controller.delay_spin_box = mocked_delay_spin_box
|
||||||
slide_controller.delay_spin_box = mocked_delay_spin_box
|
|
||||||
|
|
||||||
# WHEN: The receive_spin_delay() method is called
|
# WHEN: The receive_spin_delay() method is called
|
||||||
slide_controller.receive_spin_delay()
|
slide_controller.receive_spin_delay()
|
||||||
|
|
||||||
# THEN: The Settings()value() and delay_spin_box.setValue() methods should have been called correctly
|
# THEN: The Settings()value() and delay_spin_box.setValue() methods should have been called correctly
|
||||||
mocked_value.assert_called_with('core/loop delay')
|
mocked_value.assert_called_with('core/loop delay')
|
||||||
mocked_delay_spin_box.setValue.assert_called_with(1)
|
mocked_delay_spin_box.setValue.assert_called_with(1)
|
||||||
|
|
||||||
def toggle_display_blank_test(self):
|
def toggle_display_blank_test(self):
|
||||||
"""
|
"""
|
||||||
@ -267,25 +267,25 @@ class TestSlideController(TestCase):
|
|||||||
mocked_keypress_queue.append.assert_called_once_with(ServiceItemAction.Next)
|
mocked_keypress_queue.append.assert_called_once_with(ServiceItemAction.Next)
|
||||||
mocked_process_queue.assert_called_once_with()
|
mocked_process_queue.assert_called_once_with()
|
||||||
|
|
||||||
def update_slide_limits_test(self):
|
@patch('openlp.core.ui.slidecontroller.Settings')
|
||||||
|
def update_slide_limits_test(self, MockedSettings):
|
||||||
"""
|
"""
|
||||||
Test that calling the update_slide_limits() method updates the slide limits
|
Test that calling the update_slide_limits() method updates the slide limits
|
||||||
"""
|
"""
|
||||||
# GIVEN: A mocked out Settings object, a new SlideController and a mocked out main_window
|
# GIVEN: A mocked out Settings object, a new SlideController and a mocked out main_window
|
||||||
with patch('openlp.core.ui.slidecontroller.Settings') as MockedSettings:
|
mocked_value = MagicMock(return_value=10)
|
||||||
mocked_value = MagicMock(return_value=10)
|
MockedSettings.return_value = MagicMock(value=mocked_value)
|
||||||
MockedSettings.return_value = MagicMock(value=mocked_value)
|
mocked_main_window = MagicMock(advanced_settings_section='advanced')
|
||||||
mocked_main_window = MagicMock(advanced_settings_section='advanced')
|
Registry.create()
|
||||||
Registry.create()
|
Registry().register('main_window', mocked_main_window)
|
||||||
Registry().register('main_window', mocked_main_window)
|
slide_controller = SlideController(None)
|
||||||
slide_controller = SlideController(None)
|
|
||||||
|
|
||||||
# WHEN: update_slide_limits() is called
|
# WHEN: update_slide_limits() is called
|
||||||
slide_controller.update_slide_limits()
|
slide_controller.update_slide_limits()
|
||||||
|
|
||||||
# THEN: The value of slide_limits should be 10
|
# THEN: The value of slide_limits should be 10
|
||||||
mocked_value.assert_called_once_with('advanced/slide limits')
|
mocked_value.assert_called_once_with('advanced/slide limits')
|
||||||
self.assertEqual(10, slide_controller.slide_limits, 'Slide limits should have been updated to 10')
|
self.assertEqual(10, slide_controller.slide_limits, 'Slide limits should have been updated to 10')
|
||||||
|
|
||||||
def enable_tool_bar_live_test(self):
|
def enable_tool_bar_live_test(self):
|
||||||
"""
|
"""
|
||||||
@ -522,7 +522,8 @@ class TestSlideController(TestCase):
|
|||||||
# THEN: It should have exited early
|
# THEN: It should have exited early
|
||||||
self.assertEqual(0, mocked_item.is_command.call_count, 'The service item should have not been called')
|
self.assertEqual(0, mocked_item.is_command.call_count, 'The service item should have not been called')
|
||||||
|
|
||||||
def on_slide_selected_index_service_item_command_test(self):
|
@patch.object(Registry, 'execute')
|
||||||
|
def on_slide_selected_index_service_item_command_test(self, mocked_execute):
|
||||||
"""
|
"""
|
||||||
Test that when there is a command service item, the command is executed
|
Test that when there is a command service item, the command is executed
|
||||||
"""
|
"""
|
||||||
@ -533,17 +534,16 @@ class TestSlideController(TestCase):
|
|||||||
mocked_update_preview = MagicMock()
|
mocked_update_preview = MagicMock()
|
||||||
mocked_preview_widget = MagicMock()
|
mocked_preview_widget = MagicMock()
|
||||||
mocked_slide_selected = MagicMock()
|
mocked_slide_selected = MagicMock()
|
||||||
with patch.object(Registry, 'execute') as mocked_execute:
|
Registry.create()
|
||||||
Registry.create()
|
slide_controller = SlideController(None)
|
||||||
slide_controller = SlideController(None)
|
slide_controller.service_item = mocked_item
|
||||||
slide_controller.service_item = mocked_item
|
slide_controller.update_preview = mocked_update_preview
|
||||||
slide_controller.update_preview = mocked_update_preview
|
slide_controller.preview_widget = mocked_preview_widget
|
||||||
slide_controller.preview_widget = mocked_preview_widget
|
slide_controller.slide_selected = mocked_slide_selected
|
||||||
slide_controller.slide_selected = mocked_slide_selected
|
slide_controller.is_live = True
|
||||||
slide_controller.is_live = True
|
|
||||||
|
|
||||||
# WHEN: The method is called
|
# WHEN: The method is called
|
||||||
slide_controller.on_slide_selected_index([9])
|
slide_controller.on_slide_selected_index([9])
|
||||||
|
|
||||||
# THEN: It should have sent a notification
|
# THEN: It should have sent a notification
|
||||||
mocked_item.is_command.assert_called_once_with()
|
mocked_item.is_command.assert_called_once_with()
|
||||||
@ -552,7 +552,8 @@ class TestSlideController(TestCase):
|
|||||||
self.assertEqual(0, mocked_preview_widget.change_slide.call_count, 'Change slide should not have been called')
|
self.assertEqual(0, mocked_preview_widget.change_slide.call_count, 'Change slide should not have been called')
|
||||||
self.assertEqual(0, mocked_slide_selected.call_count, 'slide_selected should not have been called')
|
self.assertEqual(0, mocked_slide_selected.call_count, 'slide_selected should not have been called')
|
||||||
|
|
||||||
def on_slide_selected_index_service_item_not_command_test(self):
|
@patch.object(Registry, 'execute')
|
||||||
|
def on_slide_selected_index_service_item_not_command_test(self, mocked_execute):
|
||||||
"""
|
"""
|
||||||
Test that when there is a service item but it's not a command, the preview widget is updated
|
Test that when there is a service item but it's not a command, the preview widget is updated
|
||||||
"""
|
"""
|
||||||
@ -563,16 +564,15 @@ class TestSlideController(TestCase):
|
|||||||
mocked_update_preview = MagicMock()
|
mocked_update_preview = MagicMock()
|
||||||
mocked_preview_widget = MagicMock()
|
mocked_preview_widget = MagicMock()
|
||||||
mocked_slide_selected = MagicMock()
|
mocked_slide_selected = MagicMock()
|
||||||
with patch.object(Registry, 'execute') as mocked_execute:
|
Registry.create()
|
||||||
Registry.create()
|
slide_controller = SlideController(None)
|
||||||
slide_controller = SlideController(None)
|
slide_controller.service_item = mocked_item
|
||||||
slide_controller.service_item = mocked_item
|
slide_controller.update_preview = mocked_update_preview
|
||||||
slide_controller.update_preview = mocked_update_preview
|
slide_controller.preview_widget = mocked_preview_widget
|
||||||
slide_controller.preview_widget = mocked_preview_widget
|
slide_controller.slide_selected = mocked_slide_selected
|
||||||
slide_controller.slide_selected = mocked_slide_selected
|
|
||||||
|
|
||||||
# WHEN: The method is called
|
# WHEN: The method is called
|
||||||
slide_controller.on_slide_selected_index([7])
|
slide_controller.on_slide_selected_index([7])
|
||||||
|
|
||||||
# THEN: It should have sent a notification
|
# THEN: It should have sent a notification
|
||||||
mocked_item.is_command.assert_called_once_with()
|
mocked_item.is_command.assert_called_once_with()
|
||||||
@ -642,20 +642,47 @@ class TestInfoLabel(TestCase):
|
|||||||
elided_test_string = metrics.elidedText(test_string, QtCore.Qt.ElideRight, label_width)
|
elided_test_string = metrics.elidedText(test_string, QtCore.Qt.ElideRight, label_width)
|
||||||
mocked_qpainter().drawText.assert_called_once_with(mocked_rect(), QtCore.Qt.AlignLeft, elided_test_string)
|
mocked_qpainter().drawText.assert_called_once_with(mocked_rect(), QtCore.Qt.AlignLeft, elided_test_string)
|
||||||
|
|
||||||
def set_text_test(self):
|
@patch('builtins.super')
|
||||||
|
def set_text_test(self, mocked_super):
|
||||||
"""
|
"""
|
||||||
Test the reimplemented setText method
|
Test the reimplemented setText method
|
||||||
"""
|
"""
|
||||||
with patch('builtins.super') as mocked_super:
|
# GIVEN: An instance of InfoLabel and mocked setToolTip method
|
||||||
|
info_label = InfoLabel()
|
||||||
|
set_tool_tip_mock = MagicMock()
|
||||||
|
info_label.setToolTip = set_tool_tip_mock
|
||||||
|
|
||||||
# GIVEN: An instance of InfoLabel and mocked setToolTip method
|
# WHEN: Calling the instance method setText
|
||||||
info_label = InfoLabel()
|
info_label.setText('Label Text')
|
||||||
set_tool_tip_mock = MagicMock()
|
|
||||||
info_label.setToolTip = set_tool_tip_mock
|
|
||||||
|
|
||||||
# WHEN: Calling the instance method setText
|
# THEN: The setToolTip and super class setText methods should have been called with the same text
|
||||||
info_label.setText('Label Text')
|
set_tool_tip_mock.assert_called_once_with('Label Text')
|
||||||
|
mocked_super().setText.assert_called_once_with('Label Text')
|
||||||
|
|
||||||
# THEN: The setToolTip and super class setText methods should have been called with the same text
|
class TestLiveController(TestCase):
|
||||||
set_tool_tip_mock.assert_called_once_with('Label Text')
|
|
||||||
mocked_super().setText.assert_called_once_with('Label Text')
|
def initial_live_controller_test(self):
|
||||||
|
"""
|
||||||
|
Test the initial live slide controller state .
|
||||||
|
"""
|
||||||
|
# GIVEN: A new SlideController instance.
|
||||||
|
Registry.create()
|
||||||
|
live_controller = LiveController(None)
|
||||||
|
|
||||||
|
# WHEN: the default controller is built.
|
||||||
|
# THEN: The controller should not be a live controller.
|
||||||
|
self.assertEqual(live_controller.is_live, True, 'The slide controller should be a live controller')
|
||||||
|
|
||||||
|
class TestPreviewLiveController(TestCase):
|
||||||
|
|
||||||
|
def initial_preview_controller_test(self):
|
||||||
|
"""
|
||||||
|
Test the initial preview slide controller state.
|
||||||
|
"""
|
||||||
|
# GIVEN: A new SlideController instance.
|
||||||
|
Registry.create()
|
||||||
|
preview_controller = PreviewController(None)
|
||||||
|
|
||||||
|
# WHEN: the default controller is built.
|
||||||
|
# THEN: The controller should not be a live controller.
|
||||||
|
self.assertEqual(preview_controller.is_live, False, 'The slide controller should be a Preview controller')
|
||||||
|
Loading…
Reference in New Issue
Block a user