← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~raoul-snyman/openlp/refactor-mock into lp:openlp

 

Raoul Snyman has proposed merging lp:~raoul-snyman/openlp/refactor-mock into lp:openlp.

Requested reviews:
  OpenLP Core (openlp-core)

For more details, see:
https://code.launchpad.net/~raoul-snyman/openlp/refactor-mock/+merge/323296

Mock comes with Python as of 3.3, and I don't think there is anyone using lower than 3.3, so let's use Python's mock directly now
-- 
Your team OpenLP Core is requested to review the proposed merge of lp:~raoul-snyman/openlp/refactor-mock into lp:openlp.
=== modified file 'tests/functional/openlp_core_common/test_actions.py'
--- tests/functional/openlp_core_common/test_actions.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_common/test_actions.py	2017-04-27 04:37:45 +0000
@@ -23,12 +23,13 @@
 Package to test the openlp.core.common.actions package.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock
 
 from PyQt5 import QtGui, QtCore, QtWidgets
 
 from openlp.core.common import Settings
 from openlp.core.common.actions import CategoryActionList, ActionList
-from tests.functional import MagicMock
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/functional/openlp_core_common/test_applocation.py'
--- tests/functional/openlp_core_common/test_applocation.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_common/test_applocation.py	2017-04-27 04:37:45 +0000
@@ -25,9 +25,9 @@
 import copy
 import os
 from unittest import TestCase
+from unittest.mock import patch
 
 from openlp.core.common import AppLocation, get_frozen_path
-from tests.functional import patch
 
 FILE_LIST = ['file1', 'file2', 'file3.txt', 'file4.txt', 'file5.mp3', 'file6.mp3']
 

=== modified file 'tests/functional/openlp_core_common/test_common.py'
--- tests/functional/openlp_core_common/test_common.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_common/test_common.py	2017-04-27 04:37:45 +0000
@@ -22,12 +22,11 @@
 """
 Functional tests to test the AppLocation class and related methods.
 """
-
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from openlp.core.common import check_directory_exists, de_hump, trace_error_handler, translate, is_win, is_macosx, \
     is_linux, clean_button_text
-from tests.functional import MagicMock, patch
 
 
 class TestCommonFunctions(TestCase):

=== modified file 'tests/functional/openlp_core_common/test_httputils.py'
--- tests/functional/openlp_core_common/test_httputils.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_common/test_httputils.py	2017-04-27 04:37:45 +0000
@@ -26,10 +26,10 @@
 import tempfile
 import socket
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from openlp.core.common.httputils import get_user_agent, get_web_page, get_url_file_size, url_get_file
 
-from tests.functional import MagicMock, patch
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/functional/openlp_core_common/test_init.py'
--- tests/functional/openlp_core_common/test_init.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_common/test_init.py	2017-04-27 04:37:45 +0000
@@ -25,10 +25,11 @@
 import os
 from io import BytesIO
 from unittest import TestCase
+from unittest.mock import MagicMock, PropertyMock, call, patch
 
 from openlp.core.common import add_actions, clean_filename, delete_file, get_file_encoding, get_filesystem_encoding,  \
     get_uno_command, get_uno_instance, split_filename
-from tests.functional import MagicMock, PropertyMock, call, patch
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/functional/openlp_core_common/test_languagemanager.py'
--- tests/functional/openlp_core_common/test_languagemanager.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_common/test_languagemanager.py	2017-04-27 04:37:45 +0000
@@ -23,8 +23,8 @@
 Functional tests to test the AppLocation class and related methods.
 """
 from unittest import TestCase
+from unittest.mock import patch
 
-from tests.functional import patch
 from openlp.core.common.languagemanager import get_locale_key, get_natural_key
 
 

=== modified file 'tests/functional/openlp_core_common/test_registry.py'
--- tests/functional/openlp_core_common/test_registry.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_common/test_registry.py	2017-04-27 04:37:45 +0000
@@ -24,9 +24,9 @@
 """
 import os
 from unittest import TestCase
+from unittest.mock import MagicMock
 
 from openlp.core.common import Registry
-from tests.functional import MagicMock
 
 TEST_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), '../', '..', 'resources'))
 

=== modified file 'tests/functional/openlp_core_common/test_registryproperties.py'
--- tests/functional/openlp_core_common/test_registryproperties.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_common/test_registryproperties.py	2017-04-27 04:37:45 +0000
@@ -23,11 +23,10 @@
 Test the registry properties
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from openlp.core.common import Registry, RegistryProperties
 
-from tests.functional import MagicMock, patch
-
 
 class TestRegistryProperties(TestCase, RegistryProperties):
     """

=== modified file 'tests/functional/openlp_core_common/test_settings.py'
--- tests/functional/openlp_core_common/test_settings.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_common/test_settings.py	2017-04-27 04:37:45 +0000
@@ -23,10 +23,11 @@
 Package to test the openlp.core.lib.settings package.
 """
 from unittest import TestCase
+from unittest.mock import patch
 
 from openlp.core.common import Settings
 from openlp.core.common.settings import recent_files_conv
-from tests.functional import patch
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/functional/openlp_core_common/test_versionchecker.py'
--- tests/functional/openlp_core_common/test_versionchecker.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_common/test_versionchecker.py	2017-04-27 04:37:45 +0000
@@ -23,10 +23,11 @@
 Package to test the openlp.core.common.versionchecker package.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from openlp.core.common.settings import Settings
 from openlp.core.common.versionchecker import VersionThread
-from tests.functional import MagicMock, patch
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/functional/openlp_core_lib/test_db.py'
--- tests/functional/openlp_core_lib/test_db.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_lib/test_db.py	2017-04-27 04:37:45 +0000
@@ -24,13 +24,13 @@
 """
 import os
 from unittest import TestCase
+from unittest.mock import patch, MagicMock
 
 from sqlalchemy.pool import NullPool
 from sqlalchemy.orm.scoping import ScopedSession
 from sqlalchemy import MetaData
 
 from openlp.core.lib.db import init_db, get_upgrade_op, delete_database
-from tests.functional import patch, MagicMock
 
 
 class TestDB(TestCase):

=== modified file 'tests/functional/openlp_core_lib/test_file_dialog.py'
--- tests/functional/openlp_core_lib/test_file_dialog.py	2016-06-04 00:15:19 +0000
+++ tests/functional/openlp_core_lib/test_file_dialog.py	2017-04-27 04:37:45 +0000
@@ -1,11 +1,31 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection                                      #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2017 OpenLP Developers                                   #
+# --------------------------------------------------------------------------- #
+# This program is free software; you can redistribute it and/or modify it     #
+# under the terms of the GNU General Public License as published by the Free  #
+# Software Foundation; version 2 of the License.                              #
+#                                                                             #
+# This program is distributed in the hope that it will be useful, but WITHOUT #
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or       #
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for    #
+# more details.                                                               #
+#                                                                             #
+# You should have received a copy of the GNU General Public License along     #
+# with this program; if not, write to the Free Software Foundation, Inc., 59  #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA                          #
+###############################################################################
 """
 Package to test the openlp.core.lib.filedialog package.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, call, patch
 
-from openlp.core.common import UiStrings
 from openlp.core.lib.filedialog import FileDialog
-from tests.functional import MagicMock, call, patch
 
 
 class TestFileDialog(TestCase):

=== modified file 'tests/functional/openlp_core_lib/test_formattingtags.py'
--- tests/functional/openlp_core_lib/test_formattingtags.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_lib/test_formattingtags.py	2017-04-27 04:37:45 +0000
@@ -24,10 +24,9 @@
 """
 import copy
 from unittest import TestCase
+from unittest.mock import patch
 
 from openlp.core.lib import FormattingTags
-from tests.functional import patch
-
 
 TAG = {
     'end tag': '{/aa}',

=== modified file 'tests/functional/openlp_core_lib/test_htmlbuilder.py'
--- tests/functional/openlp_core_lib/test_htmlbuilder.py	2016-06-07 13:21:07 +0000
+++ tests/functional/openlp_core_lib/test_htmlbuilder.py	2017-04-27 04:37:45 +0000
@@ -1,8 +1,8 @@
 """
 Package to test the openlp.core.lib.htmlbuilder module.
 """
-
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from PyQt5 import QtCore, QtWebKit
 
@@ -10,7 +10,7 @@
 from openlp.core.lib.htmlbuilder import build_html, build_background_css, build_lyrics_css, build_lyrics_outline_css, \
     build_lyrics_format_css, build_footer_css, webkit_version
 from openlp.core.lib.theme import HorizontalType, VerticalType
-from tests.functional import MagicMock, patch
+
 from tests.helpers.testmixin import TestMixin
 
 HTML = """

=== modified file 'tests/functional/openlp_core_lib/test_image_manager.py'
--- tests/functional/openlp_core_lib/test_image_manager.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_lib/test_image_manager.py	2017-04-27 04:37:45 +0000
@@ -25,14 +25,15 @@
 import os
 import time
 from threading import Lock
-
 from unittest import TestCase
+from unittest.mock import patch
+
 from PyQt5 import QtGui
 
 from openlp.core.common import Registry
 from openlp.core.lib import ImageManager, ScreenList
 from openlp.core.lib.imagemanager import Priority
-from tests.functional import patch
+
 from tests.helpers.testmixin import TestMixin
 
 TEST_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', 'resources'))

=== modified file 'tests/functional/openlp_core_lib/test_lib.py'
--- tests/functional/openlp_core_lib/test_lib.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_lib/test_lib.py	2017-04-27 04:37:45 +0000
@@ -23,15 +23,14 @@
 Package to test the openlp.core.lib package.
 """
 import os
-
+from datetime import datetime, timedelta
 from unittest import TestCase
-from datetime import datetime, timedelta
+from unittest.mock import MagicMock, patch
 
 from PyQt5 import QtCore, QtGui
 
 from openlp.core.lib import build_icon, check_item_selected, clean_tags, create_thumb, create_separated_list, \
     expand_tags, get_text_file_string, image_to_byte, resize_image, str_to_bool, validate_thumb
-from tests.functional import MagicMock, patch
 
 TEST_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', 'resources'))
 

=== modified file 'tests/functional/openlp_core_lib/test_mediamanageritem.py'
--- tests/functional/openlp_core_lib/test_mediamanageritem.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_lib/test_mediamanageritem.py	2017-04-27 04:37:45 +0000
@@ -23,10 +23,10 @@
 Package to test the openlp.core.lib.mediamanageritem package.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from openlp.core.lib import MediaManagerItem
 
-from tests.functional import MagicMock, patch
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/functional/openlp_core_lib/test_pluginmanager.py'
--- tests/functional/openlp_core_lib/test_pluginmanager.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_lib/test_pluginmanager.py	2017-04-27 04:37:45 +0000
@@ -23,11 +23,11 @@
 Package to test the openlp.core.lib.pluginmanager package.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock
 
 from openlp.core.common import Registry, Settings
 from openlp.core.lib.pluginmanager import PluginManager
 from openlp.core.lib import PluginStatus
-from tests.functional import MagicMock
 
 
 class TestPluginManager(TestCase):

=== modified file 'tests/functional/openlp_core_lib/test_projector_pjlink1.py'
--- tests/functional/openlp_core_lib/test_projector_pjlink1.py	2016-08-07 20:51:35 +0000
+++ tests/functional/openlp_core_lib/test_projector_pjlink1.py	2017-04-27 04:37:45 +0000
@@ -22,14 +22,12 @@
 """
 Package to test the openlp.core.lib.projector.pjlink1 package.
 """
-
 from unittest import TestCase
+from unittest.mock import patch, MagicMock
 
 from openlp.core.lib.projector.pjlink1 import PJLink1
-from openlp.core.lib.projector.constants import E_PARAMETER, ERROR_STRING, S_OFF, S_STANDBY, S_WARMUP, S_ON, \
-    S_COOLDOWN, PJLINK_POWR_STATUS
+from openlp.core.lib.projector.constants import E_PARAMETER, ERROR_STRING, S_OFF, S_STANDBY, S_ON, PJLINK_POWR_STATUS
 
-from tests.functional import patch, MagicMock
 from tests.resources.projector.data import TEST_PIN, TEST_SALT, TEST_CONNECT_AUTHENTICATE, TEST_HASH
 
 pjlink_test = PJLink1(name='test', ip='127.0.0.1', pin=TEST_PIN, no_poll=True)

=== modified file 'tests/functional/openlp_core_lib/test_projectordb.py'
--- tests/functional/openlp_core_lib/test_projectordb.py	2017-01-27 14:44:11 +0000
+++ tests/functional/openlp_core_lib/test_projectordb.py	2017-04-27 04:37:45 +0000
@@ -27,11 +27,11 @@
 """
 import os
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from openlp.core.lib.projector.db import Manufacturer, Model, Projector, ProjectorDB, ProjectorSource, Source
 from openlp.core.lib.projector.constants import PJLINK_PORT
 
