diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 45076e3f8..eaa96de48 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -1330,7 +1330,6 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi """ for item_count, item in enumerate(self.service_items): if item['service_item'].edit_id == new_item.edit_id and item['service_item'].name == new_item.name: - new_item.create_slides() new_item.merge(item['service_item']) item['service_item'] = new_item self.repaint_service_list(item_count + 1, 0) diff --git a/tests/interfaces/openlp_core/ui/test_servicemanager.py b/tests/interfaces/openlp_core/ui/test_servicemanager.py index 67174be9a..0c07e2c28 100644 --- a/tests/interfaces/openlp_core/ui/test_servicemanager.py +++ b/tests/interfaces/openlp_core/ui/test_servicemanager.py @@ -419,6 +419,21 @@ class TestServiceManager(TestCase, TestMixin): # THEN the on_move_selection_up function should have been called. self.service_manager.on_move_selection_up.assert_called_once_with() + def test_delete_selection_on_delete_key(self): + """ + Test that a delete key press event calls the on_delete_from_service function + """ + # GIVEN a mocked on_delete_from_service function + self.service_manager.on_delete_from_service = MagicMock() + + # WHEN the delete key event is called + self.service_manager.setup_ui(self.service_manager) + event = QtGui.QKeyEvent(QtCore.QEvent.KeyPress, QtCore.Qt.Key_Delete, QtCore.Qt.NoModifier) + self.service_manager.service_manager_list.keyPressEvent(event) + + # THEN the on_delete_from_service function should have been called. + self.service_manager.on_delete_from_service.assert_called_once_with() + def _setup_service_manager_list(self): self.service_manager.expanded = MagicMock() self.service_manager.collapsed = MagicMock() @@ -496,3 +511,35 @@ class TestServiceManager(TestCase, TestMixin): assert self.service_manager.service_manager_list.currentItem() == song_item, \ 'Top item should have been selected' self.service_manager.collapsed.assert_called_once_with(song_item) + + def test_replace_service_item(self): + """ + Tests that the replace_service_item function replaces items as expected + """ + # GIVEN a service item list and a new item which name and edit_id match a service item + self.service_manager.repaint_service_list = MagicMock() + Registry().register('live_controller', MagicMock()) + item1 = MagicMock() + item1.edit_id = 'abcd' + item1.name = 'itemA' + item2 = MagicMock() + item2.edit_id = 'abcd' + item2.name = 'itemB' + item3 = MagicMock() + item3.edit_id = 'cfgh' + item3.name = 'itemA' + self.service_manager.service_items = [ + {'service_item': item1}, + {'service_item': item2}, + {'service_item': item3} + ] + new_item = MagicMock() + new_item.edit_id = 'abcd' + new_item.name = 'itemA' + + # WHEN replace_service_item is called + self.service_manager.replace_service_item(new_item) + + # THEN new_item should replace item1, and only replaces that one item + assert self.service_manager.service_items[0]['service_item'] == new_item + new_item.merge.assert_called_once_with(item1)