openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #29026
[Merge] lp:~trb143/openlp/refactor26 into lp:openlp
Tim Bentley has proposed merging lp:~trb143/openlp/refactor26 into lp:openlp.
Requested reviews:
OpenLP Core (openlp-core)
For more details, see:
https://code.launchpad.net/~trb143/openlp/refactor26/+merge/290775
move moving around!
lp:~trb143/openlp/refactor26 (revision 2642)
[SUCCESS] https://ci.openlp.io/job/Branch-01-Pull/1368/
[SUCCESS] https://ci.openlp.io/job/Branch-02-Functional-Tests/1287/
[SUCCESS] https://ci.openlp.io/job/Branch-03-Interface-Tests/1226/
[SUCCESS] https://ci.openlp.io/job/Branch-04a-Windows_Functional_Tests/1058/
[SUCCESS] https://ci.openlp.io/job/Branch-04b-Windows_Interface_Tests/649/
[SUCCESS] https://ci.openlp.io/job/Branch-05a-Code_Analysis/716/
[SUCCESS] https://ci.openlp.io/job/Branch-05b-Test_Coverage/584/
--
Your team OpenLP Core is requested to review the proposed merge of lp:~trb143/openlp/refactor26 into lp:openlp.
=== modified file 'openlp/core/common/__init__.py'
--- openlp/core/common/__init__.py 2016-03-31 16:42:42 +0000
+++ openlp/core/common/__init__.py 2016-04-01 19:21:43 +0000
@@ -24,13 +24,12 @@
OpenLP work.
"""
import hashlib
+import logging
+import os
import re
-import os
-import logging
import sys
import traceback
from ipaddress import IPv4Address, IPv6Address, AddressValueError
-from codecs import decode, encode
from PyQt5 import QtCore
from PyQt5.QtCore import QCryptographicHash as QHash
@@ -241,6 +240,20 @@
from .uistrings import UiStrings
from .settings import Settings
from .applocation import AppLocation
-from .historycombobox import HistoryComboBox
from .actions import ActionList
from .languagemanager import LanguageManager
+
+
+def add_actions(target, actions):
+ """
+ Adds multiple actions to a menu or toolbar in one command.
+
+ :param target: The menu or toolbar to add actions to
+ :param actions: The actions to be added. An action consisting of the keyword ``None``
+ will result in a separator being inserted into the target.
+ """
+ for action in actions:
+ if action is None:
+ target.addSeparator()
+ else:
+ target.addAction(action)
=== removed file 'openlp/core/common/historycombobox.py'
--- openlp/core/common/historycombobox.py 2015-12-31 22:46:06 +0000
+++ openlp/core/common/historycombobox.py 1970-01-01 00:00:00 +0000
@@ -1,84 +0,0 @@
-# -*- coding: utf-8 -*-
-# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
-
-###############################################################################
-# OpenLP - Open Source Lyrics Projection #
-# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2016 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 #
-###############################################################################
-"""
-The :mod:`~openlp.core.common.historycombobox` module contains the HistoryComboBox widget
-"""
-
-from PyQt5 import QtCore, QtWidgets
-
-
-class HistoryComboBox(QtWidgets.QComboBox):
- """
- The :class:`~openlp.core.common.historycombobox.HistoryComboBox` widget emulates the QLineEdit ``returnPressed``
- signal for when the :kbd:`Enter` or :kbd:`Return` keys are pressed, and saves anything that is typed into the edit
- box into its list.
- """
- returnPressed = QtCore.pyqtSignal()
-
- def __init__(self, parent=None):
- """
- Initialise the combo box, setting duplicates to False and the insert policy to insert items at the top.
-
- :param parent: The parent widget
- """
- super().__init__(parent)
- self.setDuplicatesEnabled(False)
- self.setEditable(True)
- self.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
- self.setInsertPolicy(QtWidgets.QComboBox.InsertAtTop)
-
- def keyPressEvent(self, event):
- """
- Override the inherited keyPressEvent method to emit the ``returnPressed`` signal and to save the current text to
- the dropdown list.
-
- :param event: The keyboard event
- """
- # Handle Enter and Return ourselves
- if event.key() == QtCore.Qt.Key_Enter or event.key() == QtCore.Qt.Key_Return:
- # Emit the returnPressed signal
- self.returnPressed.emit()
- # Save the current text to the dropdown list
- if self.currentText() and self.findText(self.currentText()) == -1:
- self.insertItem(0, self.currentText())
- # Let the parent handle any keypress events
- super().keyPressEvent(event)
-
- def focusOutEvent(self, event):
- """
- Override the inherited focusOutEvent to save the current text to the dropdown list.
-
- :param event: The focus event
- """
- # Save the current text to the dropdown list
- if self.currentText() and self.findText(self.currentText()) == -1:
- self.insertItem(0, self.currentText())
- # Let the parent handle any keypress events
- super().focusOutEvent(event)
-
- def getItems(self):
- """
- Get all the items from the history
-
- :return: A list of strings
- """
- return [self.itemText(i) for i in range(self.count())]
=== added directory 'openlp/core/ui/lib'
=== added file 'openlp/core/ui/lib/__init__.py'
--- openlp/core/ui/lib/__init__.py 1970-01-01 00:00:00 +0000
+++ openlp/core/ui/lib/__init__.py 2016-04-01 19:21:43 +0000
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2016 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 #
+###############################################################################
=== added file 'openlp/core/ui/lib/historycombobox.py'
--- openlp/core/ui/lib/historycombobox.py 1970-01-01 00:00:00 +0000
+++ openlp/core/ui/lib/historycombobox.py 2016-04-01 19:21:43 +0000
@@ -0,0 +1,84 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2016 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 #
+###############################################################################
+"""
+The :mod:`~openlp.core.ui.lib.historycombobox` module contains the HistoryComboBox widget
+"""
+
+from PyQt5 import QtCore, QtWidgets
+
+
+class HistoryComboBox(QtWidgets.QComboBox):
+ """
+ The :class:`~openlp.core.common.historycombobox.HistoryComboBox` widget emulates the QLineEdit ``returnPressed``
+ signal for when the :kbd:`Enter` or :kbd:`Return` keys are pressed, and saves anything that is typed into the edit
+ box into its list.
+ """
+ returnPressed = QtCore.pyqtSignal()
+
+ def __init__(self, parent=None):
+ """
+ Initialise the combo box, setting duplicates to False and the insert policy to insert items at the top.
+
+ :param parent: The parent widget
+ """
+ super().__init__(parent)
+ self.setDuplicatesEnabled(False)
+ self.setEditable(True)
+ self.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
+ self.setInsertPolicy(QtWidgets.QComboBox.InsertAtTop)
+
+ def keyPressEvent(self, event):
+ """
+ Override the inherited keyPressEvent method to emit the ``returnPressed`` signal and to save the current text to
+ the dropdown list.
+
+ :param event: The keyboard event
+ """
+ # Handle Enter and Return ourselves
+ if event.key() == QtCore.Qt.Key_Enter or event.key() == QtCore.Qt.Key_Return:
+ # Emit the returnPressed signal
+ self.returnPressed.emit()
+ # Save the current text to the dropdown list
+ if self.currentText() and self.findText(self.currentText()) == -1:
+ self.insertItem(0, self.currentText())
+ # Let the parent handle any keypress events
+ super().keyPressEvent(event)
+
+ def focusOutEvent(self, event):
+ """
+ Override the inherited focusOutEvent to save the current text to the dropdown list.
+
+ :param event: The focus event
+ """
+ # Save the current text to the dropdown list
+ if self.currentText() and self.findText(self.currentText()) == -1:
+ self.insertItem(0, self.currentText())
+ # Let the parent handle any keypress events
+ super().focusOutEvent(event)
+
+ def getItems(self):
+ """
+ Get all the items from the history
+
+ :return: A list of strings
+ """
+ return [self.itemText(i) for i in range(self.count())]
=== modified file 'openlp/core/ui/mainwindow.py'
--- openlp/core/ui/mainwindow.py 2016-03-31 16:47:42 +0000
+++ openlp/core/ui/mainwindow.py 2016-04-01 19:21:43 +0000
@@ -35,7 +35,7 @@
from PyQt5 import QtCore, QtGui, QtWidgets
from openlp.core.common import Registry, RegistryProperties, AppLocation, LanguageManager, Settings, \
- check_directory_exists, translate, is_win, is_macosx
+ check_directory_exists, translate, is_win, is_macosx, add_actions
from openlp.core.common.actions import ActionList, CategoryOrder
from openlp.core.lib import Renderer, OpenLPDockWidget, PluginManager, ImageManager, PluginStatus, ScreenList, \
build_icon
@@ -46,7 +46,7 @@
from openlp.core.ui.media import MediaController
from openlp.core.ui.printserviceform import PrintServiceForm
from openlp.core.ui.projector.manager import ProjectorManager
-from openlp.core.utils import get_application_version, add_actions
+from openlp.core.utils import get_application_version
log = logging.getLogger(__name__)
=== modified file 'openlp/core/utils/__init__.py'
--- openlp/core/utils/__init__.py 2016-03-31 16:42:42 +0000
+++ openlp/core/utils/__init__.py 2016-04-01 19:21:43 +0000
@@ -267,21 +267,6 @@
return version_string
-def add_actions(target, actions):
- """
- Adds multiple actions to a menu or toolbar in one command.
-
- :param target: The menu or toolbar to add actions to
- :param actions: The actions to be added. An action consisting of the keyword ``None``
- will result in a separator being inserted into the target.
- """
- for action in actions:
- if action is None:
- target.addSeparator()
- else:
- target.addAction(action)
-
-
def get_filesystem_encoding():
"""
Returns the name of the encoding used to convert Unicode filenames into system file names.
@@ -450,7 +435,7 @@
def get_uno_command(connection_type='pipe'):
"""
- Returns the UNO command to launch an openoffice.org instance.
+ Returns the UNO command to launch an libreoffice.org instance.
"""
for command in ['libreoffice', 'soffice']:
if which(command):
@@ -468,7 +453,7 @@
def get_uno_instance(resolver, connection_type='pipe'):
"""
- Returns a running openoffice.org instance.
+ Returns a running libreoffice.org instance.
:param resolver: The UNO resolver to use to find a running instance.
"""
@@ -535,5 +520,5 @@
return key
__all__ = ['get_application_version', 'check_latest_version',
- 'add_actions', 'get_filesystem_encoding', 'get_web_page', 'get_uno_command', 'get_uno_instance',
+ 'get_filesystem_encoding', 'get_web_page', 'get_uno_command', 'get_uno_instance',
'delete_file', 'clean_filename', 'format_time', 'get_locale_key', 'get_natural_key']
=== modified file 'openlp/plugins/songs/forms/songselectdialog.py'
--- openlp/plugins/songs/forms/songselectdialog.py 2016-01-09 18:01:49 +0000
+++ openlp/plugins/songs/forms/songselectdialog.py 2016-04-01 19:21:43 +0000
@@ -25,7 +25,7 @@
from PyQt5 import QtCore, QtWidgets
-from openlp.core.common import HistoryComboBox
+from openlp.core.ui.lib.historycombobox import HistoryComboBox
from openlp.core.lib import translate, build_icon
from openlp.core.ui import SingleColumnTableWidget
=== added file 'tests/functional/openlp_core_common/test_init.py'
--- tests/functional/openlp_core_common/test_init.py 1970-01-01 00:00:00 +0000
+++ tests/functional/openlp_core_common/test_init.py 2016-04-01 19:21:43 +0000
@@ -0,0 +1,95 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2016 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 AppLocation class and related methods.
+"""
+import os
+from unittest import TestCase
+
+from openlp.core.common import add_actions
+from tests.functional import MagicMock, patch
+
+
+class TestInit(TestCase):
+ """
+ A test suite to test out various methods around the common __init__ class.
+ """
+
+ def add_actions_empty_list_test(self):
+ """
+ Test that no actions are added when the list is empty
+ """
+ # GIVEN: a mocked action list, and an empty list
+ mocked_target = MagicMock()
+ empty_list = []
+
+ # WHEN: The empty list is added to the mocked target
+ add_actions(mocked_target, empty_list)
+
+ # THEN: The add method on the mocked target is never called
+ self.assertEqual(0, mocked_target.addSeparator.call_count, 'addSeparator method should not have been called')
+ self.assertEqual(0, mocked_target.addAction.call_count, 'addAction method should not have been called')
+
+ def add_actions_none_action_test(self):
+ """
+ Test that a separator is added when a None action is in the list
+ """
+ # GIVEN: a mocked action list, and a list with None in it
+ mocked_target = MagicMock()
+ separator_list = [None]
+
+ # WHEN: The list is added to the mocked target
+ add_actions(mocked_target, separator_list)
+
+ # THEN: The addSeparator method is called, but the addAction method is never called
+ mocked_target.addSeparator.assert_called_with()
+ self.assertEqual(0, mocked_target.addAction.call_count, 'addAction method should not have been called')
+
+ def add_actions_add_action_test(self):
+ """
+ Test that an action is added when a valid action is in the list
+ """
+ # GIVEN: a mocked action list, and a list with an action in it
+ mocked_target = MagicMock()
+ action_list = ['action']
+
+ # WHEN: The list is added to the mocked target
+ add_actions(mocked_target, action_list)
+
+ # THEN: The addSeparator method is not called, and the addAction method is called
+ self.assertEqual(0, mocked_target.addSeparator.call_count, 'addSeparator method should not have been called')
+ mocked_target.addAction.assert_called_with('action')
+
+ def add_actions_action_and_none_test(self):
+ """
+ Test that an action and a separator are added when a valid action and None are in the list
+ """
+ # GIVEN: a mocked action list, and a list with an action and None in it
+ mocked_target = MagicMock()
+ action_list = ['action', None]
+
+ # WHEN: The list is added to the mocked target
+ add_actions(mocked_target, action_list)
+
+ # THEN: The addSeparator method is called, and the addAction method is called
+ mocked_target.addSeparator.assert_called_with()
+ mocked_target.addAction.assert_called_with('action')
=== modified file 'tests/functional/openlp_core_utils/test_utils.py'
--- tests/functional/openlp_core_utils/test_utils.py 2016-03-31 16:56:32 +0000
+++ tests/functional/openlp_core_utils/test_utils.py 2016-04-01 19:21:43 +0000
@@ -26,7 +26,8 @@
from unittest import TestCase
from openlp.core.utils import clean_filename, delete_file, get_filesystem_encoding, get_locale_key, \
- get_natural_key, split_filename, _get_user_agent, get_web_page, get_uno_instance, add_actions
+ get_natural_key, split_filename, _get_user_agent, get_web_page, get_uno_instance
+
from tests.functional import MagicMock, patch
@@ -34,65 +35,6 @@
"""
A test suite to test out various methods around the AppLocation class.
"""
- def add_actions_empty_list_test(self):
- """
- Test that no actions are added when the list is empty
- """
- # GIVEN: a mocked action list, and an empty list
- mocked_target = MagicMock()
- empty_list = []
-
- # WHEN: The empty list is added to the mocked target
- add_actions(mocked_target, empty_list)
-
- # THEN: The add method on the mocked target is never called
- self.assertEqual(0, mocked_target.addSeparator.call_count, 'addSeparator method should not have been called')
- self.assertEqual(0, mocked_target.addAction.call_count, 'addAction method should not have been called')
-
- def add_actions_none_action_test(self):
- """
- Test that a separator is added when a None action is in the list
- """
- # GIVEN: a mocked action list, and a list with None in it
- mocked_target = MagicMock()
- separator_list = [None]
-
- # WHEN: The list is added to the mocked target
- add_actions(mocked_target, separator_list)
-
- # THEN: The addSeparator method is called, but the addAction method is never called
- mocked_target.addSeparator.assert_called_with()
- self.assertEqual(0, mocked_target.addAction.call_count, 'addAction method should not have been called')
-
- def add_actions_add_action_test(self):
- """
- Test that an action is added when a valid action is in the list
- """
- # GIVEN: a mocked action list, and a list with an action in it
- mocked_target = MagicMock()
- action_list = ['action']
-
- # WHEN: The list is added to the mocked target
- add_actions(mocked_target, action_list)
-
- # THEN: The addSeparator method is not called, and the addAction method is called
- self.assertEqual(0, mocked_target.addSeparator.call_count, 'addSeparator method should not have been called')
- mocked_target.addAction.assert_called_with('action')
-
- def add_actions_action_and_none_test(self):
- """
- Test that an action and a separator are added when a valid action and None are in the list
- """
- # GIVEN: a mocked action list, and a list with an action and None in it
- mocked_target = MagicMock()
- action_list = ['action', None]
-
- # WHEN: The list is added to the mocked target
- add_actions(mocked_target, action_list)
-
- # THEN: The addSeparator method is called, and the addAction method is called
- mocked_target.addSeparator.assert_called_with()
- mocked_target.addAction.assert_called_with('action')
def get_filesystem_encoding_sys_function_not_called_test(self):
"""
=== removed file 'tests/interfaces/openlp_core_common/test_historycombobox.py'
--- tests/interfaces/openlp_core_common/test_historycombobox.py 2015-12-31 22:46:06 +0000
+++ tests/interfaces/openlp_core_common/test_historycombobox.py 1970-01-01 00:00:00 +0000
@@ -1,65 +0,0 @@
-# -*- coding: utf-8 -*-
-# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
-
-###############################################################################
-# OpenLP - Open Source Lyrics Projection #
-# --------------------------------------------------------------------------- #
-# Copyright (c) 2008-2016 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 #
-###############################################################################
-"""
-Module to test the :mod:`~openlp.core.common.historycombobox` module.
-"""
-
-from unittest import TestCase
-
-from PyQt5 import QtWidgets
-
-from openlp.core.common import Registry
-from openlp.core.common import HistoryComboBox
-from tests.helpers.testmixin import TestMixin
-from tests.interfaces import MagicMock, patch
-
-
-class TestHistoryComboBox(TestCase, TestMixin):
- def setUp(self):
- """
- Some pre-test setup required.
- """
- Registry.create()
- self.setup_application()
- self.main_window = QtWidgets.QMainWindow()
- Registry().register('main_window', self.main_window)
- self.combo = HistoryComboBox(self.main_window)
-
- def tearDown(self):
- """
- Delete all the C++ objects at the end so that we don't have a segfault
- """
- del self.combo
- del self.main_window
-
- def get_items_test(self):
- """
- Test the getItems() method
- """
- # GIVEN: The combo.
-
- # WHEN: Add two items.
- self.combo.addItem('test1')
- self.combo.addItem('test2')
-
- # THEN: The list of items should contain both strings.
- self.assertEqual(self.combo.getItems(), ['test1', 'test2'])
=== added directory 'tests/interfaces/openlp_core_ui_lib'
=== added file 'tests/interfaces/openlp_core_ui_lib/__init__.py'
--- tests/interfaces/openlp_core_ui_lib/__init__.py 1970-01-01 00:00:00 +0000
+++ tests/interfaces/openlp_core_ui_lib/__init__.py 2016-04-01 19:21:43 +0000
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2016 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 #
+###############################################################################
=== added file 'tests/interfaces/openlp_core_ui_lib/test_historycombobox.py'
--- tests/interfaces/openlp_core_ui_lib/test_historycombobox.py 1970-01-01 00:00:00 +0000
+++ tests/interfaces/openlp_core_ui_lib/test_historycombobox.py 2016-04-01 19:21:43 +0000
@@ -0,0 +1,64 @@
+# -*- coding: utf-8 -*-
+# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
+
+###############################################################################
+# OpenLP - Open Source Lyrics Projection #
+# --------------------------------------------------------------------------- #
+# Copyright (c) 2008-2016 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 #
+###############################################################################
+"""
+Module to test the :mod:`~openlp.core.common.historycombobox` module.
+"""
+
+from unittest import TestCase
+
+from PyQt5 import QtWidgets
+
+from openlp.core.common import Registry
+from openlp.core.ui.lib.historycombobox import HistoryComboBox
+from tests.helpers.testmixin import TestMixin
+
+
+class TestHistoryComboBox(TestCase, TestMixin):
+ def setUp(self):
+ """
+ Some pre-test setup required.
+ """
+ Registry.create()
+ self.setup_application()
+ self.main_window = QtWidgets.QMainWindow()
+ Registry().register('main_window', self.main_window)
+ self.combo = HistoryComboBox(self.main_window)
+
+ def tearDown(self):
+ """
+ Delete all the C++ objects at the end so that we don't have a segfault
+ """
+ del self.combo
+ del self.main_window
+
+ def get_items_test(self):
+ """
+ Test the getItems() method
+ """
+ # GIVEN: The combo.
+
+ # WHEN: Add two items.
+ self.combo.addItem('test1')
+ self.combo.addItem('test2')
+
+ # THEN: The list of items should contain both strings.
+ self.assertEqual(self.combo.getItems(), ['test1', 'test2'])
Follow ups