-from tests.functional import MagicMock, patch
 from tests.resources.projector.data import TEST_DB, TEST1_DATA, TEST2_DATA, TEST3_DATA
 
 

=== modified file 'tests/functional/openlp_core_lib/test_renderer.py'
--- tests/functional/openlp_core_lib/test_renderer.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_lib/test_renderer.py	2017-04-27 04:37:45 +0000
@@ -23,6 +23,7 @@
 Package to test the openlp.core.ui.renderer package.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from PyQt5 import QtCore
 
@@ -31,7 +32,6 @@
 from openlp.core.lib.renderer import words_split, get_start_tags
 from openlp.core.lib.theme import ThemeXML
 
-from tests.functional import MagicMock, patch
 
 SCREEN = {
     'primary': False,

=== modified file 'tests/functional/openlp_core_lib/test_screen.py'
--- tests/functional/openlp_core_lib/test_screen.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_lib/test_screen.py	2017-04-27 04:37:45 +0000
@@ -23,12 +23,12 @@
 Package to test the openlp.core.lib.screenlist package.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock
 
 from PyQt5 import QtCore, QtWidgets
 
 from openlp.core.common import Registry
 from openlp.core.lib import ScreenList
-from tests.functional import MagicMock
 
 SCREEN = {
     'primary': False,

=== modified file 'tests/functional/openlp_core_lib/test_serviceitem.py'
--- tests/functional/openlp_core_lib/test_serviceitem.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_lib/test_serviceitem.py	2017-04-27 04:37:45 +0000
@@ -24,13 +24,13 @@
 """
 import os
 from unittest import TestCase
-
-from tests.functional import MagicMock, patch
-from tests.utils import assert_length, convert_file_service_item
+from unittest.mock import MagicMock, patch
 
 from openlp.core.common import Registry, md5_hash
 from openlp.core.lib import ItemCapabilities, ServiceItem, ServiceItemType
 
+from tests.utils import assert_length, convert_file_service_item
+
 VERSE = 'The Lord said to {r}Noah{/r}: \n'\
         'There\'s gonna be a {su}floody{/su}, {sb}floody{/sb}\n'\
         'The Lord said to {g}Noah{/g}:\n'\

=== modified file 'tests/functional/openlp_core_lib/test_ui.py'
--- tests/functional/openlp_core_lib/test_ui.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_lib/test_ui.py	2017-04-27 04:37:45 +0000
@@ -22,14 +22,15 @@
 """
 Package to test the openlp.core.lib.ui package.
 """
+from unittest import TestCase
+from unittest.mock import MagicMock, patch
+
 from PyQt5 import QtCore, QtGui, QtWidgets
-from unittest import TestCase
 
 from openlp.core.common import UiStrings, translate
 from openlp.core.lib.ui import add_welcome_page, create_button_box, create_horizontal_adjusting_combo_box, \
     create_button, create_action, create_valign_selection_widgets, find_and_set_in_combo_box, create_widget_action, \
     set_case_insensitive_completer
-from tests.functional import MagicMock, patch
 
 
 class TestUi(TestCase):

=== modified file 'tests/functional/openlp_core_ui/test_aboutform.py'
--- tests/functional/openlp_core_ui/test_aboutform.py	2017-01-11 20:15:55 +0000
+++ tests/functional/openlp_core_ui/test_aboutform.py	2017-04-27 04:37:45 +0000
@@ -24,10 +24,10 @@
 """
 import datetime
 from unittest import TestCase
+from unittest.mock import patch
 
 from openlp.core.ui.aboutform import AboutForm
 
-from tests.functional import patch
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/functional/openlp_core_ui/test_exceptionform.py'
--- tests/functional/openlp_core_ui/test_exceptionform.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_ui/test_exceptionform.py	2017-04-27 04:37:45 +0000
@@ -26,15 +26,13 @@
 import os
 import tempfile
 from unittest import TestCase
-from unittest.mock import mock_open
+from unittest.mock import mock_open, patch
 
 from openlp.core.common import Registry
+from openlp.core.ui import exceptionform
 
-from tests.functional import patch
 from tests.helpers.testmixin import TestMixin
 
-from openlp.core.ui import exceptionform
-
 exceptionform.WEBKIT_VERSION = 'Webkit Test'
 exceptionform.MIGRATE_VERSION = 'Migrate Test'
 exceptionform.CHARDET_VERSION = 'CHARDET Test'

=== modified file 'tests/functional/openlp_core_ui/test_first_time.py'
--- tests/functional/openlp_core_ui/test_first_time.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_ui/test_first_time.py	2017-04-27 04:37:45 +0000
@@ -22,17 +22,16 @@
 """
 Package to test the openlp.core.utils.__init__ package.
 """
-
-from unittest import TestCase
 import urllib.request
 import urllib.error
 import urllib.parse
-
-from tests.functional import patch
+from unittest import TestCase
+from unittest.mock import patch
+
+from openlp.core.common.httputils import CONNECTION_RETRIES, get_web_page
+
 from tests.helpers.testmixin import TestMixin
 
-from openlp.core.common.httputils import CONNECTION_RETRIES, get_web_page
-
 
 class TestFirstTimeWizard(TestMixin, TestCase):
     """

=== modified file 'tests/functional/openlp_core_ui/test_firsttimeform.py'
--- tests/functional/openlp_core_ui/test_firsttimeform.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_ui/test_firsttimeform.py	2017-04-27 04:37:45 +0000
@@ -26,11 +26,11 @@
 import tempfile
 import urllib
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from openlp.core.common import Registry
 from openlp.core.ui.firsttimeform import FirstTimeForm
 
-from tests.functional import MagicMock, patch
 from tests.helpers.testmixin import TestMixin
 
 FAKE_CONFIG = b"""

=== modified file 'tests/functional/openlp_core_ui/test_formattingtagsform.py'
--- tests/functional/openlp_core_ui/test_formattingtagsform.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_ui/test_formattingtagsform.py	2017-04-27 04:37:45 +0000
@@ -23,8 +23,7 @@
 Package to test the openlp.core.ui.formattingtagsform package.
 """
 from unittest import TestCase
-
-from tests.functional import MagicMock, patch, call
+from unittest.mock import MagicMock, patch, call
 
 from openlp.core.ui.formattingtagform import FormattingTagForm
 

=== modified file 'tests/functional/openlp_core_ui/test_maindisplay.py'
--- tests/functional/openlp_core_ui/test_maindisplay.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_ui/test_maindisplay.py	2017-04-27 04:37:45 +0000
@@ -23,6 +23,7 @@
 Package to test the openlp.core.ui.slidecontroller package.
 """
 from unittest import TestCase, skipUnless
+from unittest.mock import MagicMock, patch
 
 from PyQt5 import QtCore
 
@@ -33,11 +34,9 @@
 from openlp.core.ui.maindisplay import TRANSPARENT_STYLESHEET, OPAQUE_STYLESHEET
 
 from tests.helpers.testmixin import TestMixin
-from tests.functional import MagicMock, patch
 
 if is_macosx():
     from ctypes import pythonapi, c_void_p, c_char_p, py_object
-
     from sip import voidptr
     from objc import objc_object
     from AppKit import NSMainMenuWindowLevel, NSWindowCollectionBehaviorManaged

=== modified file 'tests/functional/openlp_core_ui/test_mainwindow.py'
--- tests/functional/openlp_core_ui/test_mainwindow.py	2017-01-22 18:12:41 +0000
+++ tests/functional/openlp_core_ui/test_mainwindow.py	2017-04-27 04:37:45 +0000
@@ -23,8 +23,8 @@
 Package to test openlp.core.ui.mainwindow package.
 """
 import os
-
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from PyQt5 import QtWidgets
 
@@ -32,7 +32,6 @@
 from openlp.core.lib.ui import UiStrings
 from openlp.core.common.registry import Registry
 
-from tests.functional import MagicMock, patch
 from tests.helpers.testmixin import TestMixin
 from tests.utils.constants import TEST_RESOURCES_PATH
 

=== modified file 'tests/functional/openlp_core_ui/test_media.py'
--- tests/functional/openlp_core_ui/test_media.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_ui/test_media.py	2017-04-27 04:37:45 +0000
@@ -22,12 +22,13 @@
 """
 Package to test the openlp.core.ui package.
 """
+from unittest import TestCase
+from unittest.mock import patch
+
 from PyQt5 import QtCore
-from unittest import TestCase
 
 from openlp.core.ui.media import get_media_players, parse_optical_path
 
-from tests.functional import MagicMock, patch
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/functional/openlp_core_ui/test_servicemanager.py'
--- tests/functional/openlp_core_ui/test_servicemanager.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_ui/test_servicemanager.py	2017-04-27 04:37:45 +0000
@@ -24,15 +24,14 @@
 """
 import os
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 import PyQt5
 
 from openlp.core.common import Registry, ThemeLevel
-from openlp.core.ui.lib.toolbar import OpenLPToolbar
 from openlp.core.lib import ServiceItem, ServiceItemType, ItemCapabilities
 from openlp.core.ui import ServiceManager
-
-from tests.functional import MagicMock, patch
+from openlp.core.ui.lib.toolbar import OpenLPToolbar
 
 
 class TestServiceManager(TestCase):

=== modified file 'tests/functional/openlp_core_ui/test_settingsform.py'
--- tests/functional/openlp_core_ui/test_settingsform.py	2017-03-02 00:07:16 +0000
+++ tests/functional/openlp_core_ui/test_settingsform.py	2017-04-27 04:37:45 +0000
@@ -22,14 +22,14 @@
 """
 Package to test the openlp.core.ui.settingsform package.
 """
+from unittest import TestCase
+from unittest.mock import MagicMock, patch
+
 from PyQt5 import QtWidgets
-from unittest import TestCase
 
 from openlp.core.common import Registry
 from openlp.core.ui.settingsform import SettingsForm
 
-from tests.functional import MagicMock, patch
-
 
 class TestSettingsForm(TestCase):
 

=== modified file 'tests/functional/openlp_core_ui/test_shortcutlistdialog.py'
--- tests/functional/openlp_core_ui/test_shortcutlistdialog.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_ui/test_shortcutlistdialog.py	2017-04-27 04:37:45 +0000
@@ -22,12 +22,12 @@
 """
 Package to test the openlp.core.ui.shortcutlistdialog package.
 """
-from PyQt5 import QtCore, QtGui, QtWidgets
+from unittest.mock import MagicMock
+
+from PyQt5 import QtCore
 
 from openlp.core.ui.shortcutlistdialog import CaptureShortcutButton, ShortcutTreeWidget
 
-from tests.interfaces import MagicMock, patch
-
 
 def test_key_press_event():
     """

=== modified file 'tests/functional/openlp_core_ui/test_slidecontroller.py'
--- tests/functional/openlp_core_ui/test_slidecontroller.py	2017-03-28 05:15:05 +0000
+++ tests/functional/openlp_core_ui/test_slidecontroller.py	2017-04-27 04:37:45 +0000
@@ -22,16 +22,16 @@
 """
 Package to test the openlp.core.ui.slidecontroller package.
 """
+from unittest import TestCase
+from unittest.mock import MagicMock, patch
+
 from PyQt5 import QtCore, QtGui
 
-from unittest import TestCase
 from openlp.core import Registry
 from openlp.core.lib import ImageSource, ServiceItemAction
 from openlp.core.ui import SlideController, LiveController, PreviewController
 from openlp.core.ui.slidecontroller import InfoLabel, WIDE_MENU, NON_TEXT_MENU
 
-from tests.functional import MagicMock, patch
-
 
 class TestSlideController(TestCase):
 

=== modified file 'tests/functional/openlp_core_ui/test_themeform.py'
--- tests/functional/openlp_core_ui/test_themeform.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_ui/test_themeform.py	2017-04-27 04:37:45 +0000
@@ -22,13 +22,11 @@
 """
 Package to test the openlp.core.ui.themeform package.
 """
-
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from openlp.core.ui import ThemeForm
 
-from tests.functional import MagicMock, patch
-
 
 class TestThemeManager(TestCase):
     """

=== modified file 'tests/functional/openlp_core_ui/test_themetab.py'
--- tests/functional/openlp_core_ui/test_themetab.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_ui/test_themetab.py	2017-04-27 04:37:45 +0000
@@ -23,13 +23,13 @@
 Package to test the openlp.core.ui.ThemeTab package.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock
 
 from openlp.core.common import Registry
 from openlp.core.ui.themestab import ThemesTab
 from openlp.core.ui.settingsform import SettingsForm
 
 from tests.helpers.testmixin import TestMixin
-from tests.functional import MagicMock
 
 
 class TestThemeTab(TestCase, TestMixin):

=== modified file 'tests/functional/openlp_core_ui_lib/test_color_button.py'
--- tests/functional/openlp_core_ui_lib/test_color_button.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_ui_lib/test_color_button.py	2017-04-27 04:37:45 +0000
@@ -23,9 +23,9 @@
 This module contains tests for the openlp.core.lib.filedialog module
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, call, patch
 
 from openlp.core.ui.lib.colorbutton import ColorButton
-from tests.functional import MagicMock, call, patch
 
 
 class TestColorDialog(TestCase):

=== modified file 'tests/functional/openlp_core_ui_lib/test_listpreviewwidget.py'
--- tests/functional/openlp_core_ui_lib/test_listpreviewwidget.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_ui_lib/test_listpreviewwidget.py	2017-04-27 04:37:45 +0000
@@ -23,6 +23,7 @@
 Package to test the openlp.core.ui.lib.listpreviewwidget package.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, patch, call
 
 from PyQt5 import QtGui
 
@@ -30,8 +31,6 @@
 from openlp.core.ui.lib.listpreviewwidget import ListPreviewWidget
 from openlp.core.lib import ImageSource, ServiceItem
 
-from tests.functional import MagicMock, patch, call
-
 
 class TestListPreviewWidget(TestCase):
 

=== modified file 'tests/functional/openlp_core_ui_media/test_mediacontroller.py'
--- tests/functional/openlp_core_ui_media/test_mediacontroller.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_ui_media/test_mediacontroller.py	2017-04-27 04:37:45 +0000
@@ -23,12 +23,12 @@
 Package to test the openlp.core.ui.media package.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from openlp.core.ui.media.mediacontroller import MediaController
 from openlp.core.ui.media.mediaplayer import MediaPlayer
 from openlp.core.common import Registry
 
-from tests.functional import MagicMock, patch
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/functional/openlp_core_ui_media/test_systemplayer.py'
--- tests/functional/openlp_core_ui_media/test_systemplayer.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_ui_media/test_systemplayer.py	2017-04-27 04:37:45 +0000
@@ -23,6 +23,7 @@
 Package to test the openlp.core.ui.media.systemplayer package.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, call, patch
 
 from PyQt5 import QtCore, QtMultimedia
 
@@ -30,8 +31,6 @@
 from openlp.core.ui.media import MediaState
 from openlp.core.ui.media.systemplayer import SystemPlayer, CheckMediaWorker, ADDITIONAL_EXT
 
-from tests.functional import MagicMock, call, patch
-
 
 class TestSystemPlayer(TestCase):
     """

=== modified file 'tests/functional/openlp_core_ui_media/test_vlcplayer.py'
--- tests/functional/openlp_core_ui_media/test_vlcplayer.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_ui_media/test_vlcplayer.py	2017-04-27 04:37:45 +0000
@@ -26,12 +26,12 @@
 import sys
 from datetime import datetime, timedelta
 from unittest import TestCase, skip
+from unittest.mock import MagicMock, patch, call
 
 from openlp.core.common import Registry
 from openlp.core.ui.media import MediaState, MediaType
 from openlp.core.ui.media.vlcplayer import AUDIO_EXT, VIDEO_EXT, VlcPlayer, get_vlc
 
-from tests.functional import MagicMock, patch, call
 from tests.helpers import MockDateTime
 from tests.helpers.testmixin import TestMixin
 

=== modified file 'tests/functional/openlp_core_ui_media/test_webkitplayer.py'
--- tests/functional/openlp_core_ui_media/test_webkitplayer.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_core_ui_media/test_webkitplayer.py	2017-04-27 04:37:45 +0000
@@ -23,7 +23,7 @@
 Package to test the openlp.core.ui.media.webkitplayer package.
 """
 from unittest import TestCase
-from tests.functional import MagicMock, patch
+from unittest.mock import MagicMock, patch
 
 from openlp.core.ui.media.webkitplayer import WebkitPlayer
 

=== modified file 'tests/functional/openlp_plugins/alerts/test_manager.py'
--- tests/functional/openlp_plugins/alerts/test_manager.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/alerts/test_manager.py	2017-04-27 04:37:45 +0000
@@ -22,12 +22,11 @@
 """
 This module contains tests for the CSV Bible importer.
 """
-
 import os
 import json
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
-from tests.functional import MagicMock, patch
 from openlp.core.common.registry import Registry
 from openlp.plugins.alerts.lib.alertsmanager import AlertsManager
 

=== modified file 'tests/functional/openlp_plugins/bibles/test_bibleimport.py'
--- tests/functional/openlp_plugins/bibles/test_bibleimport.py	2016-09-09 21:47:29 +0000
+++ tests/functional/openlp_plugins/bibles/test_bibleimport.py	2017-04-27 04:37:45 +0000
@@ -22,18 +22,17 @@
 """
 This module contains tests for the bibleimport module.
 """
-
 from io import BytesIO
+from unittest import TestCase
+from unittest.mock import MagicMock, patch
+
 from lxml import etree, objectify
-
-from unittest import TestCase
 from PyQt5.QtWidgets import QDialog
 
 from openlp.core.common.languages import Language
 from openlp.core.lib.exceptions import ValidationError
 from openlp.plugins.bibles.lib.bibleimport import BibleImport
 from openlp.plugins.bibles.lib.db import BibleDB
-from tests.functional import MagicMock, patch
 
 
 class TestBibleImport(TestCase):

=== modified file 'tests/functional/openlp_plugins/bibles/test_bibleserver.py'
--- tests/functional/openlp_plugins/bibles/test_bibleserver.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/bibles/test_bibleserver.py	2017-04-27 04:37:45 +0000
@@ -23,9 +23,10 @@
 This module contains tests for the http module of the Bibles plugin.
 """
 from unittest import TestCase
+from unittest.mock import patch, MagicMock
+
 from bs4 import BeautifulSoup
 
-from tests.functional import patch, MagicMock
 from openlp.plugins.bibles.lib.importers.http import BSExtract
 
 # TODO: Items left to test

=== modified file 'tests/functional/openlp_plugins/bibles/test_lib.py'
--- tests/functional/openlp_plugins/bibles/test_lib.py	2017-02-18 07:23:15 +0000
+++ tests/functional/openlp_plugins/bibles/test_lib.py	2017-04-27 04:37:45 +0000
@@ -23,10 +23,11 @@
 This module contains tests for the lib submodule of the Bibles plugin.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from openlp.plugins.bibles import lib
 from openlp.plugins.bibles.lib import SearchResults, get_reference_match
-from tests.functional import MagicMock, patch
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/functional/openlp_plugins/bibles/test_opensongimport.py'
--- tests/functional/openlp_plugins/bibles/test_opensongimport.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/bibles/test_opensongimport.py	2017-04-27 04:37:45 +0000
@@ -22,19 +22,19 @@
 """
 This module contains tests for the OpenSong Bible importer.
 """
-
 import json
 import os
 from unittest import TestCase
+from unittest.mock import MagicMock, patch, call
 
 from lxml import objectify
 
-from tests.functional import MagicMock, patch, call
-from tests.helpers.testmixin import TestMixin
 from openlp.core.common import Registry
 from openlp.plugins.bibles.lib.importers.opensong import OpenSongBible, get_text, parse_chapter_number
 from openlp.plugins.bibles.lib.bibleimport import BibleImport
 
+from tests.helpers.testmixin import TestMixin
+
 TEST_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__),
                                          '..', '..', '..', 'resources', 'bibles'))
 

=== modified file 'tests/functional/openlp_plugins/bibles/test_osisimport.py'
--- tests/functional/openlp_plugins/bibles/test_osisimport.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/bibles/test_osisimport.py	2017-04-27 04:37:45 +0000
@@ -22,12 +22,11 @@
 """
 This module contains tests for the OSIS Bible importer.
 """
-
 import os
 import json
 from unittest import TestCase
+from unittest.mock import MagicMock, call, patch
 
-from tests.functional import MagicMock, call, patch
 from openlp.plugins.bibles.lib.bibleimport import BibleImport
 from openlp.plugins.bibles.lib.db import BibleDB
 from openlp.plugins.bibles.lib.importers.osis import OSISBible

=== modified file 'tests/functional/openlp_plugins/bibles/test_swordimport.py'
--- tests/functional/openlp_plugins/bibles/test_swordimport.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/bibles/test_swordimport.py	2017-04-27 04:37:45 +0000
@@ -26,13 +26,14 @@
 import os
 import json
 from unittest import TestCase, skipUnless
+from unittest.mock import MagicMock, patch
 
-from tests.functional import MagicMock, patch
 try:
     from openlp.plugins.bibles.lib.importers.sword import SwordBible
     HAS_PYSWORD = True
 except ImportError:
     HAS_PYSWORD = False
+
 from openlp.plugins.bibles.lib.db import BibleDB
 
 TEST_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__),

=== modified file 'tests/functional/openlp_plugins/bibles/test_wordprojectimport.py'
--- tests/functional/openlp_plugins/bibles/test_wordprojectimport.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/bibles/test_wordprojectimport.py	2017-04-27 04:37:45 +0000
@@ -22,15 +22,12 @@
 """
 This module contains tests for the WordProject Bible importer.
 """
-
 import os
-import json
 from unittest import TestCase
+from unittest.mock import MagicMock, patch, call
 
 from openlp.plugins.bibles.lib.importers.wordproject import WordProjectBible
-from openlp.plugins.bibles.lib.db import BibleDB
 
-from tests.functional import MagicMock, patch, call
 
 TEST_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__),
                                          '..', '..', '..', 'resources', 'bibles'))

=== modified file 'tests/functional/openlp_plugins/bibles/test_zefaniaimport.py'
--- tests/functional/openlp_plugins/bibles/test_zefaniaimport.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/bibles/test_zefaniaimport.py	2017-04-27 04:37:45 +0000
@@ -22,12 +22,11 @@
 """
 This module contains tests for the Zefania Bible importer.
 """
-
 import os
 import json
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
-from tests.functional import MagicMock, patch
 from openlp.plugins.bibles.lib.importers.zefania import ZefaniaBible
 from openlp.plugins.bibles.lib.db import BibleDB
 

=== modified file 'tests/functional/openlp_plugins/custom/test_mediaitem.py'
--- tests/functional/openlp_plugins/custom/test_mediaitem.py	2016-05-31 21:40:13 +0000
+++ tests/functional/openlp_plugins/custom/test_mediaitem.py	2017-04-27 04:37:45 +0000
@@ -1,15 +1,36 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection                                      #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2017 OpenLP Developers                                   #
+# --------------------------------------------------------------------------- #
+# This program is free software; you can redistribute it and/or modify it     #
+# under the terms of the GNU General Public License as published by the Free  #
+# Software Foundation; version 2 of the License.                              #
+#                                                                             #
+# This program is distributed in the hope that it will be useful, but WITHOUT #
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or       #
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for    #
+# more details.                                                               #
+#                                                                             #
+# You should have received a copy of the GNU General Public License along     #
+# with this program; if not, write to the Free Software Foundation, Inc., 59  #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA                          #
+###############################################################################
 """
 This module contains tests for the lib submodule of the Songs plugin.
 """
 from unittest import TestCase
+from unittest.mock import patch, MagicMock
 
 from PyQt5 import QtCore
 
-from openlp.core.common import Registry, Settings
+from openlp.core.common import Registry
 from openlp.core.lib import ServiceItem, PluginStatus
 from openlp.plugins.custom.lib import CustomMediaItem
-from openlp.plugins.custom.lib.db import CustomSlide
-from tests.functional import patch, MagicMock
+
 from tests.helpers.testmixin import TestMixin
 
 FOOTER = ['Arky Arky (Unknown)', 'Public Domain', 'CCLI 123456']

=== modified file 'tests/functional/openlp_plugins/images/test_imagetab.py'
--- tests/functional/openlp_plugins/images/test_imagetab.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/images/test_imagetab.py	2017-04-27 04:37:45 +0000
@@ -23,15 +23,15 @@
 This module contains tests for the lib submodule of the Images plugin.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
+
 from PyQt5 import QtWidgets
 
-from openlp.core.common import Settings
-
-from openlp.core.common import Registry
+from openlp.core.common import Registry, Settings
 from openlp.plugins.images.lib.db import ImageFilenames, ImageGroups
 from openlp.plugins.images.lib.mediaitem import ImageMediaItem
 from openlp.plugins.images.lib import ImageTab
-from tests.functional import MagicMock, patch
+
 from tests.helpers.testmixin import TestMixin
 
 __default_settings__ = {

=== modified file 'tests/functional/openlp_plugins/media/test_mediaitem.py'
--- tests/functional/openlp_plugins/media/test_mediaitem.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/media/test_mediaitem.py	2017-04-27 04:37:45 +0000
@@ -23,15 +23,13 @@
 Test the media plugin
 """
 from unittest import TestCase
-
-from openlp.core import Registry, Settings
-from openlp.plugins.media.mediaplugin import MediaPlugin
+from unittest.mock import MagicMock, patch
+
+from PyQt5 import QtCore
+
+from openlp.core import Settings
 from openlp.plugins.media.lib.mediaitem import MediaMediaItem
-from openlp.core.ui.media.mediacontroller import MediaController
-
-from PyQt5 import QtCore
-
-from tests.functional import MagicMock, patch
+
 from tests.helpers.testmixin import TestMixin
 
 __default_settings__ = {

=== modified file 'tests/functional/openlp_plugins/media/test_mediaplugin.py'
--- tests/functional/openlp_plugins/media/test_mediaplugin.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/media/test_mediaplugin.py	2017-04-27 04:37:45 +0000
@@ -23,11 +23,11 @@
 Test the media plugin
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from openlp.core import Registry
 from openlp.plugins.media.mediaplugin import MediaPlugin, process_check_binary
 
-from tests.functional import MagicMock, patch
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/functional/openlp_plugins/presentations/test_impresscontroller.py'
--- tests/functional/openlp_plugins/presentations/test_impresscontroller.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/presentations/test_impresscontroller.py	2017-04-27 04:37:45 +0000
@@ -23,19 +23,19 @@
 Functional tests to test the Impress class and related methods.
 """
 from unittest import TestCase
+from unittest.mock import patch, MagicMock
 import os
 import shutil
 from tempfile import mkdtemp
 
-from tests.functional import patch, MagicMock
-from tests.utils.constants import TEST_RESOURCES_PATH
-from tests.helpers.testmixin import TestMixin
-
 from openlp.core.common import Settings
 from openlp.plugins.presentations.lib.impresscontroller import \
     ImpressController, ImpressDocument, TextType
 from openlp.plugins.presentations.presentationplugin import __default_settings__
 
+from tests.utils.constants import TEST_RESOURCES_PATH
+from tests.helpers.testmixin import TestMixin
+
 
 class TestImpressController(TestCase, TestMixin):
     """

=== modified file 'tests/functional/openlp_plugins/presentations/test_mediaitem.py'
--- tests/functional/openlp_plugins/presentations/test_mediaitem.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/presentations/test_mediaitem.py	2017-04-27 04:37:45 +0000
@@ -23,10 +23,11 @@
 This module contains tests for the lib submodule of the Presentations plugin.
 """
 from unittest import TestCase
+from unittest.mock import patch, MagicMock, call
 
 from openlp.core.common import Registry
 from openlp.plugins.presentations.lib.mediaitem import PresentationMediaItem
-from tests.functional import patch, MagicMock, call
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/functional/openlp_plugins/presentations/test_messagelistener.py'
--- tests/functional/openlp_plugins/presentations/test_messagelistener.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/presentations/test_messagelistener.py	2017-04-27 04:37:45 +0000
@@ -23,11 +23,12 @@
 This module contains tests for the lib submodule of the Presentations plugin.
 """
 from unittest import TestCase
+from unittest.mock import patch, MagicMock
 
 from openlp.core.common import Registry
 from openlp.plugins.presentations.lib.mediaitem import MessageListener, PresentationMediaItem
 from openlp.plugins.presentations.lib.messagelistener import Controller
-from tests.functional import patch, MagicMock
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/functional/openlp_plugins/presentations/test_pdfcontroller.py'
--- tests/functional/openlp_plugins/presentations/test_pdfcontroller.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/presentations/test_pdfcontroller.py	2017-04-27 04:37:45 +0000
@@ -24,14 +24,16 @@
 """
 import os
 import shutil
+from tempfile import mkdtemp
 from unittest import TestCase, SkipTest
-from tempfile import mkdtemp
+from unittest.mock import MagicMock, patch
+
 from PyQt5 import QtCore, QtGui
 
 from openlp.plugins.presentations.lib.pdfcontroller import PdfController, PdfDocument
-from tests.functional import MagicMock, patch
 from openlp.core.common import Settings
 from openlp.core.lib import ScreenList
+
 from tests.utils.constants import TEST_RESOURCES_PATH
 from tests.helpers.testmixin import TestMixin
 

=== modified file 'tests/functional/openlp_plugins/presentations/test_powerpointcontroller.py'
--- tests/functional/openlp_plugins/presentations/test_powerpointcontroller.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/presentations/test_powerpointcontroller.py	2017-04-27 04:37:45 +0000
@@ -1,303 +1,303 @@
-# -*- coding: utf-8 -*-
-# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
-
-###############################################################################
-# OpenLP - Open Source Lyrics Projection                                      #
-# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2017 OpenLP Developers                                   #
-# --------------------------------------------------------------------------- #
-# This program is free software; you can redistribute it and/or modify it     #
-# under the terms of the GNU General Public License as published by the Free  #
-# Software Foundation; version 2 of the License.                              #
-#                                                                             #
-# This program is distributed in the hope that it will be useful, but WITHOUT #
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or       #
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for    #
-# more details.                                                               #
-#                                                                             #
-# You should have received a copy of the GNU General Public License along     #
-# with this program; if not, write to the Free Software Foundation, Inc., 59  #
-# Temple Place, Suite 330, Boston, MA 02111-1307 USA                          #
-###############################################################################
-"""
-Functional tests to test the PowerPointController class and related methods.
-"""
-import os
-import shutil
-from unittest import TestCase
-from tempfile import mkdtemp
-
-from tests.functional import patch, MagicMock
-from tests.helpers.testmixin import TestMixin
-from tests.utils.constants import TEST_RESOURCES_PATH
-
-from openlp.plugins.presentations.lib.powerpointcontroller import PowerpointController, PowerpointDocument,\
-    _get_text_from_shapes
-from openlp.core.common import is_win, Settings
-
-if is_win():
-    import pywintypes
-
-__default_settings__ = {
-    'presentations/powerpoint slide click advance': True
-}
-
-
-class TestPowerpointController(TestCase, TestMixin):
-    """
-    Test the PowerpointController Class
-    """
-
-    def setUp(self):
-        """
-        Set up the patches and mocks need for all tests.
-        """
-        self.setup_application()
-        self.build_settings()
-        self.mock_plugin = MagicMock()
-        self.temp_folder = mkdtemp()
-        self.mock_plugin.settings_section = self.temp_folder
-
-    def tearDown(self):
-        """
-        Stop the patches
-        """
-        self.destroy_settings()
-        shutil.rmtree(self.temp_folder)
-
-    def test_constructor(self):
-        """
-        Test the Constructor from the PowerpointController
-        """
-        # GIVEN: No presentation controller
-        controller = None
-
-        # WHEN: The presentation controller object is created
-        controller = PowerpointController(plugin=self.mock_plugin)
-
-        # THEN: The name of the presentation controller should be correct
-        self.assertEqual('Powerpoint', controller.name,
-                         'The name of the presentation controller should be correct')
-
-
-class TestPowerpointDocument(TestCase, TestMixin):
-    """
-    Test the PowerpointDocument Class
-    """
-
-    def setUp(self):
-        """
-        Set up the patches and mocks need for all tests.
-        """
-        self.setup_application()
-        self.build_settings()
-        self.mock_plugin = MagicMock()
-        self.temp_folder = mkdtemp()
-        self.mock_plugin.settings_section = self.temp_folder
-        self.powerpoint_document_stop_presentation_patcher = patch(
-            'openlp.plugins.presentations.lib.powerpointcontroller.PowerpointDocument.stop_presentation')
-        self.presentation_document_get_temp_folder_patcher = patch(
-            'openlp.plugins.presentations.lib.powerpointcontroller.PresentationDocument.get_temp_folder')
-        self.presentation_document_setup_patcher = patch(
-            'openlp.plugins.presentations.lib.powerpointcontroller.PresentationDocument._setup')
-        self.mock_powerpoint_document_stop_presentation = self.powerpoint_document_stop_presentation_patcher.start()
-        self.mock_presentation_document_get_temp_folder = self.presentation_document_get_temp_folder_patcher.start()
-        self.mock_presentation_document_setup = self.presentation_document_setup_patcher.start()
-        self.mock_controller = MagicMock()
-        self.mock_presentation = MagicMock()
-        self.mock_presentation_document_get_temp_folder.return_value = 'temp folder'
-        self.file_name = os.path.join(TEST_RESOURCES_PATH, 'presentations', 'test.pptx')
-        self.real_controller = PowerpointController(self.mock_plugin)
-        Settings().extend_default_settings(__default_settings__)
-
-    def tearDown(self):
-        """
-        Stop the patches
-        """
-        self.powerpoint_document_stop_presentation_patcher.stop()
-        self.presentation_document_get_temp_folder_patcher.stop()
-        self.presentation_document_setup_patcher.stop()
-        self.destroy_settings()
-        shutil.rmtree(self.temp_folder)
-
-    def test_show_error_msg(self):
-        """
-        Test the PowerpointDocument.show_error_msg() method gets called on com exception
-        """
-        if is_win():
-            # GIVEN: A PowerpointDocument with mocked controller and presentation
-            with patch('openlp.plugins.presentations.lib.powerpointcontroller.critical_error_message_box') as \
-                    mocked_critical_error_message_box:
-                instance = PowerpointDocument(self.mock_controller, self.mock_presentation)
-                instance.presentation = MagicMock()
-                instance.presentation.SlideShowWindow.View.GotoSlide = MagicMock(side_effect=pywintypes.com_error('1'))
-                instance.index_map[42] = 42
-
-                # WHEN: Calling goto_slide which will throw an exception
-                instance.goto_slide(42)
-
-                # THEN: mocked_critical_error_message_box should have been called
-                mocked_critical_error_message_box.assert_called_with('Error', 'An error occurred in the PowerPoint '
-                                                                     'integration and the presentation will be stopped.'
-                                                                     ' Restart the presentation if you wish to '
-                                                                     'present it.')
-
-    # add _test to the following if necessary
-    def verify_loading_document(self):
-        """
-        Test loading a document in PowerPoint
-        """
-        if is_win() and self.real_controller.check_available():
-            # GIVEN: A PowerpointDocument and a presentation
-            doc = PowerpointDocument(self.real_controller, self.file_name)
-
-            # WHEN: loading the filename
-            doc.load_presentation()
-            result = doc.is_loaded()
-
-            # THEN: result should be true
-            self.assertEqual(result, True, 'The result should be True')
-        else:
-            self.skipTest('Powerpoint not available, skipping test.')
-
-    def test_create_titles_and_notes(self):
-        """
-        Test creating the titles from PowerPoint
-        """
-        # GIVEN: mocked save_titles_and_notes, _get_text_from_shapes and two mocked slides
-        self.doc = PowerpointDocument(self.mock_controller, self.file_name)
-        self.doc.get_slide_count = MagicMock()
-        self.doc.get_slide_count.return_value = 2
-        self.doc.index_map = {1: 1, 2: 2}
-        self.doc.save_titles_and_notes = MagicMock()
-        self.doc._PowerpointDocument__get_text_from_shapes = MagicMock()
-        slide = MagicMock()
-        slide.Shapes.Title.TextFrame.TextRange.Text = 'SlideText'
-        pres = MagicMock()
-        pres.Slides = MagicMock(side_effect=[slide, slide])
-        self.doc.presentation = pres
-
-        # WHEN reading the titles and notes
-        self.doc.create_titles_and_notes()
-
-        # THEN the save should have been called exactly once with 2 titles and 2 notes
-        self.doc.save_titles_and_notes.assert_called_once_with(['SlideText\n', 'SlideText\n'], [' ', ' '])
-
-    def test_create_titles_and_notes_with_no_slides(self):
-        """
-        Test creating the titles from PowerPoint when it returns no slides
-        """
-        # GIVEN: mocked save_titles_and_notes, _get_text_from_shapes and two mocked slides
-        doc = PowerpointDocument(self.mock_controller, self.file_name)
-        doc.save_titles_and_notes = MagicMock()
-        doc._PowerpointDocument__get_text_from_shapes = MagicMock()
-        pres = MagicMock()
-        pres.Slides = []
-        doc.presentation = pres
-
-        # WHEN reading the titles and notes
-        doc.create_titles_and_notes()
-
-        # THEN the save should have been called exactly once with empty titles and notes
-        doc.save_titles_and_notes.assert_called_once_with([], [])
-
-    def test_get_text_from_shapes(self):
-        """
-        Test getting text from powerpoint shapes
-        """
-        # GIVEN: mocked shapes
-        shape = MagicMock()
-        shape.PlaceholderFormat.Type = 2
-        shape.HasTextFrame = shape.TextFrame.HasText = True
-        shape.TextFrame.TextRange.Text = 'slideText'
-        shapes = [shape, shape]
-
-        # WHEN: getting the text
-        result = _get_text_from_shapes(shapes)
-
-        # THEN: it should return the text
-        self.assertEqual(result, 'slideText\nslideText\n', 'result should match \'slideText\nslideText\n\'')
-
-    def test_get_text_from_shapes_with_no_shapes(self):
-        """
-        Test getting text from powerpoint shapes with no shapes
-        """
-        # GIVEN: empty shapes array
-        shapes = []
-
-        # WHEN: getting the text
-        result = _get_text_from_shapes(shapes)
-
-        # THEN: it should not fail but return empty string
-        self.assertEqual(result, '', 'result should be empty')
-
-    def test_goto_slide(self):
-        """
-        Test that goto_slide goes to next effect if the slide is already displayed
-        """
-        # GIVEN: A Document with mocked controller, presentation, and mocked functions get_slide_number and next_step
-        doc = PowerpointDocument(self.mock_controller, self.mock_presentation)
-        doc.presentation = MagicMock()
-        doc.presentation.SlideShowWindow.View.GetClickIndex.return_value = 1
-        doc.presentation.SlideShowWindow.View.GetClickCount.return_value = 2
-        doc.get_slide_number = MagicMock()
-        doc.get_slide_number.return_value = 1
-        doc.next_step = MagicMock()
-        doc.index_map[1] = 1
-
-        # WHEN: Calling goto_slide
-        doc.goto_slide(1)
-
-        # THEN: next_step() should be call to try to advance to the next effect.
-        self.assertTrue(doc.next_step.called, 'next_step() should have been called!')
-
-    def test_blank_screen(self):
-        """
-        Test that blank_screen works as expected
-        """
-        # GIVEN: A Document with mocked controller, presentation, and mocked function get_slide_number
-        doc = PowerpointDocument(self.mock_controller, self.mock_presentation)
-        doc.presentation = MagicMock()
-        doc.presentation.SlideShowWindow.View.GetClickIndex.return_value = 3
-        doc.presentation.Application.Version = 14.0
-        doc.get_slide_number = MagicMock()
-        doc.get_slide_number.return_value = 2
-
-        # WHEN: Calling goto_slide
-        doc.blank_screen()
-
-        # THEN: The view state, doc.blank_slide and doc.blank_click should have new values
-        self.assertEquals(doc.presentation.SlideShowWindow.View.State, 3, 'The View State should be 3')
-        self.assertEquals(doc.blank_slide, 2, 'doc.blank_slide should be 2 because of the PowerPoint version')
-        self.assertEquals(doc.blank_click, 3, 'doc.blank_click should be 3 because of the PowerPoint version')
-
-    def test_unblank_screen(self):
-        """
-        Test that unblank_screen works as expected
-        """
-        # GIVEN: A Document with mocked controller, presentation, ScreenList, and mocked function get_slide_number
-        with patch('openlp.plugins.presentations.lib.powerpointcontroller.ScreenList') as mocked_screen_list:
-            mocked_screen_list_ret = MagicMock()
-            mocked_screen_list_ret.screen_list = [1]
-            mocked_screen_list.return_value = mocked_screen_list_ret
-            doc = PowerpointDocument(self.mock_controller, self.mock_presentation)
-            doc.presentation = MagicMock()
-            doc.presentation.SlideShowWindow.View.GetClickIndex.return_value = 3
-            doc.presentation.Application.Version = 14.0
-            doc.get_slide_number = MagicMock()
-            doc.get_slide_number.return_value = 2
-            doc.index_map[1] = 1
-            doc.blank_slide = 1
-            doc.blank_click = 1
-
-            # WHEN: Calling goto_slide
-            doc.unblank_screen()
-
-            # THEN: The view state have new value, and several function should have been called
-            self.assertEquals(doc.presentation.SlideShowWindow.View.State, 1, 'The View State should be 1')
-            self.assertEquals(doc.presentation.SlideShowWindow.Activate.called, True,
-                              'SlideShowWindow.Activate should have been called')
-            self.assertEquals(doc.presentation.SlideShowWindow.View.GotoSlide.called, True,
-                              'View.GotoSlide should have been called because of the PowerPoint version')
-            self.assertEquals(doc.presentation.SlideShowWindow.View.GotoClick.called, True,
-                              'View.GotoClick should have been called because of the PowerPoint version')
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection                                      #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2017 OpenLP Developers                                   #
+# --------------------------------------------------------------------------- #
+# This program is free software; you can redistribute it and/or modify it     #
+# under the terms of the GNU General Public License as published by the Free  #
+# Software Foundation; version 2 of the License.                              #
+#                                                                             #
+# This program is distributed in the hope that it will be useful, but WITHOUT #
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or       #
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for    #
+# more details.                                                               #
+#                                                                             #
+# You should have received a copy of the GNU General Public License along     #
+# with this program; if not, write to the Free Software Foundation, Inc., 59  #
+# Temple Place, Suite 330, Boston, MA 02111-1307 USA                          #
+###############################################################################
+"""
+Functional tests to test the PowerPointController class and related methods.
+"""
+import os
+import shutil
+from unittest import TestCase
+from unittest.mock import patch, MagicMock
+from tempfile import mkdtemp
+
+from openlp.plugins.presentations.lib.powerpointcontroller import PowerpointController, PowerpointDocument,\
+    _get_text_from_shapes
+from openlp.core.common import is_win, Settings
+
+from tests.helpers.testmixin import TestMixin
+from tests.utils.constants import TEST_RESOURCES_PATH
+
+if is_win():
+    import pywintypes
+
+__default_settings__ = {
+    'presentations/powerpoint slide click advance': True
+}
+
+
+class TestPowerpointController(TestCase, TestMixin):
+    """
+    Test the PowerpointController Class
+    """
+
+    def setUp(self):
+        """
+        Set up the patches and mocks need for all tests.
+        """
+        self.setup_application()
+        self.build_settings()
+        self.mock_plugin = MagicMock()
+        self.temp_folder = mkdtemp()
+        self.mock_plugin.settings_section = self.temp_folder
+
+    def tearDown(self):
+        """
+        Stop the patches
+        """
+        self.destroy_settings()
+        shutil.rmtree(self.temp_folder)
+
+    def test_constructor(self):
+        """
+        Test the Constructor from the PowerpointController
+        """
+        # GIVEN: No presentation controller
+        controller = None
+
+        # WHEN: The presentation controller object is created
+        controller = PowerpointController(plugin=self.mock_plugin)
+
+        # THEN: The name of the presentation controller should be correct
+        self.assertEqual('Powerpoint', controller.name,
+                         'The name of the presentation controller should be correct')
+
+
+class TestPowerpointDocument(TestCase, TestMixin):
+    """
+    Test the PowerpointDocument Class
+    """
+
+    def setUp(self):
+        """
+        Set up the patches and mocks need for all tests.
+        """
+        self.setup_application()
+        self.build_settings()
+        self.mock_plugin = MagicMock()
+        self.temp_folder = mkdtemp()
+        self.mock_plugin.settings_section = self.temp_folder
+        self.powerpoint_document_stop_presentation_patcher = patch(
+            'openlp.plugins.presentations.lib.powerpointcontroller.PowerpointDocument.stop_presentation')
+        self.presentation_document_get_temp_folder_patcher = patch(
+            'openlp.plugins.presentations.lib.powerpointcontroller.PresentationDocument.get_temp_folder')
+        self.presentation_document_setup_patcher = patch(
+            'openlp.plugins.presentations.lib.powerpointcontroller.PresentationDocument._setup')
+        self.mock_powerpoint_document_stop_presentation = self.powerpoint_document_stop_presentation_patcher.start()
+        self.mock_presentation_document_get_temp_folder = self.presentation_document_get_temp_folder_patcher.start()
+        self.mock_presentation_document_setup = self.presentation_document_setup_patcher.start()
+        self.mock_controller = MagicMock()
+        self.mock_presentation = MagicMock()
+        self.mock_presentation_document_get_temp_folder.return_value = 'temp folder'
+        self.file_name = os.path.join(TEST_RESOURCES_PATH, 'presentations', 'test.pptx')
+        self.real_controller = PowerpointController(self.mock_plugin)
+        Settings().extend_default_settings(__default_settings__)
+
+    def tearDown(self):
+        """
+        Stop the patches
+        """
+        self.powerpoint_document_stop_presentation_patcher.stop()
+        self.presentation_document_get_temp_folder_patcher.stop()
+        self.presentation_document_setup_patcher.stop()
+        self.destroy_settings()
+        shutil.rmtree(self.temp_folder)
+
+    def test_show_error_msg(self):
+        """
+        Test the PowerpointDocument.show_error_msg() method gets called on com exception
+        """
+        if is_win():
+            # GIVEN: A PowerpointDocument with mocked controller and presentation
+            with patch('openlp.plugins.presentations.lib.powerpointcontroller.critical_error_message_box') as \
+                    mocked_critical_error_message_box:
+                instance = PowerpointDocument(self.mock_controller, self.mock_presentation)
+                instance.presentation = MagicMock()
+                instance.presentation.SlideShowWindow.View.GotoSlide = MagicMock(side_effect=pywintypes.com_error('1'))
+                instance.index_map[42] = 42
+
+                # WHEN: Calling goto_slide which will throw an exception
+                instance.goto_slide(42)
+
+                # THEN: mocked_critical_error_message_box should have been called
+                mocked_critical_error_message_box.assert_called_with('Error', 'An error occurred in the PowerPoint '
+                                                                     'integration and the presentation will be stopped.'
+                                                                     ' Restart the presentation if you wish to '
+                                                                     'present it.')
+
+    # add _test to the following if necessary
+    def verify_loading_document(self):
+        """
+        Test loading a document in PowerPoint
+        """
+        if is_win() and self.real_controller.check_available():
+            # GIVEN: A PowerpointDocument and a presentation
+            doc = PowerpointDocument(self.real_controller, self.file_name)
+
+            # WHEN: loading the filename
+            doc.load_presentation()
+            result = doc.is_loaded()
+
+            # THEN: result should be true
+            self.assertEqual(result, True, 'The result should be True')
+        else:
+            self.skipTest('Powerpoint not available, skipping test.')
+
+    def test_create_titles_and_notes(self):
+        """
+        Test creating the titles from PowerPoint
+        """
+        # GIVEN: mocked save_titles_and_notes, _get_text_from_shapes and two mocked slides
+        self.doc = PowerpointDocument(self.mock_controller, self.file_name)
+        self.doc.get_slide_count = MagicMock()
+        self.doc.get_slide_count.return_value = 2
+        self.doc.index_map = {1: 1, 2: 2}
+        self.doc.save_titles_and_notes = MagicMock()
+        self.doc._PowerpointDocument__get_text_from_shapes = MagicMock()
+        slide = MagicMock()
+        slide.Shapes.Title.TextFrame.TextRange.Text = 'SlideText'
+        pres = MagicMock()
+        pres.Slides = MagicMock(side_effect=[slide, slide])
+        self.doc.presentation = pres
+
+        # WHEN reading the titles and notes
+        self.doc.create_titles_and_notes()
+
+        # THEN the save should have been called exactly once with 2 titles and 2 notes
+        self.doc.save_titles_and_notes.assert_called_once_with(['SlideText\n', 'SlideText\n'], [' ', ' '])
+
+    def test_create_titles_and_notes_with_no_slides(self):
+        """
+        Test creating the titles from PowerPoint when it returns no slides
+        """
+        # GIVEN: mocked save_titles_and_notes, _get_text_from_shapes and two mocked slides
+        doc = PowerpointDocument(self.mock_controller, self.file_name)
+        doc.save_titles_and_notes = MagicMock()
+        doc._PowerpointDocument__get_text_from_shapes = MagicMock()
+        pres = MagicMock()
+        pres.Slides = []
+        doc.presentation = pres
+
+        # WHEN reading the titles and notes
+        doc.create_titles_and_notes()
+
+        # THEN the save should have been called exactly once with empty titles and notes
+        doc.save_titles_and_notes.assert_called_once_with([], [])
+
+    def test_get_text_from_shapes(self):
+        """
+        Test getting text from powerpoint shapes
+        """
+        # GIVEN: mocked shapes
+        shape = MagicMock()
+        shape.PlaceholderFormat.Type = 2
+        shape.HasTextFrame = shape.TextFrame.HasText = True
+        shape.TextFrame.TextRange.Text = 'slideText'
+        shapes = [shape, shape]
+
+        # WHEN: getting the text
+        result = _get_text_from_shapes(shapes)
+
+        # THEN: it should return the text
+        self.assertEqual(result, 'slideText\nslideText\n', 'result should match \'slideText\nslideText\n\'')
+
+    def test_get_text_from_shapes_with_no_shapes(self):
+        """
+        Test getting text from powerpoint shapes with no shapes
+        """
+        # GIVEN: empty shapes array
+        shapes = []
+
+        # WHEN: getting the text
+        result = _get_text_from_shapes(shapes)
+
+        # THEN: it should not fail but return empty string
+        self.assertEqual(result, '', 'result should be empty')
+
+    def test_goto_slide(self):
+        """
+        Test that goto_slide goes to next effect if the slide is already displayed
+        """
+        # GIVEN: A Document with mocked controller, presentation, and mocked functions get_slide_number and next_step
+        doc = PowerpointDocument(self.mock_controller, self.mock_presentation)
+        doc.presentation = MagicMock()
+        doc.presentation.SlideShowWindow.View.GetClickIndex.return_value = 1
+        doc.presentation.SlideShowWindow.View.GetClickCount.return_value = 2
+        doc.get_slide_number = MagicMock()
+        doc.get_slide_number.return_value = 1
+        doc.next_step = MagicMock()
+        doc.index_map[1] = 1
+
+        # WHEN: Calling goto_slide
+        doc.goto_slide(1)
+
+        # THEN: next_step() should be call to try to advance to the next effect.
+        self.assertTrue(doc.next_step.called, 'next_step() should have been called!')
+
+    def test_blank_screen(self):
+        """
+        Test that blank_screen works as expected
+        """
+        # GIVEN: A Document with mocked controller, presentation, and mocked function get_slide_number
+        doc = PowerpointDocument(self.mock_controller, self.mock_presentation)
+        doc.presentation = MagicMock()
+        doc.presentation.SlideShowWindow.View.GetClickIndex.return_value = 3
+        doc.presentation.Application.Version = 14.0
+        doc.get_slide_number = MagicMock()
+        doc.get_slide_number.return_value = 2
+
+        # WHEN: Calling goto_slide
+        doc.blank_screen()
+
+        # THEN: The view state, doc.blank_slide and doc.blank_click should have new values
+        self.assertEquals(doc.presentation.SlideShowWindow.View.State, 3, 'The View State should be 3')
+        self.assertEquals(doc.blank_slide, 2, 'doc.blank_slide should be 2 because of the PowerPoint version')
+        self.assertEquals(doc.blank_click, 3, 'doc.blank_click should be 3 because of the PowerPoint version')
+
+    def test_unblank_screen(self):
+        """
+        Test that unblank_screen works as expected
+        """
+        # GIVEN: A Document with mocked controller, presentation, ScreenList, and mocked function get_slide_number
+        with patch('openlp.plugins.presentations.lib.powerpointcontroller.ScreenList') as mocked_screen_list:
+            mocked_screen_list_ret = MagicMock()
+            mocked_screen_list_ret.screen_list = [1]
+            mocked_screen_list.return_value = mocked_screen_list_ret
+            doc = PowerpointDocument(self.mock_controller, self.mock_presentation)
+            doc.presentation = MagicMock()
+            doc.presentation.SlideShowWindow.View.GetClickIndex.return_value = 3
+            doc.presentation.Application.Version = 14.0
+            doc.get_slide_number = MagicMock()
+            doc.get_slide_number.return_value = 2
+            doc.index_map[1] = 1
+            doc.blank_slide = 1
+            doc.blank_click = 1
+
+            # WHEN: Calling goto_slide
+            doc.unblank_screen()
+
+            # THEN: The view state have new value, and several function should have been called
+            self.assertEquals(doc.presentation.SlideShowWindow.View.State, 1, 'The View State should be 1')
+            self.assertEquals(doc.presentation.SlideShowWindow.Activate.called, True,
+                              'SlideShowWindow.Activate should have been called')
+            self.assertEquals(doc.presentation.SlideShowWindow.View.GotoSlide.called, True,
+                              'View.GotoSlide should have been called because of the PowerPoint version')
+            self.assertEquals(doc.presentation.SlideShowWindow.View.GotoClick.called, True,
+                              'View.GotoClick should have been called because of the PowerPoint version')

=== modified file 'tests/functional/openlp_plugins/presentations/test_pptviewcontroller.py'
--- tests/functional/openlp_plugins/presentations/test_pptviewcontroller.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/presentations/test_pptviewcontroller.py	2017-04-27 04:37:45 +0000
@@ -24,17 +24,16 @@
 """
 import os
 import shutil
-
 from tempfile import mkdtemp
 from unittest import TestCase
-
-from tests.functional import MagicMock, patch
+from unittest.mock import MagicMock, patch
+
+from openlp.plugins.presentations.lib.pptviewcontroller import PptviewDocument, PptviewController
+from openlp.core.common import is_win
+
 from tests.helpers.testmixin import TestMixin
 from tests.utils.constants import TEST_RESOURCES_PATH
 
-from openlp.plugins.presentations.lib.pptviewcontroller import PptviewDocument, PptviewController
-from openlp.core.common import is_win
-
 if is_win():
     from ctypes import cdll
 

=== modified file 'tests/functional/openlp_plugins/presentations/test_presentationcontroller.py'
--- tests/functional/openlp_plugins/presentations/test_presentationcontroller.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/presentations/test_presentationcontroller.py	2017-04-27 04:37:45 +0000
@@ -23,10 +23,11 @@
 Functional tests to test the PresentationController and PresentationDocument
 classes and related methods.
 """
+import os
 from unittest import TestCase
-import os
+from unittest.mock import MagicMock, mock_open, patch
+
 from openlp.plugins.presentations.lib.presentationcontroller import PresentationController, PresentationDocument
-from tests.functional import MagicMock, mock_open, patch
 
 FOLDER_TO_PATCH = 'openlp.plugins.presentations.lib.presentationcontroller.PresentationDocument.get_thumbnail_folder'
 

=== modified file 'tests/functional/openlp_plugins/remotes/test_remotetab.py'
--- tests/functional/openlp_plugins/remotes/test_remotetab.py	2017-03-04 16:51:51 +0000
+++ tests/functional/openlp_plugins/remotes/test_remotetab.py	2017-04-27 04:37:45 +0000
@@ -25,13 +25,13 @@
 import os
 import re
 from unittest import TestCase
+from unittest.mock import patch
 
 from PyQt5 import QtWidgets
 
-
 from openlp.core.common import Settings
 from openlp.plugins.remotes.lib.remotetab import RemoteTab
-from tests.functional import patch
+
 from tests.helpers.testmixin import TestMixin
 
 __default_settings__ = {

=== modified file 'tests/functional/openlp_plugins/songs/test_editsongform.py'
--- tests/functional/openlp_plugins/songs/test_editsongform.py	2017-03-02 04:43:45 +0000
+++ tests/functional/openlp_plugins/songs/test_editsongform.py	2017-04-27 04:37:45 +0000
@@ -23,6 +23,7 @@
 This module contains tests for the lib submodule of the Songs plugin.
 """
 from unittest import TestCase
+from unittest.mock import patch, MagicMock
 
 from PyQt5 import QtCore
 
@@ -30,7 +31,7 @@
 from openlp.core.lib import ServiceItem
 from openlp.plugins.songs.forms.editsongform import EditSongForm
 from openlp.plugins.songs.lib.db import AuthorType
-from tests.functional import patch, MagicMock
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/functional/openlp_plugins/songs/test_editverseform.py'
--- tests/functional/openlp_plugins/songs/test_editverseform.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/songs/test_editverseform.py	2017-04-27 04:37:45 +0000
@@ -23,14 +23,12 @@
 This module contains tests for the editverseform of the Songs plugin.
 """
 from unittest import TestCase
-
-from PyQt5 import QtCore, QtWidgets
-
-from openlp.core.common import Registry, Settings
-from openlp.core.lib import ServiceItem
+from unittest.mock import MagicMock
+
+from PyQt5 import QtCore
+
 from openlp.plugins.songs.forms.editverseform import EditVerseForm
-from openlp.plugins.songs.lib.db import AuthorType
-from tests.functional import patch, MagicMock
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/functional/openlp_plugins/songs/test_ewimport.py'
--- tests/functional/openlp_plugins/songs/test_ewimport.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/songs/test_ewimport.py	2017-04-27 04:37:45 +0000
@@ -22,11 +22,9 @@
 """
 This module contains tests for the EasyWorship song importer.
 """
-
 import os
 from unittest import TestCase
-
-from tests.functional import MagicMock, patch
+from unittest.mock import MagicMock, patch
 
 from openlp.core.common import Registry
 from openlp.plugins.songs.lib.importers.easyworship import EasyWorshipSongImport, FieldDescEntry, FieldType

=== modified file 'tests/functional/openlp_plugins/songs/test_foilpresenterimport.py'
--- tests/functional/openlp_plugins/songs/test_foilpresenterimport.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/songs/test_foilpresenterimport.py	2017-04-27 04:37:45 +0000
@@ -22,10 +22,9 @@
 """
 This module contains tests for the SongShow Plus song importer.
 """
-
 import os
 from unittest import TestCase
-from tests.functional import patch, MagicMock
+from unittest.mock import patch, MagicMock
 
 from openlp.plugins.songs.lib.importers.foilpresenter import FoilPresenter
 

=== modified file 'tests/functional/openlp_plugins/songs/test_lib.py'
--- tests/functional/openlp_plugins/songs/test_lib.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/songs/test_lib.py	2017-04-27 04:37:45 +0000
@@ -23,10 +23,10 @@
 This module contains tests for the lib submodule of the Songs plugin.
 """
 from unittest import TestCase
+from unittest.mock import patch, MagicMock, PropertyMock
 
 from openlp.plugins.songs.lib import VerseType, clean_string, clean_title, strip_rtf
 from openlp.plugins.songs.lib.songcompare import songs_probably_equal, _remove_typos, _op_length
-from tests.functional import patch, MagicMock, PropertyMock
 
 
 class TestLib(TestCase):

=== modified file 'tests/functional/openlp_plugins/songs/test_lyriximport.py'
--- tests/functional/openlp_plugins/songs/test_lyriximport.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/songs/test_lyriximport.py	2017-04-27 04:37:45 +0000
@@ -21,14 +21,10 @@
 """
 This module contains tests for the LyriX song importer.
 """
-
 import os
-from unittest import TestCase
+from unittest.mock import patch
 
 from tests.helpers.songfileimport import SongImportTestHelper
-from openlp.plugins.songs.lib.importers.opensong import OpenSongImport
-from openlp.core.common import Registry
-from tests.functional import patch, MagicMock
 
 TEST_PATH = os.path.abspath(
     os.path.join(os.path.dirname(__file__), '..', '..', '..', 'resources', 'lyrixsongs'))

=== modified file 'tests/functional/openlp_plugins/songs/test_mediaitem.py'
--- tests/functional/openlp_plugins/songs/test_mediaitem.py	2017-01-08 19:12:12 +0000
+++ tests/functional/openlp_plugins/songs/test_mediaitem.py	2017-04-27 04:37:45 +0000
@@ -23,15 +23,15 @@
 This module contains tests for the lib submodule of the Songs plugin.
 """
 from unittest import TestCase
-from unittest.mock import call
+from unittest.mock import MagicMock, patch, call
 
 from PyQt5 import QtCore
 
 from openlp.core.common import Registry, Settings
 from openlp.core.lib import ServiceItem
+from openlp.plugins.songs.lib.db import AuthorType, Song
 from openlp.plugins.songs.lib.mediaitem import SongMediaItem
-from openlp.plugins.songs.lib.db import AuthorType, Song
-from tests.functional import patch, MagicMock
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/functional/openlp_plugins/songs/test_mediashout.py'
--- tests/functional/openlp_plugins/songs/test_mediashout.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/songs/test_mediashout.py	2017-04-27 04:37:45 +0000
@@ -22,8 +22,9 @@
 """
 Test the MediaShout importer
 """
+from collections import namedtuple
 from unittest import TestCase, skipUnless
-from collections import namedtuple
+from unittest.mock import MagicMock, patch, call
 
 from openlp.core.common import Registry
 try:
@@ -32,8 +33,6 @@
 except ImportError:
     CAN_RUN_TESTS = False
 
-from tests.functional import MagicMock, patch, call
-
 
 @skipUnless(CAN_RUN_TESTS, 'Not Windows, skipping test')
 class TestMediaShoutImport(TestCase):

=== modified file 'tests/functional/openlp_plugins/songs/test_openlpimporter.py'
--- tests/functional/openlp_plugins/songs/test_openlpimporter.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/songs/test_openlpimporter.py	2017-04-27 04:37:45 +0000
@@ -23,10 +23,10 @@
 This module contains tests for the OpenLP song importer.
 """
 from unittest import TestCase
+from unittest.mock import patch, MagicMock
 
+from openlp.core.common import Registry
 from openlp.plugins.songs.lib.importers.openlp import OpenLPSongImport
-from openlp.core.common import Registry
-from tests.functional import patch, MagicMock
 
 
 class TestOpenLPImport(TestCase):

=== modified file 'tests/functional/openlp_plugins/songs/test_openlyricsexport.py'
--- tests/functional/openlp_plugins/songs/test_openlyricsexport.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/songs/test_openlyricsexport.py	2017-04-27 04:37:45 +0000
@@ -22,17 +22,17 @@
 """
 This module contains tests for the OpenLyrics song importer.
 """
-
 import os
 import shutil
+from tempfile import mkdtemp
 from unittest import TestCase
-from tempfile import mkdtemp
+from unittest.mock import MagicMock, patch
 
-from tests.functional import MagicMock, patch
-from tests.helpers.testmixin import TestMixin
 from openlp.plugins.songs.lib.openlyricsexport import OpenLyricsExport
 from openlp.core.common import Registry
 
+from tests.helpers.testmixin import TestMixin
+
 
 class TestOpenLyricsExport(TestCase, TestMixin):
     """

=== modified file 'tests/functional/openlp_plugins/songs/test_openlyricsimport.py'
--- tests/functional/openlp_plugins/songs/test_openlyricsimport.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/songs/test_openlyricsimport.py	2017-04-27 04:37:45 +0000
@@ -22,19 +22,19 @@
 """
 This module contains tests for the OpenLyrics song importer.
 """
-
 import os
 import json
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
+
 from lxml import etree, objectify
 
-from tests.functional import MagicMock, patch
-from tests.helpers.testmixin import TestMixin
 from openlp.plugins.songs.lib.importers.openlyrics import OpenLyricsImport
 from openlp.plugins.songs.lib.importers.songimport import SongImport
 from openlp.plugins.songs.lib.openlyricsxml import OpenLyrics
 from openlp.core.common import Registry, Settings
 
+from tests.helpers.testmixin import TestMixin
 
 TEST_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__),
                                          '..', '..', '..', 'resources', 'openlyricssongs'))

=== modified file 'tests/functional/openlp_plugins/songs/test_openoffice.py'
--- tests/functional/openlp_plugins/songs/test_openoffice.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/songs/test_openoffice.py	2017-04-27 04:37:45 +0000
@@ -23,6 +23,7 @@
 This module contains tests for the OpenOffice/LibreOffice importer.
 """
 from unittest import TestCase, SkipTest
+from unittest.mock import MagicMock, patch
 
 from openlp.core.common import Registry
 try:
@@ -30,7 +31,6 @@
 except ImportError:
     raise SkipTest('Could not import OpenOfficeImport probably due to unavailability of uno')
 
-from tests.functional import MagicMock, patch
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/functional/openlp_plugins/songs/test_opensongimport.py'
--- tests/functional/openlp_plugins/songs/test_opensongimport.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/songs/test_opensongimport.py	2017-04-27 04:37:45 +0000
@@ -24,12 +24,12 @@
 """
 import os
 from unittest import TestCase
+from unittest.mock import patch, MagicMock
 
+from openlp.core.common import Registry
 from openlp.plugins.songs.lib.importers.opensong import OpenSongImport
-from openlp.core.common import Registry
 
 from tests.helpers.songfileimport import SongImportTestHelper
-from tests.functional import patch, MagicMock
 
 TEST_PATH = os.path.abspath(
     os.path.join(os.path.dirname(__file__), '..', '..', '..', 'resources', 'opensongsongs'))

=== modified file 'tests/functional/openlp_plugins/songs/test_opsproimport.py'
--- tests/functional/openlp_plugins/songs/test_opsproimport.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/songs/test_opsproimport.py	2017-04-27 04:37:45 +0000
@@ -25,6 +25,7 @@
 import os
 import json
 from unittest import TestCase, skipUnless
+from unittest.mock import patch, MagicMock
 
 try:
     from openlp.core.common import Registry
@@ -33,8 +34,6 @@
 except ImportError:
     CAN_RUN_TESTS = False
 
-from tests.functional import patch, MagicMock
-
 TEST_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..', 'resources', 'opsprosongs'))
 
 

=== modified file 'tests/functional/openlp_plugins/songs/test_songbeamerimport.py'
--- tests/functional/openlp_plugins/songs/test_songbeamerimport.py	2017-03-13 12:43:55 +0000
+++ tests/functional/openlp_plugins/songs/test_songbeamerimport.py	2017-04-27 04:37:45 +0000
@@ -22,15 +22,15 @@
 """
 This module contains tests for the Songbeamer song importer.
 """
-
 import os
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
-from tests.helpers.songfileimport import SongImportTestHelper
-from tests.functional import MagicMock, patch
 from openlp.plugins.songs.lib.importers.songbeamer import SongBeamerImport, SongBeamerTypes
 from openlp.core.common import Registry
 
+from tests.helpers.songfileimport import SongImportTestHelper
+
 TEST_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__),
                                          '..', '..', '..', 'resources', 'songbeamersongs'))
 

=== modified file 'tests/functional/openlp_plugins/songs/test_songshowplusimport.py'
--- tests/functional/openlp_plugins/songs/test_songshowplusimport.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/songs/test_songshowplusimport.py	2017-04-27 04:37:45 +0000
@@ -22,14 +22,14 @@
 """
 This module contains tests for the SongShow Plus song importer.
 """
-
 import os
 from unittest import TestCase
+from unittest.mock import patch, MagicMock
 
-from tests.helpers.songfileimport import SongImportTestHelper
 from openlp.plugins.songs.lib import VerseType
 from openlp.plugins.songs.lib.importers.songshowplus import SongShowPlusImport
-from tests.functional import patch, MagicMock
+
+from tests.helpers.songfileimport import SongImportTestHelper
 
 TEST_PATH = os.path.abspath(
     os.path.join(os.path.dirname(__file__), '..', '..', '..', 'resources', 'songshowplussongs'))

=== modified file 'tests/functional/openlp_plugins/songs/test_sundayplusimport.py'
--- tests/functional/openlp_plugins/songs/test_sundayplusimport.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/songs/test_sundayplusimport.py	2017-04-27 04:37:45 +0000
@@ -19,13 +19,12 @@
 # Temple Place, Suite 330, Boston, MA 02111-1307 USA                          #
 ###############################################################################
 """
-This module contains tests for the VideoPsalm song importer.
+This module contains tests for the SundayPlus song importer.
 """
-
 import os
+from unittest.mock import patch
 
 from tests.helpers.songfileimport import SongImportTestHelper
-from tests.functional import patch
 
 TEST_PATH = os.path.abspath(
     os.path.join(os.path.dirname(__file__), '..', '..', '..', 'resources', 'sundayplussongs'))

=== modified file 'tests/functional/openlp_plugins/songs/test_worshipcenterproimport.py'
--- tests/functional/openlp_plugins/songs/test_worshipcenterproimport.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/songs/test_worshipcenterproimport.py	2017-04-27 04:37:45 +0000
@@ -23,6 +23,7 @@
 This module contains tests for the WorshipCenter Pro song importer.
 """
 from unittest import TestCase, skipUnless
+from unittest.mock import patch, MagicMock
 
 try:
     import pyodbc
@@ -33,9 +34,6 @@
     CAN_RUN_TESTS = False
 
 
-from tests.functional import patch, MagicMock
-
-
 class TestRecord(object):
     """
     Microsoft Access Driver is not available on non Microsoft Systems for this reason the :class:`TestRecord` is used

=== modified file 'tests/functional/openlp_plugins/songs/test_zionworximport.py'
--- tests/functional/openlp_plugins/songs/test_zionworximport.py	2016-12-31 11:01:36 +0000
+++ tests/functional/openlp_plugins/songs/test_zionworximport.py	2017-04-27 04:37:45 +0000
@@ -23,15 +23,15 @@
 This module contains tests for the ZionWorx song importer.
 """
 import os
-
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
-from tests.functional import MagicMock, patch
-from tests.helpers.songfileimport import SongImportTestHelper
 from openlp.plugins.songs.lib.importers.zionworx import ZionWorxImport
 from openlp.plugins.songs.lib.importers.songimport import SongImport
 from openlp.core.common import Registry
 
+from tests.helpers.songfileimport import SongImportTestHelper
+
 TEST_PATH = os.path.abspath(
     os.path.join(os.path.dirname(__file__), '..', '..', '..', 'resources', 'zionworxsongs'))
 

=== modified file 'tests/functional/test_init.py'
--- tests/functional/test_init.py	2016-12-31 11:01:36 +0000
+++ tests/functional/test_init.py	2017-04-27 04:37:45 +0000
@@ -24,6 +24,7 @@
 """
 import os
 from unittest import TestCase
+from unittest.mock import MagicMock, patch, call
 
 from PyQt5 import QtCore, QtWidgets
 
@@ -31,7 +32,6 @@
 from openlp.core.common import Settings
 
 from tests.helpers.testmixin import TestMixin
-from tests.functional import MagicMock, patch, call
 
 TEST_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'resources'))
 

=== modified file 'tests/helpers/songfileimport.py'
--- tests/helpers/songfileimport.py	2016-12-31 11:01:36 +0000
+++ tests/helpers/songfileimport.py	2017-04-27 04:37:45 +0000
@@ -26,11 +26,10 @@
 import json
 import logging
 from unittest import TestCase
+from unittest.mock import MagicMock, patch, call
 
+from openlp.core.common import Registry
 from openlp.plugins.songs.lib.importers.opensong import OpenSongImport
-from openlp.core.common import Registry
-
-from tests.functional import patch, MagicMock, call
 
 log = logging.getLogger(__name__)
 

=== modified file 'tests/interfaces/openlp_core_lib/test_pluginmanager.py'
--- tests/interfaces/openlp_core_lib/test_pluginmanager.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_core_lib/test_pluginmanager.py	2017-04-27 04:37:45 +0000
@@ -27,12 +27,13 @@
 import gc
 from tempfile import mkdtemp
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from PyQt5 import QtWidgets
 
 from openlp.core.common import Registry, Settings
 from openlp.core.lib.pluginmanager import PluginManager
-from tests.interfaces import MagicMock, patch
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/interfaces/openlp_core_ui/test_filerenamedialog.py'
--- tests/interfaces/openlp_core_ui/test_filerenamedialog.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_core_ui/test_filerenamedialog.py	2017-04-27 04:37:45 +0000
@@ -23,12 +23,13 @@
     Package to test the openlp.core.ui package.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from PyQt5 import QtTest, QtWidgets
 
 from openlp.core.common import Registry
 from openlp.core.ui import filerenameform
-from tests.interfaces import MagicMock, patch
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/interfaces/openlp_core_ui/test_mainwindow.py'
--- tests/interfaces/openlp_core_ui/test_mainwindow.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_core_ui/test_mainwindow.py	2017-04-27 04:37:45 +0000
@@ -23,11 +23,11 @@
 Package to test the openlp.core.ui.mainwindow package.
 """
 from unittest import TestCase
-
+from unittest.mock import MagicMock, patch
 
 from openlp.core.common import Registry
 from openlp.core.ui.mainwindow import MainWindow
-from tests.interfaces import MagicMock, patch
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/interfaces/openlp_core_ui/test_projectoreditform.py'
--- tests/interfaces/openlp_core_ui/test_projectoreditform.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_core_ui/test_projectoreditform.py	2017-04-27 04:37:45 +0000
@@ -25,12 +25,12 @@
 """
 import os
 from unittest import TestCase
+from unittest.mock import patch
 
 from openlp.core.common import Registry
 from openlp.core.lib.projector.db import Projector, ProjectorDB
 from openlp.core.ui import ProjectorEditForm
 
-from tests.functional import patch
 from tests.helpers.testmixin import TestMixin
 from tests.resources.projector.data import TEST_DB, TEST1_DATA, TEST2_DATA
 

=== modified file 'tests/interfaces/openlp_core_ui/test_projectormanager.py'
--- tests/interfaces/openlp_core_ui/test_projectormanager.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_core_ui/test_projectormanager.py	2017-04-27 04:37:45 +0000
@@ -24,14 +24,13 @@
 """
 import os
 from unittest import TestCase
+from unittest.mock import patch, MagicMock
 
 from openlp.core.common import Registry, Settings
-from tests.functional import patch, MagicMock
-from tests.helpers.testmixin import TestMixin
-
 from openlp.core.ui import ProjectorManager, ProjectorEditForm
 from openlp.core.lib.projector.db import Projector, ProjectorDB
 
+from tests.helpers.testmixin import TestMixin
 from tests.resources.projector.data import TEST_DB, TEST1_DATA, TEST2_DATA, TEST3_DATA
 
 

=== modified file 'tests/interfaces/openlp_core_ui/test_projectorsourceform.py'
--- tests/interfaces/openlp_core_ui/test_projectorsourceform.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_core_ui/test_projectorsourceform.py	2017-04-27 04:37:45 +0000
@@ -24,24 +24,21 @@
 
 Tests for the Projector Source Select form.
 """
-import logging
-log = logging.getLogger(__name__)
-log.debug('test_projectorsourceform loaded')
 import os
 import time
 from unittest import TestCase
+from unittest.mock import patch
 
 from PyQt5.QtWidgets import QDialog
 
-from tests.functional import patch
-from tests.helpers.testmixin import TestMixin
-from tests.resources.projector.data import TEST_DB, TEST1_DATA
-
 from openlp.core.common import Registry, Settings
 from openlp.core.lib.projector.db import ProjectorDB, Projector
 from openlp.core.lib.projector.constants import PJLINK_DEFAULT_CODES, PJLINK_DEFAULT_SOURCES
 from openlp.core.ui.projector.sourceselectform import source_group, SourceSelectSingle
 
+from tests.helpers.testmixin import TestMixin
+from tests.resources.projector.data import TEST_DB, TEST1_DATA
+
 
 def build_source_dict():
     """

=== modified file 'tests/interfaces/openlp_core_ui/test_servicemanager.py'
--- tests/interfaces/openlp_core_ui/test_servicemanager.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_core_ui/test_servicemanager.py	2017-04-27 04:37:45 +0000
@@ -22,13 +22,13 @@
 """
     Package to test the openlp.core.lib package.
 """
-
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from openlp.core.common import Registry
 from openlp.core.lib import ScreenList, ServiceItem, ItemCapabilities
 from openlp.core.ui.mainwindow import MainWindow
-from tests.interfaces import MagicMock, patch
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/interfaces/openlp_core_ui/test_servicenotedialog.py'
--- tests/interfaces/openlp_core_ui/test_servicenotedialog.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_core_ui/test_servicenotedialog.py	2017-04-27 04:37:45 +0000
@@ -23,12 +23,13 @@
 Package to test the openlp.core.ui package.
 """
 from unittest import TestCase
+from unittest.mock import patch
 
 from PyQt5 import QtCore, QtTest, QtWidgets
 
 from openlp.core.common import Registry
 from openlp.core.ui import servicenoteform
-from tests.interfaces import patch
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/interfaces/openlp_core_ui/test_settings_form.py'
--- tests/interfaces/openlp_core_ui/test_settings_form.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_core_ui/test_settings_form.py	2017-04-27 04:37:45 +0000
@@ -23,13 +23,14 @@
 Package to test the openlp.core.lib.settingsform package.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from PyQt5 import QtCore, QtTest
 
 from openlp.core.common import Registry
 from openlp.core.ui import settingsform
 from openlp.core.lib import ScreenList
-from tests.interfaces import MagicMock, patch
+
 from tests.helpers.testmixin import TestMixin
 
 SCREEN = {

=== modified file 'tests/interfaces/openlp_core_ui/test_shortcutlistform.py'
--- tests/interfaces/openlp_core_ui/test_shortcutlistform.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_core_ui/test_shortcutlistform.py	2017-04-27 04:37:45 +0000
@@ -23,13 +23,13 @@
 Package to test the openlp.core.ui.shortcutform package.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from PyQt5 import QtCore, QtGui, QtWidgets
 
 from openlp.core.common import Registry
 from openlp.core.ui.shortcutlistform import ShortcutListForm
 
-from tests.interfaces import MagicMock, patch
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/interfaces/openlp_core_ui/test_starttimedialog.py'
--- tests/interfaces/openlp_core_ui/test_starttimedialog.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_core_ui/test_starttimedialog.py	2017-04-27 04:37:45 +0000
@@ -23,12 +23,13 @@
 Package to test the openlp.core.ui package.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from PyQt5 import QtCore, QtTest, QtWidgets
 
 from openlp.core.common import Registry
 from openlp.core.ui import starttimeform
-from tests.interfaces import MagicMock, patch
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/interfaces/openlp_core_ui/test_thememanager.py'
--- tests/interfaces/openlp_core_ui/test_thememanager.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_core_ui/test_thememanager.py	2017-04-27 04:37:45 +0000
@@ -23,10 +23,11 @@
 Interface tests to test the themeManager class and related methods.
 """
 from unittest import TestCase
+from unittest.mock import patch, MagicMock
 
 from openlp.core.common import Registry, Settings
 from openlp.core.ui import ThemeManager, ThemeForm, FileRenameForm
-from tests.functional import patch, MagicMock
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/interfaces/openlp_core_ui_lib/test_listpreviewwidget.py'
--- tests/interfaces/openlp_core_ui_lib/test_listpreviewwidget.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_core_ui_lib/test_listpreviewwidget.py	2017-04-27 04:37:45 +0000
@@ -22,15 +22,15 @@
 """
     Package to test the openlp.core.ui.lib.listpreviewwidget.
 """
-
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from PyQt5 import QtGui, QtWidgets
 
 from openlp.core.common import Registry
 from openlp.core.lib import ServiceItem
 from openlp.core.ui.lib import ListWidgetWithDnD, ListPreviewWidget
-from tests.interfaces import MagicMock, patch
+
 from tests.utils.osdinteraction import read_service_from_file
 from tests.helpers.testmixin import TestMixin
 

=== modified file 'tests/interfaces/openlp_plugins/bibles/test_lib_http.py'
--- tests/interfaces/openlp_plugins/bibles/test_lib_http.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_plugins/bibles/test_lib_http.py	2017-04-27 04:37:45 +0000
@@ -23,10 +23,10 @@
     Package to test the openlp.plugin.bible.lib.https package.
 """
 from unittest import TestCase, skip
+from unittest.mock import MagicMock
 
 from openlp.core.common import Registry
 from openlp.plugins.bibles.lib.importers.http import BGExtract, CWExtract, BSExtract
-from tests.interfaces import MagicMock
 
 
 class TestBibleHTTP(TestCase):

=== modified file 'tests/interfaces/openlp_plugins/bibles/test_lib_manager.py'
--- tests/interfaces/openlp_plugins/bibles/test_lib_manager.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_plugins/bibles/test_lib_manager.py	2017-04-27 04:37:45 +0000
@@ -23,10 +23,10 @@
 Functional tests to test the Bible Manager class and related methods.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from openlp.core.common import Registry, Settings
 from openlp.plugins.bibles.lib import BibleManager, LanguageSelection
-from tests.interfaces import MagicMock, patch
 
 from tests.utils.constants import TEST_RESOURCES_PATH
 from tests.helpers.testmixin import TestMixin

=== modified file 'tests/interfaces/openlp_plugins/bibles/test_lib_parse_reference.py'
--- tests/interfaces/openlp_plugins/bibles/test_lib_parse_reference.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_plugins/bibles/test_lib_parse_reference.py	2017-04-27 04:37:45 +0000
@@ -23,7 +23,7 @@
 This module contains tests for the lib submodule of the Bibles plugin.
 """
 from unittest import TestCase
-from tests.interfaces import MagicMock, patch
+from unittest.mock import MagicMock, patch
 
 from openlp.core.common import Registry, Settings
 from openlp.plugins.bibles.lib import BibleManager, parse_reference, LanguageSelection

=== modified file 'tests/interfaces/openlp_plugins/custom/forms/test_customform.py'
--- tests/interfaces/openlp_plugins/custom/forms/test_customform.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_plugins/custom/forms/test_customform.py	2017-04-27 04:37:45 +0000
@@ -23,14 +23,14 @@
 Module to test the EditCustomForm.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from PyQt5 import QtTest, QtCore, QtWidgets
 
 from openlp.core.common import Registry
-# TODO: FIXME: Import needed due to horrible bad imports
 from openlp.plugins.custom.lib.mediaitem import CustomMediaItem
 from openlp.plugins.custom.forms.editcustomform import EditCustomForm
-from tests.interfaces import MagicMock, patch
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/interfaces/openlp_plugins/custom/forms/test_customslideform.py'
--- tests/interfaces/openlp_plugins/custom/forms/test_customslideform.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_plugins/custom/forms/test_customslideform.py	2017-04-27 04:37:45 +0000
@@ -23,12 +23,13 @@
 Module to test the EditCustomSlideForm.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock, patch
 
 from PyQt5 import QtWidgets
 
 from openlp.core.common import Registry
 from openlp.plugins.custom.forms.editcustomslideform import EditCustomSlideForm
-from tests.interfaces import MagicMock, patch
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/interfaces/openlp_plugins/media/forms/test_mediaclipselectorform.py'
--- tests/interfaces/openlp_plugins/media/forms/test_mediaclipselectorform.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_plugins/media/forms/test_mediaclipselectorform.py	2017-04-27 04:37:45 +0000
@@ -22,9 +22,10 @@
 """
 Module to test the MediaClipSelectorForm.
 """
-
 import os
 from unittest import TestCase, SkipTest
+from unittest.mock import MagicMock, patch
+
 from openlp.core.ui.media.vlcplayer import get_vlc
 
 if os.name == 'nt' and not get_vlc():
@@ -34,7 +35,7 @@
 
 from openlp.core.common import Registry
 from openlp.plugins.media.forms.mediaclipselectorform import MediaClipSelectorForm
-from tests.interfaces import MagicMock, patch
+
 from tests.helpers.testmixin import TestMixin
 
 

=== modified file 'tests/interfaces/openlp_plugins/songs/forms/test_editsongform.py'
--- tests/interfaces/openlp_plugins/songs/forms/test_editsongform.py	2016-12-31 11:01:36 +0000
+++ tests/interfaces/openlp_plugins/songs/forms/test_editsongform.py	2017-04-27 04:37:45 +0000
@@ -23,13 +23,14 @@
 Package to test the openlp.plugins.songs.forms.editsongform package.
 """
 from unittest import TestCase
+from unittest.mock import MagicMock
 
 from PyQt5 import QtWidgets
 
 from openlp.core.common import Registry
 from openlp.core.common.uistrings import UiStrings
 from openlp.plugins.songs.forms.editsongform import EditSongForm
-from tests.interfaces import MagicMock
+
 from tests.helpers.testmixin import TestMixin
 
 


Follow ups