diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index 5467d117d..661f8f906 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -145,7 +145,7 @@ class PresentationMediaItem(MediaManagerItem): if self.controllers[item].enabled(): self.display_type_combo_box.addItem(item) if self.display_type_combo_box.count() > 1: - self.display_type_combo_box.insertItem(0, self.automatic) + self.display_type_combo_box.insertItem(0, self.automatic, userData='automatic') self.display_type_combo_box.setCurrentIndex(0) if Settings().value(self.settings_section + '/override app') == QtCore.Qt.Checked: self.presentation_widget.show() @@ -313,7 +313,7 @@ class PresentationMediaItem(MediaManagerItem): (path, name) = os.path.split(filename) service_item.title = name if os.path.exists(filename): - if service_item.processor == self.automatic: + if self.display_type_combo_box.itemData(self.display_type_combo_box.currentIndex()) == 'automatic': service_item.processor = self.find_controller_by_type(filename) if not service_item.processor: return False diff --git a/tests/functional/openlp_plugins/presentations/test_presentationcontroller.py b/tests/functional/openlp_plugins/presentations/test_presentationcontroller.py index 0d20018c9..52723121d 100644 --- a/tests/functional/openlp_plugins/presentations/test_presentationcontroller.py +++ b/tests/functional/openlp_plugins/presentations/test_presentationcontroller.py @@ -33,7 +33,7 @@ classes and related methods. from unittest import TestCase import os from openlp.plugins.presentations.lib.presentationcontroller import PresentationController, PresentationDocument -from tests.functional import MagicMock, patch, mock_open +from tests.functional import MagicMock, mock_open, patch FOLDER_TO_PATCH = 'openlp.plugins.presentations.lib.presentationcontroller.PresentationDocument.get_thumbnail_folder' @@ -42,6 +42,19 @@ class TestPresentationController(TestCase): """ Test the PresentationController. """ + # TODO: Items left to test + # PresentationController + # __init__ + # enabled + # is_available + # check_available + # start_process + # kill + # add_document + # remove_doc + # close_presentation + # _get_plugin_manager + def setUp(self): mocked_plugin = MagicMock() mocked_plugin.settings_section = 'presentations' @@ -164,3 +177,124 @@ class TestPresentationController(TestCase): # THEN: it should return two empty lists self.assertIs(type(result_titles), list, 'result_titles should be a list') + + +class TestPresentationDocument(TestCase): + """ + Test the PresentationDocument Class + """ + # TODO: Items left to test + # PresentationDocument + # __init__ + # presentation_deleted + # get_thumbnail_folder + # get_temp_folder + # check_thumbnails + # close_presentation + # is_active + # is_loaded + # blank_screen + # unblank_screen + # is_blank + # stop_presentation + # start_presentation + # get_slide_number + # get_slide_count + # goto_slide + # next_step + # previous_step + # convert_thumbnail + # get_thumbnail_path + # poll_slidenumber + # get_slide_text + # get_slide_notes + + def setUp(self): + """ + Set up the patches and mocks need for all tests. + """ + self.check_directory_exists_patcher = \ + patch('openlp.plugins.presentations.lib.presentationcontroller.check_directory_exists') + self.get_thumbnail_folder_patcher = \ + patch('openlp.plugins.presentations.lib.presentationcontroller.PresentationDocument.get_thumbnail_folder') + self.os_patcher = patch('openlp.plugins.presentations.lib.presentationcontroller.os') + self._setup_patcher = \ + patch('openlp.plugins.presentations.lib.presentationcontroller.PresentationDocument._setup') + + self.mock_check_directory_exists = self.check_directory_exists_patcher.start() + self.mock_get_thumbnail_folder = self.get_thumbnail_folder_patcher.start() + self.mock_os = self.os_patcher.start() + self.mock_setup = self._setup_patcher.start() + + self.mock_controller = MagicMock() + + self.mock_get_thumbnail_folder.return_value = 'returned/path/' + + def tearDown(self): + """ + Stop the patches + """ + self.check_directory_exists_patcher.stop() + self.get_thumbnail_folder_patcher.stop() + self.os_patcher.stop() + self._setup_patcher.stop() + + def initialise_presentation_document_test(self): + """ + Test the PresentationDocument __init__ method when initialising the PresentationDocument Class + """ + # GIVEN: A mocked setup method and mocked controller + self.mock_setup.reset() + + # WHEN: Creating an instance of PresentationDocument + PresentationDocument(self.mock_controller, 'Name') + + # THEN: PresentationDocument._setup should have been called with the argument 'Name' + self.mock_setup.assert_called_once_with('Name') + + def presentation_document_setup_test(self): + """ + Test the PresentationDocument _setup method when initialising the PresentationDocument Class + """ + self._setup_patcher.stop() + + # GIVEN: A mocked controller, patched check_directory_exists and get_thumbnail_folder methods + + # WHEN: Creating an instance of PresentationDocument + PresentationDocument(self.mock_controller, 'Name') + + # THEN: check_directory_exists should have been called with 'returned/path/' + self.mock_check_directory_exists.assert_called_once_with('returned/path/') + + self._setup_patcher.start() + + def load_presentation_test(self): + """ + Test the PresentationDocument.load_presentation method. + """ + + # GIVEN: An instance of PresentationDocument + instance = PresentationDocument(self.mock_controller, 'Name') + + # WHEN: Calling load_presentation() + result = instance.load_presentation() + + # THEN: load_presentation should return false + self.assertFalse(result, "PresentationDocument.load_presentation should return false.") + + def get_file_name_test(self): + """ + Test the PresentationDocument.get_file_name method. + """ + + # GIVEN: A mocked os.path.split which returns a list, an instance of PresentationDocument and + # arbitary file_path. + self.mock_os.path.split.return_value = ['directory', 'file.ext'] + instance = PresentationDocument(self.mock_controller, 'Name') + instance.file_path = 'filepath' + + # WHEN: Calling get_file_name + result = instance.get_file_name() + + # THEN: get_file_name should return 'file.ext' + self.assertEqual(result, 'file.ext')