← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~phill-ridout/openlp/bug122534_retake into lp:openlp

 

Phill has proposed merging lp:~phill-ridout/openlp/bug122534_retake into lp:openlp.

Requested reviews:
  OpenLP Core (openlp-core)
Related bugs:
  Bug #1222534 in OpenLP: "KeyError when "Allow presentation application to be overridden" and Spanish language is selected"
  https://bugs.launchpad.net/openlp/+bug/1222534

For more details, see:
https://code.launchpad.net/~phill-ridout/openlp/bug122534_retake/+merge/237335

lp:~phill-ridout/openlp/bug122534_retake (revision 2423)
[SUCCESS] http://ci.openlp.org/job/Branch-01-Pull/663/
[SUCCESS] http://ci.openlp.org/job/Branch-02-Functional-Tests/611/
[SUCCESS] http://ci.openlp.org/job/Branch-03-Interface-Tests/555/
[SUCCESS] http://ci.openlp.org/job/Branch-04a-Windows_Functional_Tests/504/
[SUCCESS] http://ci.openlp.org/job/Branch-04b-Windows_Interface_Tests/113/
[SUCCESS] http://ci.openlp.org/job/Branch-05a-Code_Analysis/320/
[SUCCESS] http://ci.openlp.org/job/Branch-05b-Test_Coverage/194/

see https://code.launchpad.net/~phill-ridout/openlp/bug1222534/+merge/236962 for more details
-- 
https://code.launchpad.net/~phill-ridout/openlp/bug122534_retake/+merge/237335
Your team OpenLP Core is requested to review the proposed merge of lp:~phill-ridout/openlp/bug122534_retake into lp:openlp.
=== modified file 'openlp/plugins/presentations/lib/mediaitem.py'
--- openlp/plugins/presentations/lib/mediaitem.py	2014-08-25 20:04:33 +0000
+++ openlp/plugins/presentations/lib/mediaitem.py	2014-10-06 19:55:35 +0000
@@ -145,7 +145,7 @@
             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 @@
                 (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

=== modified file 'tests/functional/openlp_plugins/presentations/test_presentationcontroller.py'
--- tests/functional/openlp_plugins/presentations/test_presentationcontroller.py	2014-07-15 10:02:56 +0000
+++ tests/functional/openlp_plugins/presentations/test_presentationcontroller.py	2014-10-06 19:55:35 +0000
@@ -33,7 +33,7 @@
 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 @@
     """
     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 @@
 
             # 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 reset mock_setup and mocked controller
+        self.mock_setup.reset()
+
+        # WHEN: Creating an instance of PresentationDocument
+        PresentationDocument(self.mock_controller, 'Name')
+
+        # THEN: PresentationDocument.__init__ should have been called with the correct arguments
+        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_patcher and patched get_thumbnail_folder method
+
+        # WHEN: Creating an instance of PresentationDocument
+        PresentationDocument(self.mock_controller, 'Name')
+
+        # THEN: check_directory_exists should have been called with the correct arguments
+        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: False should be returned
+        self.assertFalse(result, "PresentationDocument.load_presentation should return false.")
+
+    def get_file_name_test(self):
+        """
+        Test the get_file_name method.
+        """
+
+        # GIVEN: A mocked out os.path.split with specified return value, 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: The file name should have been returned
+        self.assertEqual(result, 'file.ext')


Follow ups